<?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>32052</bug_id>
          
          <creation_ts>2009-12-01 21:06:59 -0800</creation_ts>
          <short_desc>Implement HTML5 state object history API</short_desc>
          <delta_ts>2009-12-03 11:06:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32053</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>abarth</cc>
    
    <cc>ager</cc>
    
    <cc>antonm</cc>
    
    <cc>fishd</cc>
    
    <cc>sam</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>167861</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-01 21:06:59 -0800</bug_when>
    <thetext>HTML5 adds 2 new methods - replaceState() and pushState() - to the History object meant for more powerfully handling back/forward state in AJAX applications.

See http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#history for more details.

WebKit should support these.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167862</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-01 21:07:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/7214236&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168066</commentid>
    <comment_count>2</comment_count>
      <attachid>44161</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-02 10:58:48 -0800</bug_when>
    <thetext>Created attachment 44161
Fix + load of layout tests

Implements the PopStateEvent, pushState and replaceState, and combines scrolling to fragments with activating state entries into a &quot;load in same document&quot; concept.

Some edge cases are missing but should be handled separately - tracking that work in https://bugs.webkit.org/show_bug.cgi?id=32053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168068</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 11:00:15 -0800</bug_when>
    <thetext>Attachment 44161 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/loader/HistoryController.cpp:655:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/dom/Document.h:79:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/Document.h:80:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/Document.h:97:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/history/HistoryItem.cpp:402:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/loader/FrameLoader.cpp:3755:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168075</commentid>
    <comment_count>4</comment_count>
      <attachid>44163</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-02 11:08:52 -0800</bug_when>
    <thetext>Created attachment 44163
Same patch, removing a printf() I missed and fixing *some* of the style-guideline bot&apos;s qualms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168080</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 11:11:14 -0800</bug_when>
    <thetext>Attachment 44163 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/dom/Document.h:79:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/Document.h:80:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/Document.h:97:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/loader/FrameLoader.cpp:3755:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168211</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-02 16:34:13 -0800</bug_when>
    <thetext>Based on feedback from John Sullivan, I&apos;m going break the FrameLoaderClient call into 3 calls:

didPushStateWithinPageForFrame
didReplaceStateWithinPageForFrame
didPopStateWithinPageForFrame

That task is largely mechanical and a review on the current patch is still highly relevant in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168241</commentid>
    <comment_count>7</comment_count>
      <attachid>44163</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-12-02 19:37:53 -0800</bug_when>
    <thetext>Comment on attachment 44163
Same patch, removing a printf() I missed and fixing *some* of the style-guideline bot&apos;s qualms.

&gt; Index: WebCore/bindings/js/JSHistoryCustom.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/js/JSHistoryCustom.cpp	(revision 51545)
&gt; +++ WebCore/bindings/js/JSHistoryCustom.cpp	(working copy)
&gt; @@ -163,4 +163,52 @@ void JSHistory::getOwnPropertyNames(Exec
&gt;      Base::getOwnPropertyNames(exec, propertyNames);
&gt;  }
&gt;  
&gt; +JSValue JSHistory::pushState(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    PassRefPtr&lt;SerializedScriptValue&gt; historyState = SerializedScriptValue::create(exec, args.at(0));

This should be a RefPtr.


&gt; +JSValue JSHistory::replaceState(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    PassRefPtr&lt;SerializedScriptValue&gt; historyState = SerializedScriptValue::create(exec, args.at(0));

Here too.

&gt; +
&gt; +JSValue JSPopStateEvent::initPopStateEvent(ExecState* exec, const ArgList&amp; args)
&gt; +{
&gt; +    const UString&amp; typeArg = args.at(0).toString(exec);
&gt; +    bool canBubbleArg = args.at(1).toBoolean(exec);
&gt; +    bool cancelableArg = args.at(2).toBoolean(exec);
&gt; +    PassRefPtr&lt;SerializedScriptValue&gt; stateObjectArg = SerializedScriptValue::create(exec, args.at(3));

Here too.


&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + *
&gt; + */
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;PopStateEvent.h&quot;

Missing newline.

&gt; @@ -54,12 +55,16 @@ BackForwardList::~BackForwardList()
&gt;  
&gt;  void BackForwardList::addItem(PassRefPtr&lt;HistoryItem&gt; prpItem)
&gt;  {
&gt; +    insertItemAfterCurrent(prpItem, true);
&gt; +}
&gt; +void BackForwardList::insertItemAfterCurrent(PassRefPtr&lt;HistoryItem&gt; prpItem, bool removeForwardList)
&gt; +{

Missing newline.


&gt; +
&gt; +void HistoryItem::setDocument(Document* document)
&gt; +{
&gt; +    if (m_document == document)
&gt; +        return;
&gt; +    
&gt; +    if (m_document)
&gt; +        m_document-&gt;unregisterHistoryItem(this);40

40 eh?

&gt; +    if (document)
&gt; +        document-&gt;registerHistoryItem(this);
&gt; +        
&gt; +    m_document = document;
&gt; +    
&gt; +}

Extra newline.

&gt;      
&gt; +    void setStateObject(PassRefPtr&lt;SerializedScriptValue&gt; object);
&gt; +    SerializedScriptValue* stateObject() { return m_stateObject.get(); }

This should be const.

&gt; +    void setDocument(Document* document);
&gt; +    Document* document() { return m_document; }

This should be const.

&gt; @@ -209,6 +216,7 @@ private:
&gt;      String m_parent;
&gt;      String m_title;
&gt;      String m_displayTitle;
&gt; +    String m_stateData;

I don&apos;t think this is use.

&gt; +    if (hashChange)
&gt; +        if (FrameView* view = m_frame-&gt;view())
&gt; +            view-&gt;scrollToFragment(m_URL);

The top if needs braces.


&gt; +    
&gt; +    // Check if we&apos;ll be using the page cache.  We only use the page cache
&gt; +    // if one exists and it is less than _backForwardCacheExpirationInterval
&gt; +    // seconds old.  If the cache is expired it gets flushed here.
&gt; +    if (RefPtr&lt;CachedPage&gt; cachedPage = pageCache()-&gt;get(item)) {
&gt; +            
&gt; +        // FIXME: 1800 should not be hardcoded, it should come from

Extra newline.


&gt; +            case FrameLoadTypeIndexedBackForward:
&gt; +                if (itemURL.protocol() != &quot;https&quot;)
&gt; +                    request.setCachePolicy(ReturnCacheDataElseLoad);

This should use protocolIs.


&gt;          [DoNotCheckDomainSecurity] void go(in long distance);
&gt; +        
&gt; +        [DoNotCheckDomainSecurity, Custom] void pushState(in any data, in DOMString title, in optional DOMString url)
&gt; +            raises(DOMException);
&gt; +        [DoNotCheckDomainSecurity, Custom] void replaceState(in any data, in DOMString title, in optional DOMString url)
&gt; +            raises(DOMException);

These two methods should not have DoNotCheckDomainSecurity.


You are missing the definitions of the attribute event listers for onpopstate on HTMLBodyElement and HTMLFrameSetElement.  The latter is also missing the parsedMappedAttribute implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168278</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-02 21:31:04 -0800</bug_when>
    <thetext>&gt; Same patch, removing a printf() I missed and fixing *some* of the
&gt; style-guideline bot&apos;s qualms.

Thanks for addressing some of the qualms.  Sorry for the noise about the namespace indent issue.  Levin just wrote a patch that should quiet that warning in cases where the issue already exists in the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168465</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-03 11:06:00 -0800</bug_when>
    <thetext>Addressed all of Sam&apos;s comments, landed in http://trac.webkit.org/changeset/51644</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44161</attachid>
            <date>2009-12-02 10:58:48 -0800</date>
            <delta_ts>2009-12-02 11:08:52 -0800</delta_ts>
            <desc>Fix + load of layout tests</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>142025</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTU4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIwIEBACisyMDA5LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIxNDIzNj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJ
bXBsZW1lbnQgSFRNTDUgc3RhdGUgb2JqZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFj
ay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQt
ZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29t
cGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0
ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNl
c3RhdGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2xvYWRpbmcvc3RhdGUtb2JqZWN0LXNlY3Vy
aXR5LWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgRGVyaXZlZCBzb3VyY2VzIGFuZCBwcm9qZWN0
IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgUG9wU3RhdGVFdmVudDoKKyAgICAgICAgKiBkb20vUG9wU3RhdGVF
dmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6UG9wU3Rh
dGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVF
dmVudCk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wU3Rh
dGVFdmVudDo6aXNQb3BTdGF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZl
bnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1BvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAg
ICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNQb3BTdGF0ZUV2
ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorCisgICAgICAgIEFkZCB0aGUgIm9ucG9wc3RhdGUiIGF0dHJpYnV0ZToKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmlkbDoKKworICAgICAgICBBZGQgcHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgbWFu
YWdlbWVudCB0byB0aGUgbG9hZGVyIGFuZCBoaXN0b3J5IG1hY2hpbmVyeToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0
b3J5OjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3Rh
dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlv
bik6IEF1Z21lbnRlZCBmcm9tICJzY3JvbGxUb0FuY2hvcigpIiwgY29tYmluaW5nCisgICAgICAg
ICAgYm90aCB0aGUgc2FtZS1kb2N1bWVudCBmcmFnbWVudCBzY3JvbGwgY2FzZSB3aXRoIHRoZSBu
ZXcgc2FtZS1kb2N1bWVudCBzdGF0ZSBvYmplY3QgYWN0aXZhdGlvbiBjYXNlLgorICAgICAgICAo
V2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBsb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0pOiBVc2UgaW5zZXJ0
SXRlbUFmdGVyQ3VycmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6aW5z
ZXJ0SXRlbUFmdGVyQ3VycmVudCk6IE9wdGlvbmFsbHkgaW5zZXJ0IHRoZSBpdGVtIHdpdGhvdXQg
Y2xlYXJpbmcgdGhlIGZvcndhcmQKKyAgICAgICAgICBsaXN0LCBhcyBwdXNoU3RhdGVJdGVtIG1p
Z2h0J3ZlIHNlbGVjdGl2ZWx5IGNsZWFyZWQgb25seSBjZXJ0YWluIGl0ZW1zLCB3aXRoIHRoZSBi
dWxrIG9mIHRoZSBmb3J3YXJkIGxpc3QKKyAgICAgICAgICBtZWFudCB0byByZW1haW4uCisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OnB1c2hTdGF0ZUl0ZW0pOiBDbGVhciB0aGUg
Zm9yd2FyZCBsaXN0ICpvbmx5KiBmb3IgdGhlIHN0YXRlIGl0ZW0ncyBkb2N1bWVudCwgdGhlbiAK
KyAgICAgICAgICBpbnNlcnQgdGhlIG5ldyBpdGVtLgorICAgICAgICAoV2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dC5oOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Ojp1cmxGb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVj
dEFkZGVkKToKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuaDoKKyAgICAgICAgKiBwYWdlL0hpc3Rv
cnkuaWRsOgorCisgICAgICAgIExldCBIaXN0b3J5SXRlbXMgYW5kIERvY3VtZW50cyBhc3NvY2lh
dGUgd2l0aCBlYWNoIG90aGVyLCBhcyB3ZWxsIGFzIGxldHRpbmcgSGlzdG9yeUl0ZW1zIGNvbnRh
aW4gc3RhdGUgb2JqZWN0czoKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5SXRlbTo6fkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtOjpzZXRTdGF0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6
c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmRvY3VtZW50RGV0
YWNoZWQpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlJdGVtOjpzdGF0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
SXRlbTo6ZG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKTogTm90aWZ5IGFsbCBiYWNrL2ZvcndhcmQgaGlzdG9y
eSBpdGVtcyBvd25lZCBieSB0aGlzIERvY3VtZW50IHRoYXQgaXQKKyAgICAgICAgICBpcyBnb2lu
ZyBhd2F5LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVySGlzdG9yeUl0ZW0p
OiBNYW5hZ2UgdGhlIGxpc3Qgb2YgYmFjay9mb3J3YXJkIGhpc3RvcnkgaXRlbXMgdGhpcyBkb2N1
bWVudCBvd25zLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJIaXN0b3J5
SXRlbSk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgIEFkZCB0
aGUgYWJpbGl0eSBmb3IgRG9jdW1lbnRzLCBEb2N1bWVudExvYWRlcnMsIGFuZCBGcmFtZUxvYWRl
ckNsaWVudHMgdG8gYmUgbm90aWZpZWQgd2hlbiBhIERvY3VtZW50cworICAgICAgICBVUkwgY2hh
bmdlcyBhcyB0aGUgcmVzdWx0IG9mIHB1c2hTdGF0ZSgpLCByZXBsYWNlU3RhdGUoKSwgb3IgYSBw
b3BzdGF0ZSBuYXZpZ2F0aW9uOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IElmIHRoZXJlJ3MgYSBwZW5kaW5n
IHN0YXRlIG9iamVjdCwgZGlzcGF0Y2ggdGhlIHBvcHN0YXRlIGV2ZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c3RhdGVQb3BwZWQpOiBJZiBsb2FkaW5nIGlzIGNvbXBsZXRl
LCBkaXNwYXRjaCB0aGUgcG9wc3RhdGUgZXZlbnQuIE90aGVyd2lzZSwgc2V0IAorICAgICAgICAg
IHRoZSBwZW5kaW5nIHN0YXRlIG9iamVjdC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0
VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSk6
CisKKyAgICAgICAgQ2hhbmdlIGhhbmRsaW5nIG9mICJsb2FkaW5nIGEgSGlzdG9yeUl0ZW0iIHRv
IGRpc3Rpbmd1aXNoIGJldHdlZW4gbmV3LURvY3VtZW50IG5hdmlnYXRpb25zIGFuZCBzYW1lLURv
Y3VtZW50CisgICAgICAgIG5hdmlnYXRpb25zLCBjb21iaW5pbmcgdGhlIG9sZCBjb25jZXB0IG9m
IGFuY2hvciBzY3JvbGxzIHdpdGggdGhlIG5ldyBjb25jZXB0IG9mIHN0YXRlIG9iamVjdCBuYXZp
Z2F0aW9uczoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGlj
eSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdhdGVXaXRoaW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSXRlbSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmdvVG9JdGVtKTogQ2hhbmdlZCB0byBhbGxvdyBzdGF0ZSBv
YmplY3QgYWN0aXZhdGlvbnMgdG8gcGFzcyB0aHJvdWdoIHdpdGhvdXQgdGhlIGxvYWQgc3RvcHBp
bmcuCisKIDIwMDktMTItMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlz
aW9uIDUxNTQ1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MSw2ICsxODEsNyBAQAogI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNQbHVnaW4uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luQXJyYXkuY3BwIgor
I2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTUHJvZ3Jlc3NFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNSYW5nZS5jcHAiCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3
IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAogICAgIFBsdWdp
biBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvcFN0YXRlRXZlbnQgXAogICAgIFBvc2l0aW9u
RXJyb3IgXAogICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBcCiAgICAgUHJvZ3Jlc3NFdmVudCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUxNTg0
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtOTIxMSw2ICs5MjExLDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQb3BTdGF0ZUV2ZW50LmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
CisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1BvcFN0YXRlRXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQb3NpdGlvbkVycm9yLmNwcCINCiAJCQkJPg0K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yODc5NSw2ICsyODg1MSwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUG9wU3Rh
dGVFdmVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cUG9wU3RhdGVFdmVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBvc2l0aW9uLmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkBAIC0zODMzNCw2ICszODM5OCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlci5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00MjQ0NSwx
MCArNDI1MTMsMTAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XENvbG9yLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQotICAgICAgICAgICAgICAgIDxGaWxl
DQotICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcQ29uc29sZVBhbmVsLmpzIg0KLSAgICAgICAgICAgICAgICAgICAgPg0KLSAgICAgICAgICAg
ICAgICA8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcQ29uc29sZVBhbmVsLmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29uc29s
ZVZpZXcuanMiDQogCQkJCQk+DQpAQCAtNDI2NjIsMTEgKzQyNzMwLDExIEBACiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXFRpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFRpbWVsaW5lR3JpZC5qcyINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXFRpbWVsaW5lR3JpZC5qcyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxUaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgsMTIgQEAKIAkJNTE3NDFE
MTAwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwQzBCMDcyNTlBMDBFRDQ0MkMg
LyogQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJD
IC8qIEhpc3RvcnlJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTc0MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcy
NTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJ
dGVtLmNwcCAqLzsgfTsKKwkJNTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRF
MjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxNzRFMjBD
MTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMEIxMEExRjQ5QTAwRjk1RTZGIC8q
IFBvcFN0YXRlRXZlbnQuaWRsICovOyB9OworCQk1MTg5RjAxODEwQjM3ODEzMDBGM0M3MzkgLyog
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODlGMDE3MTBCMzc4MTMwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZl
bnRDdXN0b20uY3BwICovOyB9OworCQk1MTg5RjAxRDEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BT
dGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODlGMDFCMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3BwICovOyB9
OworCQk1MTg5RjAxRTEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQzEwQjM3QkQ5
MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxODlGMERFMTBCNDZCMEUw
MEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2
ZW50LmNwcCAqLzsgfTsKIAkJNTE4QTM0QzExMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRC
RTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLzsgfTsKIAkJNTE4QTM0QzIxMDI2
QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4QTM0QkYxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5o
ICovOyB9OwogCQk1MThBMzRDNzEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MThBMzRDNDEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CkBAIC02MzMyLDYgKzYzMzgsMTIgQEAKIAkJNTE3NDFEMEMwQjA3MjU5QTAwRUQ0NDJDIC8q
IEJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0
MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNzQxRDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAv
KiBQb3BTdGF0ZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0ZUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4OUYwMTcxMEIzNzgxMzAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODlGMDFDMTBCMzdCRDkwMEYz
QzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODlG
MEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJT
b2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBX
ZWJTb2NrZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNvY2tldC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ5OSw2ICsxMzUxMSw4IEBACiAJCQkJMUEwRDU3
M0YwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5oICovLAogCQkJCUUxMjg0QkIw
MTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJCUUx
Mjg0QkFGMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCAqLywKKwkJ
CQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLywKKwkJ
CQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8sCiAJCQkJ
OTMzQTE0QjYwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmNwcCAqLywKIAkJCQk5MzNB
MTRCNzBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCAqLywKIAkJCQlBODY2MjlDQTA5
REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCAqLywKQEAgLTE0NTc0LDYgKzE0NTg4LDcg
QEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3RvbS5j
cHAgKi8sCisJCQkJNTE4OUYwMTcxMEIzNzgxMzAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8q
IEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcwMDNC
MzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLApAQCAtMTU2OTgsNiArMTU3MTMsOSBAQAog
CQkJCUUxMjg0QUQ5MTA0NDdBRUIwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCAq
LywKIAkJCQk0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwICovLAogCQkJCTQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oICovLAorCQkJCTUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQ
b3BTdGF0ZUV2ZW50LmNwcCAqLywKKwkJCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9w
U3RhdGVFdmVudC5oICovLAorCQkJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0
ZUV2ZW50LmlkbCAqLywKIAkJCQlCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovLAogCQkJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICovLAog
CQkJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLywK
QEAgLTE4MjAwLDEyICsxODIxOCwxNCBAQAogCQkJCTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAv
KiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAw
REVENjU1IC8qIFJlbmRlclJ1YnlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5
QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3
NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE4QzVGQ0E2MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE4QzVGQ0E5MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRT
Y3JpcHRSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxOEM1RkNCODEwQTNDNkYyMDA0
ODQzOEQgLyogU2hhcmVkU2NyaXB0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNDc0
ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTg5RjAxRTEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyog
V2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3
NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NkZB
MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLApA
QCAtMTgzMTEsNiArMTgzMzEsNyBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3
ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZE
RTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFB
RTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8s
CisJCQkJNTE3NEUyMEMxMEExRjQ5QTAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaWRsIGluIFJl
c291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIwMzUzLDYgKzIwMzc0LDkgQEAKIAkJCQkxNDc5RkFFRjEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZB
RjExMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ3OUZBRjMxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxODlGMDE4MTBCMzc4MTMwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg5RjBERTEwQjQ2QjBF
MDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxOEM1RkNB
NTEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE4QzVGQ0E4MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBv
c2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE4QzVGQ0I3MTBBM0M2RjIwMDQ4NDM4RCAv
KiBTaGFyZWRTY3JpcHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJKU092ZXJmbG93RXZl
bnQuaCIKICNpbmNsdWRlICJKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJKU1Bv
cFN0YXRlRXZlbnQuaCIKICNpbmNsdWRlICJKU1Byb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJK
U1RleHRFdmVudC5oIgogI2luY2x1ZGUgIkpTVUlFdmVudC5oIgpAQCAtNTcsNiArNTgsNyBAQAog
I2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQu
aCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAj
aW5jbHVkZSAiVUlFdmVudC5oIgpAQCAtMTQwLDYgKzE0Miw4IEBAIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICBlbHNlIGlmIChldmVudC0+aXNFcnJvckV2ZW50
KCkpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgRXJyb3JFdmVudCwgZXZlbnQpOwogI2VuZGlmCisgICAgZWxzZSBpZiAoZXZl
bnQtPmlzUG9wU3RhdGVFdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpF
Q1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFBvcFN0YXRlRXZlbnQsIGV2ZW50KTsKICAg
ICBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgRXZlbnQsIGV2ZW50KTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw0ICsxNjMsNTIg
QEAgdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMoRXhlYwogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7CiB9CiAKK0pTVmFsdWUgSlNI
aXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBhcmdzLmF0KDApKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgU3RyaW5nIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhl
eGVjLCBhcmdzLmF0KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAKKyAgICBTdHJpbmcgdXJsOworICAgIGlm
IChhcmdzLnNpemUoKSA+IDIpIHsKKyAgICAgICAgdXJsID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBhcmdzLmF0KDIpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQor
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5zdGF0ZU9iamVjdEFkZGVk
KGhpc3RvcnlTdGF0ZSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RQdXNoLCBlYyk7
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorCitKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhl
YywgYXJncy5hdCgwKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFN0cmluZyB0aXRsZSA9IHZhbHVlVG9TdHJpbmdX
aXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgxKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
CisgICAgU3RyaW5nIHVybDsKKyAgICBpZiAoYXJncy5zaXplKCkgPiAyKSB7CisgICAgICAgIHVy
bCA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgy
KSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IGltcGwoKS0+c3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUsIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0UmVwbGFjZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50LmgiCisKKyNpbmNsdWRlICJQb3BT
dGF0ZUV2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSlNWYWx1ZSBKU1BvcFN0YXRlRXZlbnQ6OmluaXRQb3BTdGF0ZUV2ZW50KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBjb25zdCBVU3RyaW5nJiB0eXBl
QXJnID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBib29sIGNhbkJ1YmJsZUFyZyA9
IGFyZ3MuYXQoMSkudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgY2FuY2VsYWJsZUFyZyA9IGFy
Z3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpOworICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzdGF0ZU9iamVjdEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4
ZWMsIGFyZ3MuYXQoMykpOworICAgIAorICAgIFBvcFN0YXRlRXZlbnQqIGV2ZW50ID0gc3RhdGlj
X2Nhc3Q8UG9wU3RhdGVFdmVudCo+KGltcGwoKSk7CisgICAgZXZlbnQtPmluaXRQb3BTdGF0ZUV2
ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgc3RhdGVPYmplY3RBcmcp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU0M6OkpTVmFsdWUgSlNQb3BTdGF0
ZUV2ZW50OjpzdGF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIG9iamVjdCA9IHN0YXRpY19jYXN0PFBvcFN0YXRlRXZlbnQqPihpbXBs
KCkpLT5zdGF0ZSgpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKKyAgICAKKyAgICByZXR1cm4gb2JqZWN0LT5kZXNlcmlhbGl6ZShleGVjKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTE1NDUpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MQWxsQ29sbGVjdGlvbi5oIgpAQCAtOTgsNiArOTksNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCkBAIC0xNDcwLDYgKzE0NzIsMTIgQEAg
dm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKICAgICBpZiAocmVuZGVyKQogICAgICAgICByZW5kZXIt
PmRlc3Ryb3koKTsKICAgICAKKyAgICBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiBhc3Nv
Y2lhdGVkSGlzdG9yeUl0ZW1zOworICAgIGFzc29jaWF0ZWRIaXN0b3J5SXRlbXMuc3dhcChtX2Fz
c29jaWF0ZWRIaXN0b3J5SXRlbXMpOworICAgIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+
OjppdGVyYXRvciBlbmQgPSBhc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmVuZCgpOworICAgIGZvciAo
SGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID46Oml0ZXJhdG9yIGkgPSBhc3NvY2lhdGVkSGlz
dG9yeUl0ZW1zLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAgICAgICgqaSktPmRvY3VtZW50
RGV0YWNoZWQodGhpcyk7CisgICAgCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCwgYXMgb3VyIEZy
YW1lIG1pZ2h0IGRlbGV0ZSBpdHNlbGYgYXMgc29vbiBhcyBpdCBkZXRhY2hlcwogICAgIC8vIHVz
LiBIb3dldmVyLCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHN5bWFudGljcywgYXMgaXQn
cyBuZXZlcgogICAgIC8vIHBvc3NpYmxlIHRvIHJlLWF0dGFjaC4gRXZlbnR1YWxseSBEb2N1bWVu
dDo6ZGV0YWNoKCkgc2hvdWxkIGJlIHJlbmFtZWQsCkBAIC0xNzQxLDYgKzE3NDksOSBAQCB2b2lk
IERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCk7CiAgICAgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKICAgICBkaXNwYXRj
aFdpbmRvd0V2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFn
ZXNob3dFdmVudCwgZmFsc2UpLCB0aGlzKTsKKyAgICBpZiAobV9wZW5kaW5nU3RhdGVPYmplY3Qp
CisgICAgICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKG1fcGVu
ZGluZ1N0YXRlT2JqZWN0LnJlbGVhc2UoKSkpOworICAgIAogICAgIGlmIChmKQogICAgICAgICBm
LT5sb2FkZXIoKS0+aGFuZGxlZE9ubG9hZEV2ZW50cygpOwogI2lmZGVmIElOU1RSVU1FTlRfTEFZ
T1VUX1NDSEVEVUxJTkcKQEAgLTQzMTUsNiArNDMyNiw0MiBAQCB2b2lkIERvY3VtZW50OjpzZXRT
ZWN1cml0eU9yaWdpbihTZWN1cml0CiAgICAgaW5pdEROU1ByZWZldGNoKCk7CiB9CiAKK3ZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgRnJhbWUqIGYgPSBmcmFtZSgpOworICAgIGlmICghZikKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2V0VVJMKHVybCk7CisgICAgZi0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbih1cmwpOworCisgICAg
Zi0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFn
ZUZvckZyYW1lKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnN0YXRlUG9wcGVkKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGVPYmplY3QpCit7CisgICAgRnJhbWUqIGYgPSBmcmFtZSgpOworICAg
IGlmICghZikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChmLT5sb2FkZXIoKS0+aXND
b21wbGV0ZSgpKQorICAgICAgICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNy
ZWF0ZShzdGF0ZU9iamVjdCkpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nU3RhdGVPYmpl
Y3QgPSBzdGF0ZU9iamVjdDsKK30KKwordm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIW1fYXNzb2NpYXRlZEhpc3RvcnlJ
dGVtcy5jb250YWlucyhpdGVtKSk7CisgICAgbV9hc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmFkZChp
dGVtKTsKK30KKwordm9pZCBEb2N1bWVudDo6dW5yZWdpc3Rlckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQoreworICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRIaXN0b3J5SXRlbXMuY29udGFp
bnMoaXRlbSkgfHwgbV9hc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmlzRW1wdHkoKSk7CisgICAgbV9h
c3NvY2lhdGVkSGlzdG9yeUl0ZW1zLnJlbW92ZShpdGVtKTsKK30KKwogdm9pZCBEb2N1bWVudDo6
dXBkYXRlRm9jdXNBcHBlYXJhbmNlU29vbigpCiB7CiAgICAgaWYgKCFtX3VwZGF0ZUZvY3VzQXBw
ZWFyYW5jZVRpbWVyLmlzQWN0aXZlKCkpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7Ci0gICAgY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiAg
ICAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTENvbGxlY3Rpb247CiAg
ICAgY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CkBAIC03Nyw2ICs3Niw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MSGVhZEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKICAgICBjbGFzcyBIVE1MTWFwRWxlbWVudDsKKyAgICBjbGFzcyBIaXN0b3J5SXRl
bTsKKyAgICBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKICAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OwogICAgIGNsYXNzIEludFBvaW50OwogICAgIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsK
QEAgLTkzLDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlbmRlclZp
ZXc7CiAgICAgY2xhc3MgU2NyaXB0RWxlbWVudERhdGE7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmln
aW47CisgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFNlZ21lbnRl
ZFN0cmluZzsKICAgICBjbGFzcyBTZXR0aW5nczsKICAgICBjbGFzcyBTdHlsZVNoZWV0OwpAQCAt
ODg3LDYgKzg4OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgdGhhdCBhbHJlYWR5IGNvbnRh
aW5zIGNvbnRlbnQuCiAgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiop
OwogCisgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYp
OworICAgIHZvaWQgc3RhdGVQb3BwZWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CisgICAgdm9p
ZCByZWdpc3Rlckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSk7CisKICAgICBib29sIHByb2Nlc3Np
bmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQ7IH0KIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTEwNjUsNiArMTA3Miw4IEBAIHByaXZhdGU6CiAgICAg
RWxlbWVudCogbV9jc3NUYXJnZXQ7CiAgICAgCiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdMb2FkRXZl
bnQ7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVPYmpl
Y3Q7CisgICAgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gbV9hc3NvY2lhdGVkSGlzdG9y
eUl0ZW1zOwogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fb3Zlck1pbmltdW1M
YXlvdXRUaHJlc2hvbGQ7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9k
b20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDExIEBAIGJvb2wgRXZl
bnQ6OmlzUGFnZVRyYW5zaXRpb25FdmVudCgpIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgRXZlbnQ6OmlzUG9wU3RhdGVFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIEV2ZW50Ojppc1Byb2dyZXNzRXZlbnQoKSBjb25zdAogewogICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVyZmxvd0V2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1BhZ2VUcmFuc2l0aW9uRXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBi
b29sIGlzUG9wU3RhdGVFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9n
cmVzc0V2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmlt
YXRpb25FdmVudCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNTE1NDUpCisrKyBX
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHBhZ2VoaWRlKSBcCiAgICAgbWFjcm8ocGFn
ZXNob3cpIFwKICAgICBtYWNybyhwYXN0ZSkgXAorICAgIG1hY3JvKHBvcHN0YXRlKSBcCiAgICAg
bWFjcm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlc2V0KSBcCiAgICAgbWFjcm8o
cmVzaXplKSBcCkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICov
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvcFN0YXRlRXZl
bnQ6OlBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0KQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGZhbHNlLCB0
cnVlKQorICAgICwgbV9zdGF0ZU9iamVjdChzdGF0ZU9iamVjdCkKK3sKK30KKyAgICAKK3ZvaWQg
UG9wU3RhdGVFdmVudDo6aW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpCit7CisgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpOworCisgICAgbV9zdGF0ZU9iamVjdCA9IHN0YXRlT2JqZWN0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpZm5kZWYgUG9wU3RhdGVFdmVudF9oCisjZGVmaW5lIFBvcFN0YXRlRXZlbnRfaAorCisjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNz
IFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cFN0YXRlRXZlbnQoc3RhdGVPYmplY3QpKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRQb3BTdGF0
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICBib29sIGlz
UG9wU3RhdGVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgpOyB9
ICAgIAorCitwcml2YXRlOgorICAgIFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc3Rh
dGVPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3BT
dGF0ZUV2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworbW9kdWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBQb3BTdGF0ZUV2ZW50IDogRXZlbnQgeworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGluaXRQb3BTdGF0ZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhbnkgc3RhdGVBcmcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3Rv
bUdldHRlcl0gYW55IHN0YXRlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hl
LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTU0LDEyICs1NSwxNiBAQCBCYWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2Fy
ZExpc3QoKQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPiBwcnBJdGVtKQogeworICAgIGluc2VydEl0ZW1BZnRlckN1cnJlbnQocHJwSXRlbSwg
dHJ1ZSk7Cit9Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6aW5zZXJ0SXRlbUFmdGVyQ3VycmVudChQ
YXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtLCBib29sIHJlbW92ZUZvcndhcmRMaXN0KQor
ewogICAgIEFTU0VSVChwcnBJdGVtKTsKICAgICBpZiAobV9jYXBhY2l0eSA9PSAwIHx8ICFtX2Vu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRo
ZSBmb3J3YXJkIGxpc3QgICAgCi0gICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5k
ZXgpIHsKKyAgICBpZiAocmVtb3ZlRm9yd2FyZExpc3QgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVu
dEl0ZW1JbmRleCkgewogICAgICAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gbV9jdXJyZW50ICsg
MTsKICAgICAgICAgd2hpbGUgKG1fZW50cmllcy5zaXplKCkgPiB0YXJnZXRTaXplKSB7CiAgICAg
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMubGFzdCgpOwpAQCAt
NzksOCArODQsOCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRyCiAg
ICAgICAgIG1fY3VycmVudC0tOwogICAgIH0KICAgICAKLSAgICBtX2VudHJpZXMuYXBwZW5kKHBy
cEl0ZW0pOwotICAgIG1fZW50cnlIYXNoLmFkZChtX2VudHJpZXMubGFzdCgpKTsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBwcnBJdGVtKTsKICAgICBtX2N1cnJlbnQrKzsKIH0KIApAQCAtMjIyLDYgKzIyNywz
MCBAQCBIaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0OjplbnRyCiAgICAgcmV0dXJu
IG1fZW50cmllczsKIH0KIAordm9pZCBCYWNrRm9yd2FyZExpc3Q6OnB1c2hTdGF0ZUl0ZW0oUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4gbmV3SXRlbSkKK3sKKyAgICBBU1NFUlQobmV3SXRlbSk7Cisg
ICAgQVNTRVJUKG5ld0l0ZW0tPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChuZXdJdGVtLT5zdGF0
ZU9iamVjdCgpKTsKKyAgICAKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGN1cnJlbnQgPSBjdXJy
ZW50SXRlbSgpOworICAgIEFTU0VSVChjdXJyZW50KTsKKworICAgIERvY3VtZW50KiBuZXdJdGVt
RG9jdW1lbnQgPSBuZXdJdGVtLT5kb2N1bWVudCgpOworICAgIHdoaWxlIChIaXN0b3J5SXRlbSog
aXRlbSA9IGZvcndhcmRJdGVtKCkpIHsKKyAgICAgICAgaWYgKGl0ZW0tPmRvY3VtZW50KCkgIT0g
bmV3SXRlbURvY3VtZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJlbW92ZUl0ZW0o
aXRlbSk7CisgICAgfQorCisgICAgaW5zZXJ0SXRlbUFmdGVyQ3VycmVudChuZXdJdGVtLCBmYWxz
ZSk7CisgICAgCisgICAgaWYgKCFjdXJyZW50LT5kb2N1bWVudCgpKSB7CisgICAgICAgIGN1cnJl
bnQtPnNldERvY3VtZW50KG5ld0l0ZW1Eb2N1bWVudCk7CisgICAgICAgIGN1cnJlbnQtPnNldFN0
YXRlT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkpOworICAgIH0KK30KKwog
dm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkKIHsKICAgICBpbnQgc2l6ZSA9IG1fZW50cmll
cy5zaXplKCk7CkBAIC0yNTQsNyArMjgzLDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnJlbW92
ZUl0ZW0oSGlzdG9yeQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50ID0gbV9lbnRyaWVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
ID49IGNvdW50KQotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBjb3VudCA/IGNvdW50
LTEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9
IGNvdW50ID8gY291bnQgLSAxIDogTm9DdXJyZW50SXRlbUluZGV4OwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRM
aXN0LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQYWdlOwor
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3RyaW5nOwogCiB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhpc3RvcnlJdGVtSGFzaFNldDsKQEAgLTk2LDEy
ICs5OSwxNiBAQCBwdWJsaWM6IAogICAgIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwog
ICAgIEhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CiAgICAgCisgICAgdm9pZCBwdXNoU3Rh
dGVJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKwogI2lmIEVOQUJMRShXTUwpCiAgICAg
dm9pZCBjbGVhcldNTFBhZ2VIaXN0b3J5KCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBCYWNr
Rm9yd2FyZExpc3QoUGFnZSopOworICAgIAorICAgIHZvaWQgaW5zZXJ0SXRlbUFmdGVyQ3VycmVu
dChQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiwgYm9vbCByZW1vdmVGb3J3YXJkTGlzdCk7CiAKICAg
ICBQYWdlKiBtX3BhZ2U7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pIApJbmRleDogV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgSGlzdG9yeUl0ZW06Okhp
c3RvcnlJdGVtKCkKICAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZShmYWxzZSkKICAgICAsIG1f
aXNUYXJnZXRJdGVtKGZhbHNlKQogICAgICwgbV92aXNpdENvdW50KDApCisgICAgLCBtX2RvY3Vt
ZW50KDApCiB7CiB9CiAKQEAgLTYwLDYgKzYxLDcgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlKGZhbHNlKQogICAg
ICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKKyAgICAsIG1f
ZG9jdW1lbnQoMCkKIHsgICAgCiAgICAgaWNvbkRhdGFiYXNlKCktPnJldGFpbkljb25Gb3JQYWdl
VVJMKG1fdXJsU3RyaW5nKTsKIH0KQEAgLTc0LDYgKzc2LDcgQEAgSGlzdG9yeUl0ZW06Okhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlKGZhbHNl
KQogICAgICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKKyAg
ICAsIG1fZG9jdW1lbnQoMCkKIHsKICAgICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNvbkZvclBh
Z2VVUkwobV91cmxTdHJpbmcpOwogfQpAQCAtODksNiArOTIsNyBAQCBIaXN0b3J5SXRlbTo6SGlz
dG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJsCiAgICAgLCBtX2xhc3RWaXNpdFdhc0ZhaWx1cmUoZmFs
c2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQor
ICAgICwgbV9kb2N1bWVudCgwKQogeyAgICAKICAgICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNv
bkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOwogfQpAQCAtOTcsNiArMTAxLDcgQEAgSGlzdG9yeUl0
ZW06On5IaXN0b3J5SXRlbSgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFBhZ2UpOwogICAgIGlj
b25EYXRhYmFzZSgpLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOworICAgIHNl
dERvY3VtZW50KDApOwogfQogCiBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0
IEhpc3RvcnlJdGVtJiBpdGVtKQpAQCAtMzc4LDYgKzM4MywzNiBAQCB2b2lkIEhpc3RvcnlJdGVt
OjpzZXRJc1RhcmdldEl0ZW0oYm9vbCBmCiAgICAgbV9pc1RhcmdldEl0ZW0gPSBmbGFnOwogfQog
Cit2b2lkIEhpc3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gb2JqZWN0KQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX3N0
YXRlT2JqZWN0ID0gb2JqZWN0OworfQorCit2b2lkIEhpc3RvcnlJdGVtOjpzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAgbV9kb2N1
bWVudC0+dW5yZWdpc3Rlckhpc3RvcnlJdGVtKHRoaXMpOworICAgIGlmIChkb2N1bWVudCkKKyAg
ICAgICAgZG9jdW1lbnQtPnJlZ2lzdGVySGlzdG9yeUl0ZW0odGhpcyk7CisgICAgCisgICAgaWYg
KG1fZG9jdW1lbnQgJiYgZG9jdW1lbnQgPT0gMCkKKyAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBk
b2N1bWVudCBvdXQgb2YgaGlzdG9yeSBpdGVtICVwXG4iLCB0aGlzKTsKKyAgICAgICAgCisgICAg
bV9kb2N1bWVudCA9IGRvY3VtZW50OworICAgIAorfQorCit2b2lkIEhpc3RvcnlJdGVtOjpkb2N1
bWVudERldGFjaGVkKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVu
dCA9PSBkb2N1bWVudCk7CisgICAgbV9kb2N1bWVudCA9IDA7CisgICAgbV9zdGF0ZU9iamVjdCA9
IDA7Cit9CisKIHZvaWQgSGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGQt
PnRhcmdldCgpKSk7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gNTE1NDUpCisr
KyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0xMjgsNiArMTI5LDEy
IEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldElzVGFyZ2V0SXRlbShib29sKTsKICAgICAKKyAgICB2b2lkIHNldFN0YXRlT2JqZWN0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBvYmplY3QpOworICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGVPYmplY3QoKSB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgpOyB9
CisgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOworICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICB2b2lkIGRvY3VtZW50RGV0
YWNoZWQoRG9jdW1lbnQqKTsKKyAgICAKICAgICB2b2lkIHNldEZvcm1JbmZvRnJvbVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBzZXRGb3JtRGF0YShQYXNzUmVmUHRy
PEZvcm1EYXRhPik7CiAgICAgdm9pZCBzZXRGb3JtQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7
CkBAIC0yMDksNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXJlbnQ7CiAgICAg
U3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fZGlzcGxheVRpdGxlOworICAgIFN0cmluZyBt
X3N0YXRlRGF0YTsKICAgICAKICAgICBkb3VibGUgbV9sYXN0VmlzaXRlZFRpbWU7CiAgICAgYm9v
bCBtX2xhc3RWaXNpdFdhc0hUVFBOb25HZXQ7CkBAIC0yMjYsNiArMjM0LDEwIEBAIHByaXZhdGU6
CiAKICAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX3JlZGlyZWN0VVJMczsKIAorICAgIC8v
IFN1cHBvcnQgZm9yIEhUTUw1IEhpc3RvcnkKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX3N0YXRlT2JqZWN0OworICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAogICAg
IC8vIGluZm8gdXNlZCB0byByZXBvc3QgZm9ybSBkYXRhCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBt
X2Zvcm1EYXRhOwogICAgIFN0cmluZyBtX2Zvcm1Db250ZW50VHlwZTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAgb25w
YXN0ZQogb25wYXVzZQogb25wbGF5CiBvbnBsYXlpbmcKK29ucG9wc3RhdGUKIG9ucHJvZ3Jlc3MK
IG9ucmF0ZWNoYW5nZQogb25yZXNldApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1CiAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBvbnBhZ2VzaG93QXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGFnZXNob3dFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucG9wc3RhdGVBdHRyKQorICAgICAgICBkb2N1bWVu
dCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3BzdGF0
ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCks
IGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKICAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuYmx1ckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZy
YW1lKCksIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25mb2N1c0F0dHIp
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcg
KzE5OSw3IEBAIGNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAogICAgIHJl
dHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VS
ZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRG9jdW1lbnRM
b2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgbV9vcmlnaW5hbFJlcXVlc3RDb3B5LnNldFVSTCh1cmwpOwogICAg
IG1fcmVxdWVzdC5zZXRVUkwodXJsKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2
aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29u
c3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXNw
b25zZU1JTUVUeXBlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2b2lkIHJlcGxhY2VSZXF1
ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZXBsYWNl
UmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYpOwogICAgICAg
ICBib29sIGlzU3RvcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBpbmc7IH0KICAgICAg
ICAgdm9pZCBzdG9wTG9hZGluZyhEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7
CiAgICAgICAgIHZvaWQgc2V0Q29tbWl0dGVkKGJvb2wgY29tbWl0dGVkKSB7IG1fY29tbWl0dGVk
ID0gY29tbWl0dGVkOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNTE1NDUp
CisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAy
LDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxD
bGllbnRSZWRpcmVjdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91YmxlKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjk0LDUyICsxNjk0LDY5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnNldEZpcnN0UGFydHlGb3JDb29raWUKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zZXRGaXJz
dFBhcnR5Rm9yQ29va2llcyh1cmwpOwogfQogCi1jbGFzcyBIYXNoQ2hhbmdlRXZlbnRUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEhhc2hDaGFuZ2VFdmVudFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3Vt
ZW50PiBkb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgSGFzaENoYW5nZUV2ZW50
VGFzayhkb2N1bWVudCk7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgICAgICBtX2RvY3Vt
ZW50LT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmhhc2hj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBI
YXNoQ2hhbmdlRXZlbnRUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50KQotICAgICAg
ICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kb2N1bWVu
dCk7Ci0gICAgfQotICAgIAotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKLX07Ci0K
IC8vIFRoaXMgZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMs
IGV4Y2VwdCBpdCByZWxpZXMgb24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxy
ZWFkeSBjaGVja2VkIHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhl
IHJpZ2h0IHRoaW5nIHRvIGRvLgotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9BbmNob3IoY29u
c3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0
IEtVUkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9iamVjdCwgYm9vbCBpc05l
d05hdmlnYXRpb24pCiB7Ci0gICAgQVNTRVJUKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIodXJsLCBtX1VSTCkpOwotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgbV9VUkwpICYmICFlcXVhbElnbm9yaW5nTnVsbGl0eSh1cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCksIG1fVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSkgewotICAgICAgICBEb2N1bWVudCog
Y3VycmVudERvY3VtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgY3VycmVudERv
Y3VtZW50LT5wb3N0VGFzayhIYXNoQ2hhbmdlRXZlbnRUYXNrOjpjcmVhdGUoY3VycmVudERvY3Vt
ZW50KSk7CisgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXRlIG9iamVjdCwgd2UgY2Fubm90IGFsc28g
YmUgYSBuZXcgbmF2aWdhdGlvbi4KKyAgICBBU1NFUlQoIXN0YXRlT2JqZWN0IHx8IChzdGF0ZU9i
amVjdCAmJiAhaXNOZXdOYXZpZ2F0aW9uKSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc291
cmNlJ3MgcmVxdWVzdCB3aXRoIHRoZSBuZXcgVVJMIHRvIGZha2UgdGhlIFVSTCBjaGFuZ2UKKyAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVUkwodXJsKTsKKyAgICBkb2N1bWVudExvYWRlcigp
LT5yZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKKyAgICBp
ZiAoaXNOZXdOYXZpZ2F0aW9uICYmICFzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudCh1cmwp
ICYmICFzdGF0ZU9iamVjdCkgeworICAgICAgICAvLyBOQjogbXVzdCBoYXBwZW4gYWZ0ZXIgcmVw
bGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCksIHNpbmNlIHdlIGFkZCAK
KyAgICAgICAgLy8gYmFzZWQgb24gdGhlIGN1cnJlbnQgcmVxdWVzdC4gTXVzdCBhbHNvIGhhcHBl
biBiZWZvcmUgd2Ugb3BlblVSTCBhbmQgZGlzcGxhY2UgdGhlIAorICAgICAgICAvLyBzY3JvbGwg
cG9zaXRpb24sIHNpbmNlIGFkZGluZyB0aGUgQkYgaXRlbSB3aWxsIHNhdmUgYXdheSBzY3JvbGwg
c3RhdGUuCisgICAgICAgIAorICAgICAgICAvLyBOQjI6ICBJZiB3ZSB3ZXJlIGxvYWRpbmcgYSBs
b25nLCBzbG93IGRvYywgYW5kIHRoZSB1c2VyIGFuY2hvciBuYXYnZWQgYmVmb3JlCisgICAgICAg
IC8vIGl0IHdhcyBkb25lLCBjdXJySXRlbSBpcyBub3cgc2V0IHRoZSB0aGF0IHNsb3cgZG9jLCBh
bmQgcHJldkl0ZW0gaXMgd2hhdGV2ZXIgd2FzCisgICAgICAgIC8vIGJlZm9yZSBpdC4gIEFkZGlu
ZyB0aGUgYi9mIGl0ZW0gd2lsbCBidW1wIHRoZSBzbG93IGRvYyBkb3duIHRvIHByZXZJdGVtLCBl
dmVuCisgICAgICAgIC8vIHRob3VnaCBpdHMgbG9hZCBpcyBub3QgeWV0IGRvbmUuICBJIHRoaW5r
IHRoaXMgYWxsIHdvcmtzIG91dCBPSywgZm9yIG9uZSBiZWNhdXNlCisgICAgICAgIC8vIHdlIGhh
dmUgYWxyZWFkeSBzYXZlZCBhd2F5IHRoZSBzY3JvbGwgYW5kIGRvYyBzdGF0ZSBmb3IgdGhlIGxv
bmcgc2xvdyBsb2FkLAorICAgICAgICAvLyBidXQgaXQncyBub3QgYW4gb2J2aW91cyBjYXNlLgor
CisgICAgICAgIGhpc3RvcnkoKS0+dXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3Jv
bGwoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcih1cmwsIG1fVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkg
IT0gbV9VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgbV9VUkwgPSB1cmw7Ci0gICAgaGlz
dG9yeSgpLT51cGRhdGVGb3JBbmNob3JTY3JvbGwoKTsKKyAgICBoaXN0b3J5KCktPnVwZGF0ZUZv
clNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1
dG9zY3JvbGwvcGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dp
bmcgdGhlIGxpbmsgdG8gdGhlIGFuY2hvcgotICAgIG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
dG9wQXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgc3RhcnRlZCgpOwotICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgIHZpZXctPnNjcm9sbFRvRnJhZ21lbnQo
bV9VUkwpOwotCisgICAgaWYgKGhhc2hDaGFuZ2UpCisgICAgICAgIG1fZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgCiAgICAgLy8gSXQncyBpbXBvcnRh
bnQgdG8gbW9kZWwgdGhpcyBhcyBhIGxvYWQgdGhhdCBzdGFydHMgYW5kIGltbWVkaWF0ZWx5IGZp
bmlzaGVzLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHBhcmVudCBmcmFtZSBtYXkgdGhpbmsgd2Ug
bmV2ZXIgZmluaXNoZWQgbG9hZGluZy4KKyAgICBzdGFydGVkKCk7CisgICAgCisgICAgaWYgKGhh
c2hDaGFuZ2UpCisgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkp
CisgICAgICAgICAgICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KG1fVVJMKTsKKwogICAgIG1faXND
b21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29tcGxldGVkKCk7CisKKyAgICBpZiAoaXNOZXdO
YXZpZ2F0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgd2lsbCBjbGVhciBwcmV2aW91c0l0ZW0gZnJv
bSB0aGUgcmVzdCBvZiB0aGUgZnJhbWUgdHJlZSB0aGF0IGRpZG4ndAorICAgICAgICAvLyBkb2lu
ZyBhbnkgbG9hZGluZy4gV2UgbmVlZCB0byBtYWtlIGEgcGFzcyBvbiB0aGlzIG5vdywgc2luY2Ug
Zm9yIGFuY2hvciBuYXYKKyAgICAgICAgLy8gd2UnbGwgbm90IGdvIHRocm91Z2ggYSByZWFsIGxv
YWQgYW5kIHJlYWNoIENvbXBsZXRlZCBzdGF0ZS4KKyAgICAgICAgY2hlY2tMb2FkQ29tcGxldGUo
KTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVPYmplY3QpIHsKKyAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QpOworICAgICAgICBtX2NsaWVudC0+ZGlz
cGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpOworICAgIH0KKyAgICAK
KyAgICBpZiAoaGFzaENoYW5nZSkgeworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kaXNw
YXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmhhc2hjaGFuZ2VFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpOworICAgIH0KKyAgICAKKyAgICAvLyBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkRmluaXNoTG9hZCgpIHRlbGxzIHRoZSBpbnRlcm5hbCBsb2FkIGRlbGVnYXRlIHRoZSBs
b2FkIGZpbmlzaGVkIHdpdGggbm8gZXJyb3IKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZCgp
OwogfQogCiBib29sIEZyYW1lTG9hZGVyOjppc0NvbXBsZXRlKCkgY29uc3QKQEAgLTMzNDksNDAg
KzMzNjYsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlRnJhZ21lbnRTYwogCiB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51ZSkK
IHsKLSAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmcgfHwgcG9saWN5
Q2hlY2tlcigpLT5sb2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGVSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3Q7CiAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAKICAg
ICBpZiAoIXNob3VsZENvbnRpbnVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9
IHJlcXVlc3QudXJsKCk7Ci0gICAgCi0gICAgbV9kb2N1bWVudExvYWRlci0+cmVwbGFjZVJlcXVl
c3RVUkxGb3JBbmNob3JTY3JvbGwodXJsKTsKLSAgICBpZiAoIWlzUmVkaXJlY3QgJiYgIXNob3Vs
ZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KHVybCkpIHsKLSAgICAgICAgLy8gTkI6IG11c3QgaGFw
cGVuIGFmdGVyIF9zZXRVUkwsIHNpbmNlIHdlIGFkZCBiYXNlZCBvbiB0aGUgY3VycmVudCByZXF1
ZXN0LgotICAgICAgICAvLyBNdXN0IGFsc28gaGFwcGVuIGJlZm9yZSB3ZSBvcGVuVVJMIGFuZCBk
aXNwbGFjZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLCBzaW5jZQotICAgICAgICAvLyBhZGRpbmcgdGhl
IEJGIGl0ZW0gd2lsbCBzYXZlIGF3YXkgc2Nyb2xsIHN0YXRlLgotICAgICAgICAKLSAgICAgICAg
Ly8gTkIyOiAgSWYgd2Ugd2VyZSBsb2FkaW5nIGEgbG9uZywgc2xvdyBkb2MsIGFuZCB0aGUgdXNl
ciBhbmNob3IgbmF2J2VkIGJlZm9yZQotICAgICAgICAvLyBpdCB3YXMgZG9uZSwgY3Vyckl0ZW0g
aXMgbm93IHNldCB0aGUgdGhhdCBzbG93IGRvYywgYW5kIHByZXZJdGVtIGlzIHdoYXRldmVyIHdh
cwotICAgICAgICAvLyBiZWZvcmUgaXQuICBBZGRpbmcgdGhlIGIvZiBpdGVtIHdpbGwgYnVtcCB0
aGUgc2xvdyBkb2MgZG93biB0byBwcmV2SXRlbSwgZXZlbgotICAgICAgICAvLyB0aG91Z2ggaXRz
IGxvYWQgaXMgbm90IHlldCBkb25lLiAgSSB0aGluayB0aGlzIGFsbCB3b3JrcyBvdXQgT0ssIGZv
ciBvbmUgYmVjYXVzZQotICAgICAgICAvLyB3ZSBoYXZlIGFscmVhZHkgc2F2ZWQgYXdheSB0aGUg
c2Nyb2xsIGFuZCBkb2Mgc3RhdGUgZm9yIHRoZSBsb25nIHNsb3cgbG9hZCwKLSAgICAgICAgLy8g
YnV0IGl0J3Mgbm90IGFuIG9idmlvdXMgY2FzZS4KLQotICAgICAgICBoaXN0b3J5KCktPnVwZGF0
ZUJhY2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Nyb2xsKCk7Ci0gICAgfQotICAgIAotICAgIHNj
cm9sbFRvQW5jaG9yKHVybCk7Ci0gICAgCi0gICAgaWYgKCFpc1JlZGlyZWN0KQotICAgICAgICAv
LyBUaGlzIHdpbGwgY2xlYXIgcHJldmlvdXNJdGVtIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGZyYW1l
IHRyZWUgdGhhdCBkaWRuJ3QKLSAgICAgICAgLy8gZG9pbmcgYW55IGxvYWRpbmcuIFdlIG5lZWQg
dG8gbWFrZSBhIHBhc3Mgb24gdGhpcyBub3csIHNpbmNlIGZvciBhbmNob3IgbmF2Ci0gICAgICAg
IC8vIHdlJ2xsIG5vdCBnbyB0aHJvdWdoIGEgcmVhbCBsb2FkIGFuZCByZWFjaCBDb21wbGV0ZWQg
c3RhdGUuCi0gICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0gCi0gICAgbV9jbGllbnQtPmRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7Ci0gICAgbV9jbGllbnQtPmRpZEZp
bmlzaExvYWQoKTsKKyAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmcg
fHwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGVSZWRpcmVjdFdp
dGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q7ICAgIAorICAgIGxvYWRJblNhbWVEb2N1bWVudChyZXF1
ZXN0LnVybCgpLCAwLCAhaXNSZWRpcmVjdCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OnNob3Vs
ZFNjcm9sbFRvQW5jaG9yKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRnJhbWVMb2FkVHlwZSBsb2Fk
VHlwZSwgY29uc3QgS1VSTCYgdXJsKQpAQCAtMzY1NywxNCArMzY0Nyw1MiBAQCBGcmFtZSogRnJh
bWVMb2FkZXI6OmZpbmRGcmFtZUZvck5hdmlnYXRpCiAgICAgcmV0dXJuIGZyYW1lOwogfQogCi0v
LyBMb2FkcyBjb250ZW50IGludG8gdGhpcyBmcmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3Rvcnkg
aXRlbQordm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVXaXRoaW5Eb2N1bWVudChIaXN0b3J5SXRl
bSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIWl0ZW0tPmRvY3VtZW50KCkgfHwgaXRlbS0+ZG9jdW1l
bnQoKSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKworICAgIC8vIFNhdmUgdXNlciB2aWV3IHN0
YXRlIHRvIHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBoZXJlIHNpbmNlIHdlIGRvbid0IGRvIGEg
bm9ybWFsIGxvYWQuCisgICAgLy8gRklYTUU6IERvZXMgZm9ybSBzdGF0ZSBuZWVkIHRvIGJlIHNh
dmVkIGhlcmUgdG9vPworICAgIGhpc3RvcnkoKS0+c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0
YXRlVG9JdGVtKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSk7CisgICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVz
ZXIoZmFsc2UpOworCisgICAgaGlzdG9yeSgpLT5zZXRDdXJyZW50SXRlbShpdGVtKTsKKyAgICAg
ICAgCisgICAgLy8gbG9hZEluU2FtZURvY3VtZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUgVVJM
IGFuZCBub3RpZmllcyBsb2FkIGRlbGVnYXRlcyBvZiBhICJmYWtlIiBsb2FkCisgICAgbG9hZElu
U2FtZURvY3VtZW50KGl0ZW0tPnVybCgpLCBpdGVtLT5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CisK
KyAgICAvLyBSZXN0b3JlIHVzZXIgdmlldyBzdGF0ZSBmcm9tIHRoZSBjdXJyZW50IGhpc3Rvcnkg
aXRlbSBoZXJlIHNpbmNlIHdlIGRvbid0IGRvIGEgbm9ybWFsIGxvYWQuCisgICAgLy8gRXZlbiB0
aG91Z2ggd2UganVzdCBtYW51YWxseSBzZXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtLCB0aGlz
IEFTU0VSVCB2ZXJpZmllcyBub3RoaW5nIAorICAgIC8vIGluc2lkZSBvZiBsb2FkSW5TYW1lRG9j
dW1lbnQoKSBjYXVzZWQgaXQgdG8gY2hhbmdlLgorICAgIEFTU0VSVChoaXN0b3J5KCktPmN1cnJl
bnRJdGVtKCkgPT0gaXRlbSk7CisgICAgaGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25B
bmRWaWV3U3RhdGUoKTsKK30KKwogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJlYWxs
eSBiZSBzcGxpdCBpbnRvIGEgY291cGxlIHBpZWNlcywgc29tZSBvZgogLy8gd2hpY2ggc2hvdWxk
IGJlIG1ldGhvZHMgb2YgSGlzdG9yeUNvbnRyb2xsZXIgYW5kIHNvbWUgb2Ygd2hpY2ggc2hvdWxk
IGJlCiAvLyBtZXRob2RzIG9mIEZyYW1lTG9hZGVyLgotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0
ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCit2b2lkIEZyYW1l
TG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jdW1lbnQoSGlzdG9yeUl0ZW0qIGl0ZW0sIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAvLyBSZW1lbWJlciB0aGlzIGl0ZW0gc28gd2UgY2FuIHRyYXZlcnNl
IGFueSBjaGlsZCBpdGVtcyBhcyBjaGlsZCBmcmFtZXMgbG9hZAorICAgIGhpc3RvcnkoKS0+c2V0
UHJvdmlzaW9uYWxJdGVtKGl0ZW0pOworICAgIAorICAgIC8vIENoZWNrIGlmIHdlJ2xsIGJlIHVz
aW5nIHRoZSBwYWdlIGNhY2hlLiAgV2Ugb25seSB1c2UgdGhlIHBhZ2UgY2FjaGUKKyAgICAvLyBp
ZiBvbmUgZXhpc3RzIGFuZCBpdCBpcyBsZXNzIHRoYW4gX2JhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0
aW9uSW50ZXJ2YWwKKyAgICAvLyBzZWNvbmRzIG9sZC4gIElmIHRoZSBjYWNoZSBpcyBleHBpcmVk
IGl0IGdldHMgZmx1c2hlZCBoZXJlLgorICAgIGlmIChSZWZQdHI8Q2FjaGVkUGFnZT4gY2FjaGVk
UGFnZSA9IHBhZ2VDYWNoZSgpLT5nZXQoaXRlbSkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAv
LyBGSVhNRTogMTgwMCBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCwgaXQgc2hvdWxkIGNvbWUgZnJv
bQorICAgICAgICAvLyBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5
IGluIFdlYktpdC4KKyAgICAgICAgLy8gT3Igd2Ugc2hvdWxkIHJlbW92ZSBXZWJLaXRCYWNrRm9y
d2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5LgorICAgICAgICBpZiAoY3VycmVudFRpbWUo
KSAtIGNhY2hlZFBhZ2UtPnRpbWVTdGFtcCgpIDw9IDE4MDApIHsKKyAgICAgICAgICAgIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIoY2FjaGVkUGFnZS0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZFR5cGUs
IDApOyAgIAorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBMT0coUGFnZUNhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9y
d2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaGlzdG9yeSgpLT5w
cm92aXNpb25hbEl0ZW0oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKGl0ZW0pOworICAgIH0KIAogICAgIEtVUkwgaXRlbVVSTCA9
IGl0ZW0tPnVybCgpOwogICAgIEtVUkwgaXRlbU9yaWdpbmFsVVJMID0gaXRlbS0+b3JpZ2luYWxV
UkwoKTsKQEAgLTM2NzMsMTM4ICszNzAxLDk2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVt
KEhpc3RvcnlJdGVtKiAKICAgICAgICAgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCktPnVy
bCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpdGVtLT5mb3JtRGF0YSgpOwog
Ci0gICAgLy8gQXJlIHdlIG5hdmlnYXRpbmcgdG8gYW4gYW5jaG9yIHdpdGhpbiB0aGUgcGFnZT8K
LSAgICAvLyBOb3RlIGlmIHdlIGhhdmUgY2hpbGQgZnJhbWVzIHdlIGRvIGEgcmVhbCByZWxvYWQs
IHNpbmNlIHRoZSBjaGlsZCBmcmFtZXMgbWlnaHQgbm90Ci0gICAgLy8gbWF0Y2ggb3VyIGN1cnJl
bnQgZnJhbWUgc3RydWN0dXJlLCBvciB0aGV5IG1pZ2h0IG5vdCBoYXZlIHRoZSByaWdodCBjb250
ZW50LiAgV2UgY291bGQKLSAgICAvLyBjaGVjayBmb3IgYWxsIHRoYXQgYXMgYW4gYWRkaXRpb25h
bCBvcHRpbWl6YXRpb24uCi0gICAgLy8gV2UgYWxzbyBkbyBub3QgZG8gYW5jaG9yLXN0eWxlIG5h
dmlnYXRpb24gaWYgd2UncmUgcG9zdGluZyBhIGZvcm0gb3IgbmF2aWdhdGluZyBmcm9tCi0gICAg
Ly8gYSBwYWdlIHRoYXQgd2FzIHJlc3VsdGVkIGZyb20gYSBmb3JtIHBvc3QuCi0gICAgYm9vbCBz
aG91bGRTY3JvbGwgPSAhZm9ybURhdGEgJiYgIShoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkgJiYg
aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5mb3JtRGF0YSgpKSAmJiBoaXN0b3J5KCktPnVybHNN
YXRjaEl0ZW0oaXRlbSk7Ci0KLSNpZiBFTkFCTEUoV01MKQotICAgIC8vIEFsbCBXTUwgZGVja3Mg
c2hvdWxkIGdvIHRocm91Z2ggdGhlIHJlYWwgbG9hZCBtZWNoYW5pc20sIG5vdCB0aGUgc2Nyb2xs
LXRvLWFuY2hvciBjb2RlCi0gICAgaWYgKGZyYW1lQ29udGFpbnNXTUxDb250ZW50KG1fZnJhbWUp
KQotICAgICAgICBzaG91bGRTY3JvbGwgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKHNob3Vs
ZFNjcm9sbCkgewotICAgICAgICAvLyBNdXN0IGRvIHRoaXMgbWFpbnRlbmFuY2UgaGVyZSwgc2lu
Y2Ugd2UgZG9uJ3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxvYWQKLSAgICAgICAgaGlzdG9y
eSgpLT5zYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oaGlzdG9yeSgpLT5jdXJy
ZW50SXRlbSgpKTsKLQotICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmll
dygpKQotICAgICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwotCi0g
ICAgICAgIGhpc3RvcnkoKS0+c2V0Q3VycmVudEl0ZW0oaXRlbSk7CisgICAgYm9vbCBhZGRlZEV4
dHJhRmllbGRzID0gZmFsc2U7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaXRlbVVSTCk7
CiAKLSAgICAgICAgLy8gRklYTUU6IEZvcm0gc3RhdGUgbWlnaHQgbmVlZCB0byBiZSBzYXZlZCBo
ZXJlIHRvby4KLQotICAgICAgICAvLyBXZSBhbHdheXMgY2FsbCBzY3JvbGxUb0FuY2hvciBoZXJl
LCBldmVuIGlmIHRoZSBVUkwgZG9lc24ndCBoYXZlIGFuCi0gICAgICAgIC8vIGFuY2hvciBmcmFn
bWVudC4gVGhpcyBpcyBzbyB3ZSdsbCBrZWVwIHRoZSBXZWJDb3JlIEZyYW1lJ3MgVVJMIHVwLXRv
LWRhdGUuCi0gICAgICAgIHNjcm9sbFRvQW5jaG9yKGl0ZW0tPnVybCgpKTsKKyAgICBpZiAoIWl0
ZW0tPnJlZmVycmVyKCkuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVy
KGl0ZW0tPnJlZmVycmVyKCkpOwogICAgIAotICAgICAgICAvLyBtdXN0IGRvIHRoaXMgbWFpbnRl
bmFuY2UgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxvYWQK
LSAgICAgICAgaGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsK
KyAgICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNoZSwg
d2UgbWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFj
dGlvbjsKKyAgICBpZiAoZm9ybURhdGEpIHsKKyAgICAgICAgZm9ybURhdGEtPmdlbmVyYXRlRmls
ZXMobV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOworCisgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZv
cm1EYXRhKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS0+Zm9ybUNv
bnRlbnRUeXBlKCkpOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS0+cmVmZXJyZXIoKSk7
CisgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdpbi0+
dG9TdHJpbmcoKSk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMg
dG8gdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlIE9yaWdpbiBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBG
b3JtRGF0YSBjYXNlLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTk0IGZvciBtb3JlIGRpc2N1c3Npb24uCisgICAgICAgIGFkZEV4dHJh
RmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsKKyAg
ICAgICAgYWRkZWRFeHRyYUZpZWxkcyA9IHRydWU7CiAgICAgICAgIAotICAgICAgICAvLyBGYWtl
IHRoZSBVUkwgY2hhbmdlIGJ5IHVwZGF0aW5nIHRoZSBkYXRhIHNvdXJjZSdzIHJlcXVlc3QuICBU
aGlzIHdpbGwgbm8gbG9uZ2VyCi0gICAgICAgIC8vIGJlIG5lY2Vzc2FyeSBpZiB3ZSBkbyB0aGUg
YmV0dGVyIGZpeCBkZXNjcmliZWQgYWJvdmUuCi0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnJl
cGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGl0ZW1VUkwpOwotCi0gICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOworICAgICAgICAvLyBG
SVhNRTogU2xpZ2h0IGhhY2sgdG8gdGVzdCBpZiB0aGUgTlNVUkwgY2FjaGUgY29udGFpbnMgdGhl
IHBhZ2Ugd2UncmUgZ29pbmcgdG8uCisgICAgICAgIC8vIFdlIHdhbnQgdG8ga25vdyB0aGlzIGJl
Zm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUsIHNpbmNlIGl0IGFmZmVjdHMgd2hl
dGhlciAKKyAgICAgICAgLy8gd2Ugc2hvdyB0aGUgRG9Zb3VSZWFsbHlXYW50VG9SZXBvc3QgbmFn
LgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIHRyaWNrIGhhcyBhIHNtYWxsIGJ1ZyAoMzEy
Mzg5Mykgd2hlcmUgd2UgbWlnaHQgZmluZCBhIGNhY2hlIGhpdCwgYnV0IHRoZW4KKyAgICAgICAg
Ly8gaGF2ZSB0aGUgaXRlbSB2YW5pc2ggd2hlbiB3ZSB0cnkgdG8gdXNlIGl0IGluIHRoZSBlbnN1
aW5nIG5hdi4gIFRoaXMgc2hvdWxkIGJlCisgICAgICAgIC8vIGV4dHJlbWVseSByYXJlLCBidXQg
aW4gdGhhdCBjYXNlIHRoZSB1c2VyIHdpbGwgZ2V0IGFuIGVycm9yIG9uIHRoZSBuYXZpZ2F0aW9u
LgogICAgICAgICAKLSAgICAgICAgLy8gRnJhbWVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWQo
KSB0ZWxscyB0aGUgaW50ZXJuYWwgbG9hZCBkZWxlZ2F0ZSB0aGUgbG9hZCBmaW5pc2hlZCB3aXRo
IG5vIGVycm9yCi0gICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkKCk7CisgICAgICAgIGlm
IChSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUocmVxdWVzdCwgbV9mcmFtZSkpCisg
ICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxvYWRUeXBlLCBm
YWxzZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGlj
eShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0
aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgaXRlbSBzbyB3ZSBj
YW4gdHJhdmVyc2UgYW55IGNoaWxkIGl0ZW1zIGFzIGNoaWxkIGZyYW1lcyBsb2FkCi0gICAgICAg
IGhpc3RvcnkoKS0+c2V0UHJvdmlzaW9uYWxJdGVtKGl0ZW0pOwotCi0gICAgICAgIGJvb2wgaW5Q
YWdlQ2FjaGUgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlmIHdlJ2xsIGJl
IHVzaW5nIHRoZSBwYWdlIGNhY2hlLiAgV2Ugb25seSB1c2UgdGhlIHBhZ2UgY2FjaGUKLSAgICAg
ICAgLy8gaWYgb25lIGV4aXN0cyBhbmQgaXQgaXMgbGVzcyB0aGFuIF9iYWNrRm9yd2FyZENhY2hl
RXhwaXJhdGlvbkludGVydmFsCi0gICAgICAgIC8vIHNlY29uZHMgb2xkLiAgSWYgdGhlIGNhY2hl
IGlzIGV4cGlyZWQgaXQgZ2V0cyBmbHVzaGVkIGhlcmUuCi0gICAgICAgIGlmIChSZWZQdHI8Q2Fj
aGVkUGFnZT4gY2FjaGVkUGFnZSA9IHBhZ2VDYWNoZSgpLT5nZXQoaXRlbSkpIHsKLSAgICAgICAg
ICAgIGRvdWJsZSBpbnRlcnZhbCA9IGN1cnJlbnRUaW1lKCkgLSBjYWNoZWRQYWdlLT50aW1lU3Rh
bXAoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRklYTUU6IDE4MDAgc2hvdWxkIG5v
dCBiZSBoYXJkY29kZWQsIGl0IHNob3VsZCBjb21lIGZyb20KLSAgICAgICAgICAgIC8vIFdlYktp
dEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkgaW4gV2ViS2l0LgotICAgICAg
ICAgICAgLy8gT3Igd2Ugc2hvdWxkIHJlbW92ZSBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJh
dGlvbkludGVydmFsS2V5LgotICAgICAgICAgICAgaWYgKGludGVydmFsIDw9IDE4MDApIHsKLSAg
ICAgICAgICAgICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGNhY2hlZFBhZ2UtPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRUeXBlLCAwKTsgICAKLSAgICAgICAgICAgICAgICBpblBhZ2VDYWNoZSA9
IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExPRyhQYWdlQ2Fj
aGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJl
Y2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBoaXN0b3J5KCktPnByb3Zpc2lvbmFsSXRl
bSgpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgcGFn
ZUNhY2hlKCktPnJlbW92ZShpdGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChs
b2FkVHlwZSkgeworICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkOgorICAgICAg
ICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbjoKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2s6Cisg
ICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2libGU6Cisg
ICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3YXJkOgorICAgICAgICAgICAgY2FzZSBG
cmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkOgorICAgICAgICAgICAgICAgIGlmIChpdGVt
VVJMLnByb3RvY29sKCkgIT0gImh0dHBzIikKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVTdGFuZGFyZDoKKyAgICAgICAg
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVNh
bWU6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIWluUGFnZUNhY2hlKSB7
Ci0gICAgICAgICAgICBib29sIGFkZGVkRXh0cmFGaWVsZHMgPSBmYWxzZTsKLSAgICAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGl0ZW1VUkwpOwogCi0gICAgICAgICAgICBpZiAoIWl0
ZW0tPnJlZmVycmVyKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIoaXRlbS0+cmVmZXJyZXIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IElmIHRoaXMgd2FzIGEgcmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBtaWdo
dCB0cnkgdG8gcmVwb3N0IHRoZSBmb3JtLgotICAgICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBh
Y3Rpb247Ci0gICAgICAgICAgICBpZiAoZm9ybURhdGEpIHsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBmb3JtRGF0YS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRl
bU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWFk
ZGVkRXh0cmFGaWVsZHMpCisgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3Qs
IG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsKIAotICAgICAgICAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgiUE9TVCIpOwotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoZm9ybURhdGEpOwotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBl
KGl0ZW0tPmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoaXRlbS0+cmVmZXJyZXIoKSk7Ci0gICAgICAgICAgICAgICAgYWRkSFRUUE9yaWdpbklmTmVl
ZGVkKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKLSAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMgdG8gdGhlIHJlcXVl
c3QgYWZ0ZXIgdGhlIE9yaWdpbiBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBGb3JtRGF0YSBjYXNl
LgotICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxOTQgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgICAgICBhZGRF
eHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCBtX2xvYWRUeXBlLCB0cnVlLCBmb3JtRGF0YSk7
Ci0gICAgICAgICAgICAgICAgYWRkZWRFeHRyYUZpZWxkcyA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRvIHRlc3QgaWYgdGhl
IE5TVVJMIGNhY2hlIGNvbnRhaW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRvLgotICAgICAgICAg
ICAgICAgIC8vIFdlIHdhbnQgdG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xp
Y3kgZGVsZWdhdGUsIHNpbmNlIGl0IGFmZmVjdHMgd2hldGhlciAKLSAgICAgICAgICAgICAgICAv
LyB3ZSBzaG93IHRoZSBEb1lvdVJlYWxseVdhbnRUb1JlcG9zdCBuYWcuCi0gICAgICAgICAgICAg
ICAgLy8KLSAgICAgICAgICAgICAgICAvLyBUaGlzIHRyaWNrIGhhcyBhIHNtYWxsIGJ1ZyAoMzEy
Mzg5Mykgd2hlcmUgd2UgbWlnaHQgZmluZCBhIGNhY2hlIGhpdCwgYnV0IHRoZW4KLSAgICAgICAg
ICAgICAgICAvLyBoYXZlIHRoZSBpdGVtIHZhbmlzaCB3aGVuIHdlIHRyeSB0byB1c2UgaXQgaW4g
dGhlIGVuc3VpbmcgbmF2LiAgVGhpcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAvLyBleHRy
ZW1lbHkgcmFyZSwgYnV0IGluIHRoYXQgY2FzZSB0aGUgdXNlciB3aWxsIGdldCBhbiBlcnJvciBv
biB0aGUgbmF2aWdhdGlvbi4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
UmVzb3VyY2VIYW5kbGU6OndpbGxMb2FkRnJvbUNhY2hlKHJlcXVlc3QsIG1fZnJhbWUpKQotICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxvYWRU
eXBlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAgICAg
ICAgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmlnYXRp
b25UeXBlRm9ybVJlc3VibWl0dGVkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkOgotICAgICAgICAgICAgICAgICAgICBj
YXNlIEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luOgotICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlQmFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlQmFj
a1dNTERlY2tOb3RBY2Nlc3NpYmxlOgotICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9h
ZFR5cGVGb3J3YXJkOgotICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJbmRl
eGVkQmFja0ZvcndhcmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVVSTC5wcm90
b2NvbCgpICE9ICJodHRwcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlU3Rh
bmRhcmQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVTYW1lOgotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihy
ZXF1ZXN0LCBhY3Rpb24sIGZhbHNlLCBsb2FkVHlwZSwgMCk7Cit9CiAKLSAgICAgICAgICAgICAg
ICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1PcmlnaW5hbFVSTCwgbG9hZFR5cGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFhZGRl
ZEV4dHJhRmllbGRzKQotICAgICAgICAgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJl
cXVlc3QsIG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsKKy8vIExvYWRzIGNvbnRlbnQgaW50
byB0aGlzIGZyYW1lLCBhcyBzcGVjaWZpZWQgYnkgaGlzdG9yeSBpdGVtCit2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkK
K3sKKyAgICAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaW4gdGhlIGZvbGxvd2lu
ZyBjYXNlczoKKyAgICAvLyAtIFRoZSBIaXN0b3J5SXRlbSBoYXMgYSBoaXN0b3J5IHN0YXRlIG9i
amVjdAorICAgIC8vIC0gTmF2aWdhdGluZyB0byBhbiBhbmNob3Igd2l0aGluIHRoZSBwYWdlLCB3
aXRoIG5vIGZvcm0gZGF0YSBzdG9yZWQgb24gdGhlIHRhcmdldCBpdGVtIG9yIHRoZSBjdXJyZW50
IGhpc3RvcnkgZW50cnksCisgICAgLy8gICBhbmQgdGhlIFVSTHMgaW4gdGhlIGZyYW1lIHRyZWUg
bWF0Y2ggdGhlIGhpc3RvcnkgaXRlbSBmb3IgZnJhZ21lbnQgc2Nyb2xsaW5nLgorICAgIGJvb2wg
c2FtZURvY3VtZW50TmF2aWdhdGlvbiA9ICghaXRlbS0+Zm9ybURhdGEoKSAmJiAhKGhpc3Rvcnko
KS0+Y3VycmVudEl0ZW0oKSAmJiBoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCktPmZvcm1EYXRhKCkp
ICYmIGhpc3RvcnkoKS0+dXJsc01hdGNoSXRlbShpdGVtKSkgfHwgaXRlbS0+ZG9jdW1lbnQoKSA9
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogCi0gICAgICAgICAgICBsb2FkV2l0aE5hdmlnYXRpb25B
Y3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBmYWxzZSwgbG9hZFR5cGUsIDApOwotICAgICAgICB9Ci0g
ICAgfQorI2lmIEVOQUJMRShXTUwpCisgICAgLy8gQWxsIFdNTCBkZWNrcyBzaG91bGQgZ28gdGhy
b3VnaCB0aGUgcmVhbCBsb2FkIG1lY2hhbmlzbSwgbm90IHRoZSBzY3JvbGwtdG8tYW5jaG9yIGNv
ZGUKKyAgICAvLyBGSVhNRTogV2h5IGRvIFdNTCBkZWNrcyBoYXZlIHRoaXMgZGlmZmVyZW50IGJl
aGF2aW9yPworICAgIC8vIEFyZSBXTUwgZGVja3MgaW5jb21wYXRpYmxlIHdpdGggSFRNTDUgcHVz
aFN0YXRlL3JlcGxhY2VTdGF0ZSB3aGljaCByZXF1aXJlIGludGVyLWRvY3VtZW50IGhpc3Rvcnkg
bmF2aWdhdGlvbnM/CisgICAgLy8gU2hvdWxkIHRoaXMgbmV3IEFQSSBiZSBkaXNhYmxlZCBmb3Ig
V01MIHBhZ2VzLCBvciBkb2VzIFdNTCBuZWVkIHRvIHVwZGF0ZSB0aGVpciBtZWNoYW5pc20gdG8g
YWN0IGxpa2Ugbm9ybWFsIGxvYWRzPworICAgIC8vIElmIHNjcm9sbC10by1hbmNob3IgbmF2aWdh
dGlvbnMgd2VyZSBicm9rZW4gZm9yIFdNTCBhbmQgcmVxdWlyZWQgdGhlbSB0byBoYXZlIGRpZmZl
cmVudCBsb2FkaW5nIGJlaGF2aW9yLCB0aGVuICAKKyAgICAvLyBzdGF0ZSBvYmplY3QgbG9hZHMg
YXJlIGNlcnRhaW5seSBhbHNvIGJyb2tlbiBmb3IgdGhlbS4KKyAgICBpZiAoZnJhbWVDb250YWlu
c1dNTENvbnRlbnQobV9mcmFtZSkpCisgICAgICAgIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBm
YWxzZTsKKyNlbmRpZgorCisgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCisgICAgICAg
IG5hdmlnYXRlV2l0aGluRG9jdW1lbnQoaXRlbSk7CisgICAgZWxzZQorICAgICAgICBuYXZpZ2F0
ZVRvRGlmZmVyZW50RG9jdW1lbnQoaXRlbSwgbG9hZFR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTE1
NDUpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3Myw3IEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTY3JpcHRTdHJpbmc7
CiBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwpAQCAtMzQ1LDYgKzM0Niw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBsb2FkUGx1Z2luKFJlbmRlclBhcnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKICAg
ICAKKyAgICB2b2lkIG5hdmlnYXRlV2l0aGluRG9jdW1lbnQoSGlzdG9yeUl0ZW0qKTsKKyAgICB2
b2lkIG5hdmlnYXRlVG9EaWZmZXJlbnREb2N1bWVudChIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5
cGUpOworICAgIAogICAgIGJvb2wgbG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCk7
CiAgICAgdm9pZCBjYWNoZVBhZ2VGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopOwogICAgIHZv
aWQgcGFnZUhpZGRlbigpOwpAQCAtNDE5LDcgKzQyMyw3IEBAIHByaXZhdGU6CiAKICAgICBGcmFt
ZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCi0gICAgdm9pZCBzY3Jv
bGxUb0FuY2hvcihjb25zdCBLVVJMJik7CisgICAgdm9pZCBsb2FkSW5TYW1lRG9jdW1lbnQoY29u
c3QgS1VSTCYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdO
YXZpZ2F0aW9uKTsKIAogICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwogCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzEx
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZh
bCwgZG91YmxlIGZpcmVEYXRlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw3ICs0MDIsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgfQogfQogCi12b2lk
IEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JBbmNob3JTY3JvbGwoKQordm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7CiAgICAgaWYg
KG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTYyNCw0ICs2MjQsNDEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0Zvcndh
cgogICAgIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5hZGRJdGVtKGl0ZW0pOwogfQogCit2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIEFTU0VS
VChwYWdlKTsKKyAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAg
QVNTRVJUKG1haW5GcmFtZSk7CisKKyAgICAvLyBHZXQgYSBIaXN0b3J5SXRlbSB0cmVlIGZvciB0
aGUgY3VycmVudCBmcmFtZSB0cmVlLgorICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNy
ZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICAKKyAgICAvLyBPdmVycmlkZSBkYXRh
IGluIHRoZSB0YXJnZXQgaXRlbSB0byByZWZsZWN0IHRoZSBwdXNoU3RhdGUoKSBhcmd1bWVudHMu
CisgICAgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0gPSBpdGVtLT50YXJnZXRJdGVtKCk7CisgICAg
QVNTRVJUKHRhcmdldEl0ZW0tPmlzVGFyZ2V0SXRlbSgpKTsKKyAgICB0YXJnZXRJdGVtLT5zZXRE
b2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICB0YXJnZXRJdGVtLT5zZXRUaXRsZSh0
aXRsZSk7CisgICAgdGFyZ2V0SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOworICAg
IHRhcmdldEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOworICAgIAorICAgIHBhZ2UtPmJh
Y2tGb3J3YXJkTGlzdCgpLT5wdXNoU3RhdGVJdGVtKGl0ZW0ucmVsZWFzZSgpKTsKK30KKwordm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCit7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBB
U1NFUlQocGFnZSk7CisgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnQgPSBwYWdlLT5iYWNrRm9yd2Fy
ZExpc3QoKS0+Y3VycmVudEl0ZW0oKTsKKyAgICBBU1NFUlQoY3VycmVudCk7CisgICAgCisgICAg
QVNTRVJUKGN1cnJlbnQtPmRvY3VtZW50KCkgPT0gMCB8fCBjdXJyZW50LT5kb2N1bWVudCgpID09
IG1fZnJhbWUtPmRvY3VtZW50KCkpOworICAgIGN1cnJlbnQtPnNldERvY3VtZW50KG1fZnJhbWUt
PmRvY3VtZW50KCkpOworICAgIAorICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgY3VycmVudC0+c2V0VVJMU3RyaW5nKHVybFN0cmluZyk7CisgICAgY3VycmVudC0+c2V0VGl0
bGUodGl0bGUpOworICAgIGN1cnJlbnQtPnNldFN0YXRlT2JqZWN0KHN0YXRlT2JqZWN0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOwogCiBjbGFzcyBIaXN0b3J5Q29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUZvclJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpOwogICAgIHZvaWQgdXBkYXRlRm9yQ2xp
ZW50UmVkaXJlY3QoKTsKICAgICB2b2lkIHVwZGF0ZUZvckNvbW1pdCgpOwotICAgIHZvaWQgdXBk
YXRlRm9yQW5jaG9yU2Nyb2xsKCk7CisgICAgdm9pZCB1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21wbGV0ZWQoKTsKIAogICAg
IEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEl0ZW0u
Z2V0KCk7IH0KQEAgLTc1LDYgKzc2LDkgQEAgcHVibGljOgogICAgIEhpc3RvcnlJdGVtKiBwcm92
aXNpb25hbEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKik7CiAKKyAgICB2b2lkIHB1
c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJlcGxhY2VTdGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsKTsKKwogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVh
dGVJdGVtKGJvb2wgdXNlT3JpZ2luYWwpOwogICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwpJbmRl
eDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OCw5ICsyNDgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAKICAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYmVmb3JldW5sb2FkKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihibHVyKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihjYW5wbGF5KTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjYW5w
bGF5dGhyb3VnaCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2hh
bmdlKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbGljayk7Cisg
ICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29udGV4dG1lbnUpOwogICAg
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRibGNsaWNrKTsKICAgICAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkcmFnKTsKICAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihkcmFnZW5kKTsKQEAgLTI1OSwxMyArMjYzLDIyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihkcmFnb3Zlcik7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZHJh
Z3N0YXJ0KTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkcm9wKTsK
KyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkdXJhdGlvbmNoYW5nZSk7
CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW1wdGllZCk7CisgICAg
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5kZWQpOwogICAgICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKICAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihmb2N1cyk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoaGFzaGNoYW5nZSk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoaW5wdXQpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGludmFsaWQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGtleWRv
d24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGtleXByZXNzKTsK
ICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihrZXl1cCk7CiAgICAgICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobG9hZCk7CisgICAgICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIobG9hZGVkZGF0YSk7CisgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIobG9hZGVkbWV0YWRhdGEpOworICAgICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGxvYWRzdGFydCk7CisgICAgICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIobW91c2Vkb3duKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihtb3VzZW1vdmUpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKG1vdXNlb3V0KTsKQEAgLTI3Niw0MSArMjg5LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvbmxpbmUpOwogICAgICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHBhZ2VoaWRlKTsKICAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihwYWdlc2hvdyk7CisgICAgICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIocGF1c2UpOworICAgICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHBsYXkpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHBsYXlpbmcpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHBvcHN0YXRlKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihwcm9n
cmVzcyk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmF0ZWNoYW5n
ZSk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVzZXQpOwogICAg
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlc2l6ZSk7CiAgICAgICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2Nyb2xsKTsKICAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihzZWFyY2gpOworICAgICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHNlZWtlZCk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoc2Vla2luZyk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoc2VsZWN0KTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdGFs
bGVkKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdG9yYWdlKTsK
ICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdWJtaXQpOwotICAgICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubG9hZCk7Ci0gICAgICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmVmb3JldW5sb2FkKTsKLSAgICAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjYW5wbGF5KTsKLSAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihjYW5wbGF5dGhyb3VnaCk7Ci0gICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoZHVyYXRpb25jaGFuZ2UpOwotICAgICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGVtcHRpZWQpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihsb2FkZWRkYXRhKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihsb2FkZWRtZXRhZGF0YSk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIocGF1c2UpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHBs
YXkpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHBsYXlpbmcpOwot
ICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJhdGVjaGFuZ2UpOwotICAg
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHNlZWtlZCk7Ci0gICAgICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2Vla2luZyk7CisgICAgICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3VzcGVuZCk7CiAgICAgICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIodGltZXVwZGF0ZSk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIodW5sb2FkKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih2b2x1bWVjaGFuZ2UpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHdhaXRpbmcpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGxvYWRzdGFydCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0YmVnaW5mdWxsc2NyZWVuKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRlbmRmdWxsc2NyZWVuKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihwcm9ncmVzcyk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoc3RhbGxlZCk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
c3VzcGVuZCk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoaW5wdXQp
OwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwotICAg
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbnRleHRtZW51KTsKLSAgICAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihpbnZhbGlkKTsKKwogI2lmIEVOQUJM
RShPUklFTlRBVElPTl9FVkVOVFMpCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIob3JpZW50YXRpb25jaGFuZ2UpOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2
aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjUyLDYgKzI1Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbnBhdXNlOwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bnBsYXk7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucGxheWluZzsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wb3BzdGF0ZTsKICAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25yYXRlY2hhbmdlOwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlc2l6
ZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvSGlzdG9yeS5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhpc3RvcnkuaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAi
SGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTc3LDQgKzc5LDQxIEBAIHZvaWQgSGlzdG9yeTo6Z28oaW50IGRpc3RhbmNlKQogICAgIG1f
ZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oZGlz
dGFuY2UpOwogfQogCitLVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQoreworICAgIEtVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmxvYWRlcigpLT5iYXNlVVJM
KCk7CisgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBiYXNlVVJM
OworICAgICAgICAKKyAgICBLVVJMIGFic29sdXRlVVJMKGJhc2VVUkwsIHVybFN0cmluZyk7Cisg
ICAgaWYgKCFhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgCisgICAgaWYgKGFic29sdXRlVVJMLnN0cmluZygpLmxlZnQoYWJzb2x1dGVVUkwucGF0aFN0
YXJ0KCkpICE9IGJhc2VVUkwuc3RyaW5nKCkubGVmdChiYXNlVVJMLnBhdGhTdGFydCgpKSkKKyAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAKKyAgICByZXR1cm4gYWJzb2x1dGVVUkw7Cit9CisK
K3ZvaWQgSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIFN0YXRlT2JqZWN0VHlwZSBzdGF0ZU9iamVjdFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2ZyYW1l
LT5wYWdlKCkpOworICAgIAorICAgIEtVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmlu
Zyk7CisgICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdGF0ZU9iamVjdFR5cGUg
PT0gU3RhdGVPYmplY3RQdXNoKQorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgp
LT5wdXNoU3RhdGUoZGF0YSwgdGl0bGUsIGZ1bGxVUkwuc3RyaW5nKCkpOworICAgIGVsc2UgaWYg
KHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVjdFJlcGxhY2UpCisgICAgICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5oaXN0b3J5KCktPnJlcGxhY2VTdGF0ZShkYXRhLCB0aXRsZSwgZnVsbFVSTC5z
dHJpbmcoKSk7CisgICAgICAgICAgICAKKyAgICBpZiAoIXVybFN0cmluZy5pc0VtcHR5KCkpCisg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0
ZShmdWxsVVJMKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
YWdlL0hpc3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCShyZXZp
c2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvcGFnZS9IaXN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDMwICsyNiw0MiBAQAogI2lmbmRlZiBIaXN0b3J5X2gKICNkZWZpbmUgSGlzdG9yeV9oCiAK
KyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBG
cmFtZTsKK2NsYXNzIEZyYW1lOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3Mg
U3RyaW5nOwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgSGlzdG9yeSA6IHB1
YmxpYyBSZWZDb3VudGVkPEhpc3Rvcnk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIaXN0b3J5PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSGlz
dG9yeShmcmFtZSkpOyB9CisgICAgCisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CisgICAgdm9p
ZCBkaXNjb25uZWN0RnJhbWUoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAg
IHZvaWQgYmFjaygpOworICAgIHZvaWQgZm9yd2FyZCgpOworICAgIHZvaWQgZ28oaW50IGRpc3Rh
bmNlKTsKKworICAgIGVudW0gU3RhdGVPYmplY3RUeXBlIHsKKyAgICAgICAgU3RhdGVPYmplY3RQ
dXNoLAorICAgICAgICBTdGF0ZU9iamVjdFJlcGxhY2UKKyAgICB9OworICAgIHZvaWQgc3RhdGVP
YmplY3RBZGRlZChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdGF0ZU9iamVjdFR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIGNsYXNzIEhpc3RvcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5PiBjcmVhdGUo
RnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeShmcmFtZSkpOyB9Ci0g
ICAgICAgIAotICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBkaXNj
b25uZWN0RnJhbWUoKTsKLQotICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBiYWNrKCk7Ci0gICAgICAgIHZvaWQgZm9yd2FyZCgpOwotICAgICAgICB2b2lkIGdv
KGludCBkaXN0YW5jZSk7Citwcml2YXRlOgorICAgIEhpc3RvcnkoRnJhbWUqKTsKIAotICAgIHBy
aXZhdGU6Ci0gICAgICAgIEhpc3RvcnkoRnJhbWUqKTsKKyAgICBLVVJMIHVybEZvclN0YXRlKGNv
bnN0IFN0cmluZyYgdXJsKTsKIAotICAgICAgICBGcmFtZSogbV9mcmFtZTsKLSAgICB9OworICAg
IEZyYW1lKiBtX2ZyYW1lOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuaWRsCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFtE
b05vdENoZWNrRG9tYWluU2VjdXJpdHldIHZvaWQgYmFjaygpOwogICAgICAgICBbRG9Ob3RDaGVj
a0RvbWFpblNlY3VyaXR5XSB2b2lkIGZvcndhcmQoKTsKICAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eV0gdm9pZCBnbyhpbiBsb25nIGRpc3RhbmNlKTsKKyAgICAgICAgCisgICAgICAg
IFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwdXNoU3RhdGUoaW4gYW55
IGRhdGEsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gb3B0aW9uYWwgRE9NU3RyaW5nIHVybCkKKyAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbRG9Ob3RDaGVja0RvbWFp
blNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcmVwbGFjZVN0YXRlKGluIGFueSBkYXRhLCBpbiBET01T
dHJpbmcgdGl0bGUsIGluIG9wdGlvbmFsIERPTVN0cmluZyB1cmwpCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA1MTU0NSkK
KysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAorI2luY2x1ZGUgIkJh
Y2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNTU1N0eWxl
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTI3NywyMCArMjc4LDMwIEBAIHZv
aWQgUGFnZTo6Z29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSkKIAogdm9pZCBQYWdlOjpnb1Rv
SXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogewotICAgIC8vIEFi
b3J0IGFueSBjdXJyZW50IGxvYWQgaWYgd2UncmUgZ29pbmcgdG8gYSBoaXN0b3J5IGl0ZW0KKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0byBhbiBpdGVt
IHdpdGggaGlzdG9yeSBzdGF0ZSBmb3IgYSBEb2N1bWVudCBvdGhlciB0aGFuIHRoZQorICAgIC8v
IGN1cnJlbnQgRG9jdW1lbnQsIHRoZSBuZXcgRG9jdW1lbnQgaGFkIGJldHRlciBiZSBpbiB0aGUg
cGFnZSBjYWNoZS4KKyAgICBpZiAoaXRlbS0+c3RhdGVPYmplY3QoKSAmJiBpdGVtLT5kb2N1bWVu
dCgpICE9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBBU1NFUlQoaXRlbS0+ZG9j
dW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CisjZW5kaWYKIAotICAgIC8vIERlZmluZSB3aGF0IHRv
IGRvIHdpdGggYW55IG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbnMuIEJ5IGRlZmF1bHQgd2Ugc3Rv
cCB0aGVtIGFuZCB0ZXJtaW5hdGUgdGhlIGRhdGFiYXNlIHRocmVhZC4KLSAgICBEYXRhYmFzZVBv
bGljeSBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcDsKKyAgICAvLyBBYm9ydCBh
bnkgY3VycmVudCBsb2FkIHVubGVzcyB3ZSdyZSBuYXZpZ2F0aW5nIHRoZSBjdXJyZW50IGRvY3Vt
ZW50IHRvIGEgbmV3IHN0YXRlIG9iamVjdAorICAgIGlmICghaXRlbS0+c3RhdGVPYmplY3QoKSB8
fCBpdGVtLT5kb2N1bWVudCgpICE9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IC8vIERlZmluZSB3aGF0IHRvIGRvIHdpdGggYW55IG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbnMu
IEJ5IGRlZmF1bHQgd2Ugc3RvcCB0aGVtIGFuZCB0ZXJtaW5hdGUgdGhlIGRhdGFiYXNlIHRocmVh
ZC4KKyAgICAgICAgRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGlj
eVN0b3A7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgLy8gSWYgd2UncmUgbmF2aWdhdGlu
ZyB0aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3
ZSBkbyBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4KLSAgICBjb25zdCBLVVJMJiBjdXJyZW50
VVJMID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBjb25zdCBLVVJMJiBuZXdV
UkwgPSBpdGVtLT51cmwoKTsKLQotICAgIGlmIChuZXdVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjdXJyZW50VVJMLCBuZXdVUkwp
KQotICAgICAgICBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5Q29udGludWU7CisgICAg
ICAgIC8vIElmIHdlJ3JlIG5hdmlnYXRpbmcgdGhlIGhpc3RvcnkgdmlhIGEgZnJhZ21lbnQgb24g
dGhlIHNhbWUgZG9jdW1lbnQsIHRoZW4gd2UgZG8gbm90IHdhbnQgdG8gc3RvcCBkYXRhYmFzZXMu
CisgICAgICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwgPSBtX21haW5GcmFtZS0+bG9hZGVyKCkt
PnVybCgpOworICAgICAgICBjb25zdCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51cmwoKTsKKyAgICAK
KyAgICAgICAgaWYgKG5ld1VSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKGN1cnJlbnRVUkwsIG5ld1VSTCkpCisgICAgICAgICAgICBk
YXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5Q29udGludWU7CiAjZW5kaWYKLSAgICBtX21h
aW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKGRhdGFiYXNlUG9saWN5KTsKKworICAg
ICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKGRhdGFiYXNlUG9saWN5
KTsKKyAgICB9CisgICAgICAgIAogICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgp
LT5nb1RvSXRlbShpdGVtLCB0eXBlKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1
MTU4MykKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAwOS0xMi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcyMTQyMzY+IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVt
ZW50IEhUTUw1IHN0YXRlIG9iamVjdCBoaXN0b3J5IEFQSQorCisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKToKKyAgICAgICAg
KiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMDktMTItMDEgIFBldGVyIEthc3Rp
bmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksNiArNTg5LDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEMKICAgICAgICAgd2ViVmlldy0+Y2xp
ZW50KCktPmRpZFN0b3BMb2FkaW5nKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKQoreworICAgIC8vIEZJ
WE1FCit9CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQog
ewogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxD
bGllbnRSZWRpcmVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91Ymxl
IGZpcmVEYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVj
dEZvclBhZ2VGb3JGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKSW5kZXg6IFdlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA1MTU4MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMDktMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83MjE0MjM2PiBhbmQgaHR0cDovL3dlYmtpdC5vcmcvYi8zMjA1MiAtIEltcGxlbWVu
dCBIVE1MNSBzdGF0ZSBvYmplY3QgaGlzdG9yeSBBUEkKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMDkt
MTItMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDUxNTQ1KQor
KysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1Nyw2ICs2NTcsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDaGFuZwogICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViVmll
dyksICJ1cmkiKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91
YmxlLCBkb3VibGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2UoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
U3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTE1ODMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTEyLTAyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIxNDIzNj4gYW5kIGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzIwNTIgLSBJbXBsZW1lbnQgSFRNTDUgc3RhdGUgb2JqZWN0IGhpc3RvcnkgQVBJCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9y
RnJhbWUpOgorCisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGluZy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg6
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nh
Y2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwogMjAwOS0xMi0wMSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3Vi
bGUgZmlyZURhdGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZVN0YXRlT2Jq
ZWN0Rm9yUGFnZUZvckZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3Nl
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZp
c2lvbiA1MTU0NSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzOCw2ICs1MzgsMTQgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKCkKK3sg
ICAgCisgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7
CisgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRh
dGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmll
dyk7CisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdl
Rm9yRnJhbWVGdW5jKQorICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRp
b25zLT5kaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lOiksIG1f
d2ViRnJhbWUuZ2V0KCkpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFdpbGxDbG9zZSgpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7ICAgCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvCiAgICAgSU1QIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVGdW5jOwog
ICAgIElNUCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxEZWxheUZpcmVEYXRlRm9yRnJh
bWVGdW5jOwogICAgIElNUCBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZUZ1bmM7
CisgICAgSU1QIGRpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lRnVuYzsKICAgICBJ
TVAgd2lsbENsb3NlRnJhbWVGdW5jOwogICAgIElNUCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lRnVuYzsKICAgICBJTVAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jOwpJbmRleDog
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAko
cmV2aXNpb24gNTE1NDUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQgKzM5LDYgQEAKIAogLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQ7CiAK
Ky0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2hhbmdlU3RhdGVPYmplY3RG
b3JQYWdlRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CisKIEBlbmQKSW5kZXg6IFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUwLDYgKzEzNTAsNyBAQCBzdGF0aWMgaW5saW5lIElN
UCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAKICAgICBjYWNoZS0+ZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWU6KSk7Cisg
ICAgY2FjaGUtPmRpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lRnVuYyA9IGdldE1l
dGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQ
YWdlRm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVG
dW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRDbGVhcldpbmRv
d09iamVjdDpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZUluU2NyaXB0V29ybGRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lOmluU2NyaXB0V29ybGQ6KSk7CiAgICAg
Y2FjaGUtPmRpZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0Rm9yRnJhbWVGdW5jID0gZ2V0TWV0
aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRDbGVhckluc3BlY3RvcldpbmRvd09i
amVjdDpmb3JGcmFtZTopKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTE1ODMpCisrKyBXZWJLaXQvcXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTItMDIgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE0MjM2PiBhbmQgaHR0cDov
L3dlYmtpdC5vcmcvYi8zMjA1MiAtIEltcGxlbWVudCBIVE1MNSBzdGF0ZSBvYmplY3QgaGlzdG9y
eSBBUEkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDA5LTEyLTAxICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gVHJ5IHRvIGZp
eCBRdCBidWlsZC4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiAr
MzA0LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGEKICAgICBt
X3dlYkZyYW1lLT5wYWdlKCktPmQtPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBh
Z2VGb3JGcmFtZSgpCit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAg
ICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lXG4iLCBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7
CisgICAgICAgIAorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQogewpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRv
dWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNTgzKQorKysgV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0x
Mi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMTQyMzY+
IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVtZW50IEhUTUw1IHN0YXRlIG9i
amVjdCBoaXN0b3J5IEFQSQorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVs
ZWdhdGVQcml2YXRlMi5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDA5LTEyLTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gVHJ5IHRvIGZpeCB3
aW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZVByaXZhdGUyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRsCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDQgKzQ4LDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxl
Z2F0ZVByaXZhdGUyIAogICAgIEhSRVNVTFQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFtpbl0gSVdl
YlZpZXcqIHNlbmRlciwgW2luXSBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7CiAKICAgICBI
UkVTVUxUIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVJblNjcmlwdFdvcmxkKFtpbl0gSVdl
YlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSwgW2luXSBJV2ViU2NyaXB0V29y
bGQqKTsKKworICAgIEhSRVNVTFQgZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUo
W2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKIH0KSW5kZXg6
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNiArMzA2LDIwIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2gKICAgICAgICAgZnJhbWVMb2Fk
RGVsZWdhdGUtPmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKHdlYlZpZXcsIG1f
d2ViRnJhbWUpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZVN0YXRlT2JqZWN0Rm9yUGFnZSgpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2Vi
RnJhbWUtPndlYlZpZXcoKTsKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0
ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVM
b2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2Fk
RGVsZWdhdGVQcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9h
ZERlbGVnYXRlUHJpdmF0ZTI+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjIoUXVlcnksIGZyYW1lTG9h
ZERlbGVnYXRlUHJpdik7CisgICAgaWYgKCFmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRDaGFuZ2VTdGF0ZU9i
amVjdEZvclBhZ2VGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQogewogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MTU0NSkKKysr
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50
ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlU3RhdGVPYmplY3RGb3JQYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogV2Vi
S2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1MTU4MykKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAwOS0xMi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcyMTQyMzY+IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVt
ZW50IEhUTUw1IHN0YXRlIG9iamVjdCBoaXN0b3J5IEFQSQorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUp
OgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDA5
LTExLTIzICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lv
biA1MTU0NSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGEKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdl
Rm9yRnJhbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQogewpJbmRleDogV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gNTE1NDUpCisrKyBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDYgKzk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3Vi
bGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNjAyKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDkt
MTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE0MjM2
PiBhbmQgaHR0cDovL3dlYmtpdC5vcmcvYi8zMjA1MiAtIEltcGxlbWVudCBIVE1MNSBzdGF0ZSBv
YmplY3QgaGlzdG9yeSBBUEkKKworICAgICAgICBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0cyBvZiBv
bGQgdGVzdHM6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1hcHBlbmRhZ2VzLWNs
ZWFyZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1mcmFtZS1hY2Nlc3MtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorCisKKyAgICAgICAgKiBm
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0
cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95
ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRl
LWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Bv
cHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRl
ci1sb2FkLWNvbXBsZXRlLWFkZGV2ZW50bGlzdGVuZXIuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9k
eS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUt
YWZ0ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQt
Y29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0
LXR5cGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9w
dXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUt
d2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50
LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhl
bi1wdXNoc3RhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3Jlc291cmNlcy9uYXZpZ2F0ZS1iYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbG9hZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0
eS1leGNlcHRpb24uaHRtbDogQWRkZWQuCisKIDIwMDktMTItMDIgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBkaGNwLTE3Mi0yOC0xNzQtMjIwLnNwYi5jb3JwLmdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1hcHBlbmRhZ2VzLWNsZWFyZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctYXBwZW5kYWdlcy1jbGVh
cmVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTE1NDUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LWFwcGVuZGFnZXMtY2xlYXJlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIsNiArMiw4IEBAIFBBU1MgaGlzdG9yeS5iYWNrID09ICJMRUZUT1ZFUiIgaXMg
ZmFsc2UKIFBBU1MgaGlzdG9yeS5mb3J3YXJkID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBBU1Mg
aGlzdG9yeS5nbyA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCiBQQVNTIGhpc3RvcnkubGVuZ3RoID09
ICJMRUZUT1ZFUiIgaXMgZmFsc2UKK1BBU1MgaGlzdG9yeS5wdXNoU3RhdGUgPT0gIkxFRlRPVkVS
IiBpcyBmYWxzZQorUEFTUyBoaXN0b3J5LnJlcGxhY2VTdGF0ZSA9PSAiTEVGVE9WRVIiIGlzIGZh
bHNlCiBQQVNTIGxvY2F0aW9uLmFzc2lnbiA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCiBQQVNTIGxv
Y2F0aW9uLmhhc2ggPT0gIkxFRlRPVkVSIiBpcyBmYWxzZQogUEFTUyBsb2NhdGlvbi5ob3N0ID09
ICJMRUZUT1ZFUiIgaXMgZmFsc2UKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NTE1NDUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzM3LDYgKzE3MzcsOCBAQCB3aW5kb3cu
aGlzdG9yeS5iYWNrIFtmdW5jdGlvbl0KIHdpbmRvdy5oaXN0b3J5LmZvcndhcmQgW2Z1bmN0aW9u
XQogd2luZG93Lmhpc3RvcnkuZ28gW2Z1bmN0aW9uXQogd2luZG93Lmhpc3RvcnkubGVuZ3RoIFtu
dW1iZXJdCit3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgW2Z1bmN0aW9uXQord2luZG93Lmhpc3Rv
cnkucmVwbGFjZVN0YXRlIFtmdW5jdGlvbl0KIHdpbmRvdy5pbm5lckhlaWdodCBbbnVtYmVyXQog
d2luZG93LmlubmVyV2lkdGggW251bWJlcl0KIHdpbmRvdy5sZW5ndGggW251bWJlcl0KQEAgLTE4
MTMsNiArMTgxNSw3IEBAIHdpbmRvdy5vbnBhZ2VzaG93IFtudWxsXQogd2luZG93Lm9ucGF1c2Ug
W251bGxdCiB3aW5kb3cub25wbGF5IFtudWxsXQogd2luZG93Lm9ucGxheWluZyBbbnVsbF0KK3dp
bmRvdy5vbnBvcHN0YXRlIFtudWxsXQogd2luZG93Lm9ucHJvZ3Jlc3MgW251bGxdCiB3aW5kb3cu
b25yYXRlY2hhbmdlIFtudWxsXQogd2luZG93Lm9ucmVzZXQgW251bGxdCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRl
LWJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
ZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIyIEBACittYWluIGZyYW1lIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihz
KQorQUxFUlQ6IEhpc3RvcnkgbGVuZ3RoIGlzIDIKK0FMRVJUOiBTdGF0ZSBwb3BwZWQgLSBGaXJz
dEVudHJ5ICh0eXBlIHN0cmluZykKK0FMRVJUOiBTdGF0ZSBwb3BwZWQgLSBTZWNvbmRFbnRyeSAo
dHlwZSBzdHJpbmcpCitBTEVSVDogTmF2aWdhdGluZyBiYWNrLi4uCittYWluIGZyYW1lIC0gaGFz
IDEgb251bmxvYWQgaGFuZGxlcihzKQorQUxFUlQ6IEhpc3RvcnkgbGVuZ3RoIGlzIDIKK0FMRVJU
OiB3aW5kb3cubG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1u
YXZpZ2F0ZS1iYWNrLmh0bWw/U2Vjb25kRW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQKK21h
aW4gZnJhbWUgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMpCitBTEVSVDogSGlzdG9yeSBsZW5n
dGggaXMgMQorQUxFUlQ6IHdpbmRvdy5sb2NhdGlvbiBpcyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9z
dm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1l
bnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbD9GaXJzdEVudHJ5U2hvdWxkTmV2ZXJCZVJl
YWN0aXZhdGVkCitBTEVSVDogVGVzdCBjb21wbGV0ZWQKK1RoaXMgdGVzdDoKKy1CdWlsZHMgdXAg
YSBsaXN0IG9mIHN0YXRlIG9iamVjdCBlbnRyaWVzLgorLU5hdmlnYXRlcyB0aHJvdWdoIHRoZW0g
dG8gdmVyaWZ5IHRoYXQgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGZpcmVkLgorLU5hdmlnYXRlcyBh
d2F5IHRvIGEgbmV3IGRvY3VtZW50LCB3aXRoIHRoZSBvbGQgZG9jdW1lbnQgYmVpbmcgZGVzdHJv
eWVkLgorLU5hdmlnYXRlcyBiYWNrIHRvIHRoZSBzdGF0ZSBvYmplY3QgZW50cmllcyBhbmQgdmVy
aWZpZXMgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIG5vdCBmaXJlZC4KKworSGlzdG9yeSBsZW5ndGgg
aXMgMQord2luZG93LmxvY2F0aW9uIGlzIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291
cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95
ZWQtbmF2aWdhdGUtYmFjay5odG1sP0ZpcnN0RW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQK
K1Rlc3QgY29tcGxldGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9s
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZy
YWdtZW50LXNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAK
K21haW4gZnJhbWUgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMpCitBTEVSVDogSGlzdG9yeSBs
ZW5ndGggaXMgMgorQUxFUlQ6IFN0YXRlIHBvcHBlZCAtIEZpcnN0RW50cnkgKHR5cGUgc3RyaW5n
KQorQUxFUlQ6IGhhc2hDaGFuZ2VkIC0gbG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEv
c3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3Vt
ZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwjRmly
c3RFbnRyeQorQUxFUlQ6IFN0YXRlIHBvcHBlZCAtIFNlY29uZEVudHJ5ICh0eXBlIHN0cmluZykK
K0FMRVJUOiBoYXNoQ2hhbmdlZCAtIGxvY2F0aW9uIGlzIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2
bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVu
dC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sI1NlY29u
ZEVudHJ5CitBTEVSVDogTmF2aWdhdGluZyBiYWNrLi4uCittYWluIGZyYW1lIC0gaGFzIDEgb251
bmxvYWQgaGFuZGxlcihzKQorQUxFUlQ6IEhpc3RvcnkgbGVuZ3RoIGlzIDIKK0FMRVJUOiB3aW5k
b3cubG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0
ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwjU2Vjb25kRW50cnlTaG91bGROZXZlckJl
UmVhY3RpdmF0ZWQKK0FMRVJUOiBoYXNoQ2hhbmdlZCAtIGxvY2F0aW9uIGlzIGZpbGU6Ly8vVm9s
dW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9s
bC5odG1sI0ZpcnN0RW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQKK0FMRVJUOiBUZXN0IGNv
bXBsZXRlZAorVGhpcyB0ZXN0OgorLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVu
dHJpZXMgd2l0aCBmcmFnbWVudCBVUkwuCistTmF2aWdhdGVzIHRocm91Z2ggdGhlbSB0byB2ZXJp
ZnkgdGhhdCB0aGUgcG9wc3RhdGUgYW5kIGhhc2hjaGFuZ2VkIGV2ZW50cyBhcmUgZmlyZWQuCist
TmF2aWdhdGVzIGF3YXkgdG8gYSBuZXcgZG9jdW1lbnQsIHdpdGggdGhlIG9sZCBkb2N1bWVudCBi
ZWluZyBkZXN0cm95ZWQuCistTmF2aWdhdGVzIGJhY2sgdG8gdGhlIHN0YXRlIG9iamVjdCBlbnRy
aWVzIGFuZCB2ZXJpZmllcyB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgbm90IGZpcmVkLgorCitIaXN0
b3J5IGxlbmd0aCBpcyAyCit3aW5kb3cubG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEv
c3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3Vt
ZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwjU2Vj
b25kRW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQKK2hhc2hDaGFuZ2VkIC0gbG9jYXRpb24g
aXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgt
ZnJhZ21lbnQtc2Nyb2xsLmh0bWwjRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAor
VGVzdCBjb21wbGV0ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xs
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
ZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXNlc3Npb25T
dG9yYWdlLnN0YWdlKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3
YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0
eHQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCAr
PSB0eHQgKyAiXG4iOworICAgIC8vIGFsZXJ0IHRoZSBtZXNzYWdlcyBhbHNvIHNvIER1bXBSZW5k
ZXJUcmVlIGNhbiBjYXB0dXJlIGFuZCBsb2cgbWVzc2FnZXMgYWNyb3NzIG11bHRpcGxlIGRvY3Vt
ZW50cy4KKyAgICBhbGVydCh0eHQpOworfQorCitmdW5jdGlvbiBlbmRUZXN0KG1zZykKK3sKKyAg
ICBsb2cobXNnKTsKKyAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuU2Vjb25kU3RhZ2VPZlRlc3QoKQoreworICAgIGxv
ZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKKyAgICBsb2coIndpbmRv
dy5sb2NhdGlvbiBpcyAiICsgd2luZG93LmxvY2F0aW9uKTsKKyAgICBzZXNzaW9uU3RvcmFnZS5z
dGFnZSA9IDM7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRoaXJkU3Rh
Z2VPZlRlc3QoKQoreworICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVu
Z3RoKTsKKyAgICBsb2coIndpbmRvdy5sb2NhdGlvbiBpcyAiICsgd2luZG93LmxvY2F0aW9uKTsK
KyAgICBlbmRUZXN0KCJUZXN0IGNvbXBsZXRlZCIpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQor
eworICAgIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSkgeworICAgICAgICBpZiAoc2Vzc2lvblN0
b3JhZ2Uuc3RhZ2UgPT0gMikKKyAgICAgICAgICAgIHJ1blNlY29uZFN0YWdlT2ZUZXN0KCk7Cisg
ICAgICAgIGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDMpCisgICAgICAgICAgICBl
bmRUZXN0KCJTaG91bGRuJ3QgcmVhY2ggdGhpcyBjYXNlIHdoZW4gZG9pbmcgZnJhZ21lbnQgc2Ny
b2xscyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmRUZXN0KCJVbmV4cGVjdGVkIHN0
YWdlIHZhbHVlIik7CisgICAgfSBlbHNlCisgICAgICAgIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKTsK
K30KKworZnVuY3Rpb24gcnVuRmlyc3RTdGFnZU9mVGVzdCgpCit7ICAgCisgICAgaGlzdG9yeS5y
ZXBsYWNlU3RhdGUoIkZpcnN0RW50cnkiLCBudWxsLCAiI0ZpcnN0RW50cnkiKTsKKyAgICBoaXN0
b3J5LnB1c2hTdGF0ZSgiU2Vjb25kRW50cnkiLCBudWxsLCAiI1NlY29uZEVudHJ5Iik7CisgICAg
CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGhp
c3RvcnkuYmFjaygpOworfQorCitmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit7CisgICAgbG9nKCJT
dGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQu
c3RhdGUgKyAiKSIpOworICAgIGlmIChldmVudC5zdGF0ZSA9PSAiRmlyc3RFbnRyeSIpIHsKKyAg
ICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIkZpcnN0RW50cnlTaG91bGROZXZlckJlUmVhY3Rp
dmF0ZWQiLCBudWxsLCAiI0ZpcnN0RW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQiKTsKKyAg
ICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5zdGF0ZSA9PSAi
U2Vjb25kRW50cnkiKSB7CisgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJTZWNvbmRFbnRy
eVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICIjU2Vjb25kRW50cnlTaG91bGROZXZl
ckJlUmVhY3RpdmF0ZWQiKTsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9u
YXZpZ2F0ZS1iYWNrLmh0bWwiOworICAgIH0gZWxzZQorICAgICAgICBlbmRUZXN0KCJVbmV4cGVj
dGVkIHN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSk7Cit9CisKK2Z1bmN0aW9uIGhhc2hD
aGFuZ2VkKCkKK3sKKyAgICBsb2coImhhc2hDaGFuZ2VkIC0gbG9jYXRpb24gaXMgIiArIHdpbmRv
dy5sb2NhdGlvbik7CisgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoID09ICIjRmlyc3RFbnRy
eVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIpCisgICAgICAgIGVuZFRlc3QoIlRlc3QgY29tcGxl
dGVkIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiIG9ucG9wc3Rh
dGU9InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hjaGFuZ2U9Imhhc2hDaGFuZ2VkKCk7IiBvbnVubG9h
ZD0iLyogZGlzYWJsZSBwYWdlIGNhY2hlICovIj4KKzxwcmU+CitUaGlzIHRlc3Q6CistQnVpbGRz
IHVwIGEgbGlzdCBvZiBzdGF0ZSBvYmplY3QgZW50cmllcyB3aXRoIGZyYWdtZW50IFVSTC4KKy1O
YXZpZ2F0ZXMgdGhyb3VnaCB0aGVtIHRvIHZlcmlmeSB0aGF0IHRoZSBwb3BzdGF0ZSBhbmQgaGFz
aGNoYW5nZWQgZXZlbnRzIGFyZSBmaXJlZC4KKy1OYXZpZ2F0ZXMgYXdheSB0byBhIG5ldyBkb2N1
bWVudCwgd2l0aCB0aGUgb2xkIGRvY3VtZW50IGJlaW5nIGRlc3Ryb3llZC4KKy1OYXZpZ2F0ZXMg
YmFjayB0byB0aGUgc3RhdGUgb2JqZWN0IGVudHJpZXMgYW5kIHZlcmlmaWVzIHRoZSBwb3BzdGF0
ZSBldmVudCBpcyBub3QgZmlyZWQuCis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3ll
ZC1uYXZpZ2F0ZS1iYWNrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXNlc3Npb25TdG9y
YWdlLnN0YWdlKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0
eHQgKyAiXG4iOworICAgIC8vIGFsZXJ0IHRoZSBtZXNzYWdlcyBhbHNvIHNvIER1bXBSZW5kZXJU
cmVlIGNhbiBjYXB0dXJlIGFuZCBsb2cgbWVzc2FnZXMgYWNyb3NzIG11bHRpcGxlIGRvY3VtZW50
cy4KKyAgICBhbGVydCh0eHQpOworfQorCitmdW5jdGlvbiBlbmRUZXN0KG1zZykKK3sKKyAgICBs
b2cobXNnKTsKKyAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZnVuY3Rpb24gcnVuU2Vjb25kU3RhZ2VPZlRlc3QoKQoreworICAgIGxvZygi
SGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKKyAgICBsb2coIndpbmRvdy5s
b2NhdGlvbiBpcyAiICsgd2luZG93LmxvY2F0aW9uKTsKKyAgICBzZXNzaW9uU3RvcmFnZS5zdGFn
ZSA9IDM7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRoaXJkU3RhZ2VP
ZlRlc3QoKQoreworICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3Ro
KTsKKyAgICBsb2coIndpbmRvdy5sb2NhdGlvbiBpcyAiICsgd2luZG93LmxvY2F0aW9uKTsKKyAg
ICBlbmRUZXN0KCJUZXN0IGNvbXBsZXRlZCIpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKQorewor
ICAgIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSkgeworICAgICAgICBpZiAoc2Vzc2lvblN0b3Jh
Z2Uuc3RhZ2UgPT0gMikKKyAgICAgICAgICAgIHJ1blNlY29uZFN0YWdlT2ZUZXN0KCk7CisgICAg
ICAgIGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDMpCisgICAgICAgICAgICBydW5U
aGlyZFN0YWdlT2ZUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVuZFRlc3QoIlVu
ZXhwZWN0ZWQgc3RhZ2UgdmFsdWUiKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcnVuRmlyc3RTdGFn
ZU9mVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5GaXJzdFN0YWdlT2ZUZXN0KCkKK3sgICAKKyAg
ICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRyeSIsIG51bGwsICI/Rmlyc3RFbnRyeSIp
OworICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTZWNvbmRFbnRyeSIsIG51bGwsICI/U2Vjb25kRW50
cnkiKTsKKyAgICAKKyAgICBsb2coIkhpc3RvcnkgbGVuZ3RoIGlzICIgKyBoaXN0b3J5Lmxlbmd0
aCk7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3sK
KyAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5
cGVvZiBldmVudC5zdGF0ZSArICIpIik7CisgICAgaWYgKGV2ZW50LnN0YXRlID09ICJGaXJzdEVu
dHJ5IikgeworICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRyeVNob3VsZE5l
dmVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICI/Rmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2
YXRlZCIpOworICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50
LnN0YXRlID09ICJTZWNvbmRFbnRyeSIpIHsKKyAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUo
IlNlY29uZEVudHJ5U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIj9TZWNvbmRFbnRy
eVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIpOworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAi
cmVzb3VyY2VzL25hdmlnYXRlLWJhY2suaHRtbCI7CisgICAgfSBlbHNlCisgICAgICAgIGVuZFRl
c3QoIlVuZXhwZWN0ZWQgc3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlKTsKK30KKworPC9z
Y3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQo
KTsiIG9udW5sb2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8iPgorPHByZT4KK1RoaXMgdGVz
dDoKKy1CdWlsZHMgdXAgYSBsaXN0IG9mIHN0YXRlIG9iamVjdCBlbnRyaWVzLgorLU5hdmlnYXRl
cyB0aHJvdWdoIHRoZW0gdG8gdmVyaWZ5IHRoYXQgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGZpcmVk
LgorLU5hdmlnYXRlcyBhd2F5IHRvIGEgbmV3IGRvY3VtZW50LCB3aXRoIHRoZSBvbGQgZG9jdW1l
bnQgYmVpbmcgZGVzdHJveWVkLgorLU5hdmlnYXRlcyBiYWNrIHRvIHRoZSBzdGF0ZSBvYmplY3Qg
ZW50cmllcyBhbmQgdmVyaWZpZXMgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIG5vdCBmaXJlZC4KKzwv
cHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9h
ZC1jb21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1j
b21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNv
bXBsZXRlLWFkZGV2ZW50bGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExIEBACitUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgorLUxpc3RlbnMgZm9yIHRo
ZSBwb3BzdGF0ZSBldmVudCB1c2luZyBhZGRFdmVudExpc3RlbmVyCistTWFrZXMgYSBjYWxsIHRv
IHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5ndGggaXMgY29ycmVjdAor
LUdvZXMgYmFjaywgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QK
Ky1Hb2VzIGZvcndhcmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3Jy
ZWN0CisKK0hpc3RvcnkgbGVuZ3RoIGlzIDIKK1N0YXRlIHBvcHBlZCAtIG51bGwgKHR5cGUgb2Jq
ZWN0KQorU3RhdGUgcG9wcGVkIC0gU3RhdGVTdHJpbmdEYXRhICh0eXBlIHN0cmluZykKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxv
YWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRl
LWFkZGV2ZW50bGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWFkZGV2ZW50
bGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworfQorCitmdW5j
dGlvbiBydW5UZXN0KCkKK3sKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSgiU3RhdGVTdHJpbmdEYXRh
IiwgIk5ldyB0aXRsZSIpOworICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3Rvcnku
bGVuZ3RoKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gc3RhdGVQb3BwZWQo
KQoreworICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAi
ICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICBpZiAoZXZlbnQuc3RhdGUgPT0gbnVs
bCkKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgZWxzZSBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsIHN0YXRlUG9wcGVk
KTsKKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHByZT4KK1RoaXMg
dGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistTGlzdGVucyBmb3IgdGhlIHBvcHN0YXRlIGV2ZW50
IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIKKy1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRlKCkKKy1N
YWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistR29lcyBiYWNrLCBhbmQg
bWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorLUdvZXMgZm9yd2FyZCwg
YW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QKKzwvcHJlPjxicj4K
KzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0
ZS1ib2R5LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9k
eS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUaGlz
IHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgorLVVzZXMgYm9keS5vbnBvcHN0YXRlIHRvIGFkZCBh
IHBvcHN0YXRlIGhhbmRsZXIgKGJvdGggYnkgdXNpbmcgdGhlIGlubGluZSBhdHRyaWJ1dGUgYW5k
IGEgc2NyaXB0LWFzc2lnbmVkIGF0dHJpYnV0ZSkKKy1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRl
KCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistR29lcyBiYWNr
LCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorLUdvZXMgZm9y
d2FyZCwgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QKKworSGlz
dG9yeSBsZW5ndGggaXMgMgorU3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBvYmplY3QpCitTdGF0
ZSBwb3BwZWQgLSBTdGF0ZVN0cmluZ0RhdGEgKHR5cGUgc3RyaW5nKQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0
ZS1ib2R5LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmli
dXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gbG9nKHR4dCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
Z2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTdGF0ZVN0cmluZ0RhdGEiLCAiTmV3IHRpdGxlIik7
CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGhp
c3RvcnkuYmFjaygpOworfQorCitmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit7CisgICAgbG9nKCJT
dGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQu
c3RhdGUgKyAiKSIpOworICAgIGlmIChldmVudC5zdGF0ZSA9PSBudWxsKSB7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOworICAgICAgICBoaXN0b3J5LmZv
cndhcmQoKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiPgor
PHByZT4KK1RoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistVXNlcyBib2R5Lm9ucG9wc3Rh
dGUgdG8gYWRkIGEgcG9wc3RhdGUgaGFuZGxlciAoYm90aCBieSB1c2luZyB0aGUgaW5saW5lIGF0
dHJpYnV0ZSBhbmQgYSBzY3JpcHQtYXNzaWduZWQgYXR0cmlidXRlKQorLU1ha2VzIGEgY2FsbCB0
byBwdXNoU3RhdGUoKQorLU1ha2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QK
Ky1Hb2VzIGJhY2ssIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0
CistR29lcyBmb3J3YXJkLCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29y
cmVjdAorPC9wcmU+PGJyPgorPHByZSBpZD0ibG9nZ2VyIj48L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1h
ZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRl
ci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVy
LWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistVXNlcyB3
aW5kb3cub25wb3BzdGF0ZSB0byBhZGQgYSBwb3BzdGF0ZSBoYW5kbGVyCistTWFrZXMgYSBjYWxs
IHRvIHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5ndGggaXMgY29ycmVj
dAorLUdvZXMgYmFjaywgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJl
Y3QKKy1Hb2VzIGZvcndhcmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBj
b3JyZWN0CisKK0hpc3RvcnkgbGVuZ3RoIGlzIDIKK1N0YXRlIHBvcHBlZCAtIG51bGwgKHR5cGUg
b2JqZWN0KQorU3RhdGUgcG9wcGVkIC0gU3RhdGVTdHJpbmdEYXRhICh0eXBlIHN0cmluZykKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVy
LWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBs
ZXRlLXdpbmRvdy1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRv
dy1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworfQorCitm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSgiU3RhdGVTdHJpbmdE
YXRhIiwgIk5ldyB0aXRsZSIpOworICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3Rv
cnkubGVuZ3RoKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gc3RhdGVQb3Bw
ZWQoKQoreworICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlw
ZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICBpZiAoZXZlbnQuc3RhdGUgPT0g
bnVsbCkKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgZWxzZSBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK3dpbmRvdy5vbnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CisKKzwvc2NyaXB0
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxwcmU+CitUaGlzIHRlc3QgZG9lcyB0aGUg
Zm9sbG93aW5nOgorLVVzZXMgd2luZG93Lm9ucG9wc3RhdGUgdG8gYWRkIGEgcG9wc3RhdGUgaGFu
ZGxlcgorLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUoKQorLU1ha2VzIHN1cmUgdGhlIGhpc3Rv
cnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1Hb2VzIGJhY2ssIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3Bz
dGF0ZSBldmVudCBpcyBjb3JyZWN0CistR29lcyBmb3J3YXJkLCBhbmQgbWFrZXMgc3VyZSB0aGUg
cG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorPC9wcmU+PGJyPgorPHByZSBpZD0ibG9nZ2VyIj48
L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVj
dC10eXBlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBjYWxscyBwdXNoU3RhdGUgd2l0
aCBzdGF0ZSBvYmplY3RzIG9mIGFsbCB0aGUgZGlmZmVyZW50IG9iamVjdCB0eXBlcyBzdXBwb3J0
ZWQgYnkgdGhlIEhUTUw1ICJpbnRlcm5hbCBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3JpdGhtIiBh
bmQgbWFrZXMgc3VyZSB0aGUgZXZlbnRzIGNvbnRhaW4gdGhlIGV4cGVjdGVkIG9iamVjdHMgd2hl
biB0aGUgc3RhdGVzIGFyZSBwb3BwZWQuCisKK1N0YXRlIHBvcHBlZCAtIFtvYmplY3QgT2JqZWN0
XSAodHlwZSBvYmplY3QpCitTdGF0ZSBwb3BwZWQgLSBbb2JqZWN0IE9iamVjdF0gKHR5cGUgb2Jq
ZWN0KQorU3RhdGUgcG9wcGVkIC0gICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIG51bGwg
KHR5cGUgb2JqZWN0KQorU3RhdGUgcG9wcGVkIC0gV2VkIERlYyAzMSAxOTY5IDE2OjAwOjAwIEdN
VC0wODAwIChQU1QpICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIFN0cmluZyAodHlwZSBz
dHJpbmcpCitTdGF0ZSBwb3BwZWQgLSA0MiAodHlwZSBudW1iZXIpCitTdGF0ZSBwb3BwZWQgLSB0
cnVlICh0eXBlIGJvb2xlYW4pCitTdGF0ZSBwb3BwZWQgLSBmYWxzZSAodHlwZSBib29sZWFuKQor
U3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBvYmplY3QpCitTdGF0ZSBwb3BwZWQgLSB1bmRlZmlu
ZWQgKHR5cGUgdW5kZWZpbmVkKQorU3RhdGUgcG9wcGVkIC0gRmlyc3RFbnRyeSAodHlwZSBzdHJp
bmcpCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3Rh
dGUtb2JqZWN0LXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0
LXR5cGVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codHh0KQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lclRleHQgKz0gdHh0ICsgIlxuIjsKK30KKyAgICAKK2Z1
bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVudHJ5
IiwgIkluaXRpYWwgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSh1bmRlZmluZWQsICJ1
bmRlZmluZWQgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCAibnVsbCBlbnRy
eSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKGZhbHNlLCAiZmFsc2UgZW50cnkiKTsKKyAgICBo
aXN0b3J5LnB1c2hTdGF0ZSh0cnVlLCAidHJ1ZSBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0
YXRlKDQyLCAiTnVtYmVyIGVudHJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlN0cmluZyIs
ICJTdHJpbmcgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgRGF0ZSgwKSwgIkRh
dGUgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgUmVnRXhwLCAiUmVnRXhwIGVu
dHJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobmV3IEFycmF5LCAiQXJyYXkgZW50cnkiKTsK
KyAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgT2JqZWN0LCAiT2JqZWN0IGVudHJ5Iik7CisgICAg
aGlzdG9yeS5wdXNoU3RhdGUobmV3IEVycm9yLCAiRXJyb3IgZW50cnkiKTsKKworLyogVGhlIGZv
bGxvd2luZyBhcmUgbm90IHlldCB3ZWxsIGVub3VnaCBzdXBwb3J0ZWQgaW4gV2ViS2l0IHRvIG1l
YW5pbmdmdWxseSB0ZXN0IGhlcmU6CitoaXN0b3J5LnB1c2hTdGF0ZShbSW1hZ2VEYXRhXSwgIklt
YWdlRGF0YSBlbnRyeSIpOworaGlzdG9yeS5wdXNoU3RhdGUoW0Jsb2JdLCAiQmxvYiBlbnRyeSIp
OworaGlzdG9yeS5wdXNoU3RhdGUoW0ZpbGVdLCAiRmlsZSBlbnRyeSIpOworaGlzdG9yeS5wdXNo
U3RhdGUoW0ZpbGVMaXN0XSwgIkZpbGVMaXN0IGVudHJ5Iik7CisqLworCisgICAgaGlzdG9yeS5w
dXNoU3RhdGUoIkJ1ZmZlckVudHJ5IiwgIkxhc3QgZW50cnkiKTsKKyAgICBoaXN0b3J5LmJhY2so
KTsKK30KKworZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQoreworICAgIGxvZygiU3RhdGUgcG9wcGVk
IC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIiki
KTsKKyAgICBpZiAoZXZlbnQuc3RhdGUgIT0gIkZpcnN0RW50cnkiKQorICAgICAgICBoaXN0b3J5
LmJhY2soKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KKzxw
cmUgaWQ9InNvbWVlbGVtZW50Ij4KK1RoaXMgdGVzdCBjYWxscyBwdXNoU3RhdGUgd2l0aCBzdGF0
ZSBvYmplY3RzIG9mIGFsbCB0aGUgZGlmZmVyZW50IG9iamVjdCB0eXBlcyBzdXBwb3J0ZWQgYnkg
dGhlIEhUTUw1ICJpbnRlcm5hbCBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3JpdGhtIiBhbmQgbWFr
ZXMgc3VyZSB0aGUgZXZlbnRzIGNvbnRhaW4gdGhlIGV4cGVjdGVkIG9iamVjdHMgd2hlbiB0aGUg
c3RhdGVzIGFyZSBwb3BwZWQuCis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJlPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS10aGVuLXJl
cGxhY2VzdGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGRvZXMgdGhlIGZv
bGxvd2luZzoKKy1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBo
aXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistTWFrZXMgYSBjYWxsIHRvIHJlcGxhY2VTdGF0ZSgp
CistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5ndGggaXMgY29ycmVjdAorLUdvZXMgYmFjaywg
YW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QKKy1Hb2VzIGZvcndh
cmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCByZXByZXNlbnRzIHRoZSByZXBs
YWNlZCBzdGF0ZSBvYmplY3QKKworSGlzdG9yeSBsZW5ndGggaXMgMgorSGlzdG9yeSBsZW5ndGgg
aXMgMgorU3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBvYmplY3QpCitTdGF0ZSBwb3BwZWQgLSAx
ICh0eXBlIG51bWJlcikKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3Rh
dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3
YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0
eHQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCAr
PSB0eHQgKyAiXG4iOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBoaXN0b3J5LnB1
c2hTdGF0ZSgiU3RhdGVTdHJpbmdEYXRhIiwgIk5ldyB0aXRsZSIpOworICAgIGxvZygiSGlzdG9y
eSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKKyAgICBoaXN0b3J5LnJlcGxhY2VTdGF0
ZSgxLCAiUmVwbGFjZWQgdGl0bGUiKTsKKyAgICBsb2coIkhpc3RvcnkgbGVuZ3RoIGlzICIgKyBo
aXN0b3J5Lmxlbmd0aCk7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRl
UG9wcGVkKCkKK3sKKyAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIg
KHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CisgICAgaWYgKGV2ZW50LnN0YXRl
ID09IG51bGwpCisgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgIGVsc2UgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25w
b3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiPgorPHByZT4KK1RoaXMgdGVzdCBkb2VzIHRoZSBmb2xs
b3dpbmc6CistTWFrZXMgYSBjYWxsIHRvIHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlz
dG9yeSBsZW5ndGggaXMgY29ycmVjdAorLU1ha2VzIGEgY2FsbCB0byByZXBsYWNlU3RhdGUoKQor
LU1ha2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1Hb2VzIGJhY2ssIGFu
ZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0CistR29lcyBmb3J3YXJk
LCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgcmVwcmVzZW50cyB0aGUgcmVwbGFj
ZWQgc3RhdGUgb2JqZWN0Cis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJlPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNo
c3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3Rh
dGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNCBAQAorVGhpcyB0ZXN0IHB1c2hlcyBhIHNlcmllcyBvZiBzdGF0
ZSBvYmplY3RzIHdpdGggZGlmZmVyZW50IFVSTHMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXJzIG1l
YW50IHRvIHRlc3QgdGhlIGhhc2hDaGFuZ2UgZXZlbnQgYXMgc3RhdGVzIGFyZSBwb3BwZWQuCisK
K1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24g
ZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3NvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVycXVlcnkKK1N0YXRl
IHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTov
Ly9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3NvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVycXVlcnkjCitIYXNoIGNoYW5n
ZSBmaXJlZAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBs
b2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhzb21lb3RoZXJxdWVy
eQorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUg
b2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3NvbWUtb3RoZXIuaHRtbD93aXRo
c29tZW90aGVycXVlcnkjc29tZWhhc2gKK0hhc2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQg
d2l0aCBldmVudCBudWxsICh0eXBlIG9iamVjdCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1l
cy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zb21lLW90aGVyLmh0bWw/d2l0aHNvbWVvdGhlcnF1ZXJ5I3NvbWVvdGhlcmhhc2gKK0hhc2gg
Y2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBudWxsICh0eXBlIG9iamVjdCkg
YW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zb21lLW90aGVyLmh0bWw/d2l0aHF1ZXJ5I3Nv
bWVvdGhlcmhhc2gKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBh
bmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3NvbWUtb3RoZXIuaHRtbD93aXRocXVlcnkjCitI
YXNoIGNoYW5nZSBmaXJlZAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmpl
Y3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhxdWVy
eSNzb21laGFzaAorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51
bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3NvbWUtb3RoZXIu
aHRtbD93aXRocXVlcnkKK0hhc2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVu
dCBudWxsICh0eXBlIG9iamVjdCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2
bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zb21lLW90
aGVyLmh0bWw/d2l0aHF1ZXJ5IworSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRo
IGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0Rh
dGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Nv
bWUtb3RoZXIuaHRtbD93aXRocXVlcnkKK0hhc2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQg
d2l0aCBldmVudCBudWxsICh0eXBlIG9iamVjdCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1l
cy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zb21lLW90aGVyLmh0bWwKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2Jq
ZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50
LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCMKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwg
KHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5T
b3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRo
LWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCMKK1N0YXRlIHBvcHBlZCB3aXRoIGV2
ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEv
c3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCNvdGhlcmhhc2gKK0hh
c2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBudWxsICh0eXBlIG9iamVj
dCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVudC11
cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwjaGFzaAorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBv
cHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9W
b2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCMK
K0hhc2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBudWxsICh0eXBlIG9i
amVjdCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVu
dC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwjCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBPcmln
aW5hbEVudHJ5ICh0eXBlIHN0cmluZykgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRh
L3N2bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNo
c3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50
LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFz
aGNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworfQorCitmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiT3JpZ2luYWxFbnRyeSIsICJvcmlnaW5h
bCIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICIjIik7CisgICAgaGlzdG9y
eS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgIiIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGws
IG51bGwsICIjaGFzaCIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICIjb3Ro
ZXJoYXNoIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgIiMiKTsKKyAgICBo
aXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCBudWxsKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0
ZShudWxsLCBudWxsLCAic29tZS1vdGhlci5odG1sIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUo
bnVsbCwgbnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRocXVlcnkiKTsKKyAgICBoaXN0b3J5LnB1
c2hTdGF0ZShudWxsLCBudWxsLCAic29tZS1vdGhlci5odG1sP3dpdGhxdWVyeSMiKTsKKyAgICBo
aXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAic29tZS1vdGhlci5odG1sP3dpdGhxdWVyeSIp
OworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWw/d2l0
aHF1ZXJ5I3NvbWVoYXNoIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgInNv
bWUtb3RoZXIuaHRtbD93aXRocXVlcnkjIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwg
bnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRocXVlcnkjc29tZW90aGVyaGFzaCIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWw/d2l0aHNvbWVvdGhl
cnF1ZXJ5I3NvbWVvdGhlcmhhc2giKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxs
LCAic29tZS1vdGhlci5odG1sP3dpdGhzb21lb3RoZXJxdWVyeSNzb21laGFzaCIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWw/d2l0aHNvbWVvdGhl
cnF1ZXJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgInNvbWUtb3RoZXIu
aHRtbD93aXRoc29tZW90aGVycXVlcnkjIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwg
bnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVycXVlcnkiKTsKKworICAgIGhpc3Rv
cnkucHVzaFN0YXRlKCJCdWZmZXJFbnRyeSIsICJMYXN0IGVudHJ5Iik7CisgICAgaGlzdG9yeS5i
YWNrKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3sKKyAgICBsb2coIlN0YXRlIHBv
cHBlZCB3aXRoIGV2ZW50ICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVu
dC5zdGF0ZSArICIpIGFuZCBsb2NhdGlvbiAiICsgd2luZG93LmxvY2F0aW9uKTsKKyAgICBpZiAo
ZXZlbnQuc3RhdGUgIT0gIk9yaWdpbmFsRW50cnkiKQorICAgICAgICBoaXN0b3J5LmJhY2soKTsK
KyAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gaGFzaENoYW5nZWQo
KQoreworICAgIGxvZygiSGFzaCBjaGFuZ2UgZmlyZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hj
aGFuZ2U9Imhhc2hDaGFuZ2VkKCk7Ij4KKzxwcmU+CitUaGlzIHRlc3QgcHVzaGVzIGEgc2VyaWVz
IG9mIHN0YXRlIG9iamVjdHMgd2l0aCBkaWZmZXJlbnQgVVJMcyBhbmQgZnJhZ21lbnQgaWRlbnRp
ZmllcnMgbWVhbnQgdG8gdGVzdCB0aGUgaGFzaENoYW5nZSBldmVudCBhcyBzdGF0ZXMgYXJlIHBv
cHBlZC4KKzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0
YXRlLXRoZW4tcHVzaHN0YXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1wdXNoc3RhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgorLU1h
a2VzIGEgY2FsbCB0byByZXBsYWNlU3RhdGUoKQorLU1ha2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVu
Z3RoIGlzIGNvcnJlY3QKKy1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJl
IHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistR29lcyBiYWNrLCBhbmQgbWFrZXMgc3Vy
ZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorLUdvZXMgZm9yd2FyZCwgYW5kIG1ha2Vz
IHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QKKworSGlzdG9yeSBsZW5ndGggaXMg
MQorSGlzdG9yeSBsZW5ndGggaXMgMgorU3RhdGUgcG9wcGVkIC0gT3JpZ2luYWxIaXN0b3J5SXRl
bSAodHlwZSBzdHJpbmcpCitTdGF0ZSBwb3BwZWQgLSBOZXdIaXN0b3J5SXRlbSAodHlwZSBzdHJp
bmcpCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNl
c3RhdGUtdGhlbi1wdXNoc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFj
ZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2codHh0KQoreworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lclRleHQgKz0gdHh0ICsgIlxu
IjsKK30KKyAgICAKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGhpc3RvcnkucmVwbGFjZVN0
YXRlKCJPcmlnaW5hbEhpc3RvcnlJdGVtIiwgIlJlcGxhY2VkIHRpdGxlIik7CisgICAgbG9nKCJI
aXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGhpc3RvcnkucHVzaFN0
YXRlKCJOZXdIaXN0b3J5SXRlbSIsICJQdXNoZWQgdGl0bGUiKTsKKyAgICBsb2coIkhpc3Rvcnkg
bGVuZ3RoIGlzICIgKyBoaXN0b3J5Lmxlbmd0aCk7CisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3sKKyAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBl
dmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CisgICAg
aWYgKGV2ZW50LnN0YXRlID09ICJPcmlnaW5hbEhpc3RvcnlJdGVtIikKKyAgICAgICAgaGlzdG9y
eS5mb3J3YXJkKCk7CisgICAgZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+
Cis8cHJlPgorVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKKy1NYWtlcyBhIGNhbGwgdG8g
cmVwbGFjZVN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0
CistTWFrZXMgYSBjYWxsIHRvIHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBs
ZW5ndGggaXMgY29ycmVjdAorLUdvZXMgYmFjaywgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRl
IGV2ZW50IGlzIGNvcnJlY3QKKy1Hb2VzIGZvcndhcmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3Bz
dGF0ZSBldmVudCBpcyBjb3JyZWN0Cis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3Jlc291cmNlcy9uYXZpZ2F0ZS1iYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9uYXZpZ2F0ZS1iYWNrLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cmVzb3VyY2VzL25hdmlnYXRlLWJhY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0iYWxlcnQoJ05hdmlnYXRpbmcgYmFjay4uLicpOyBzZXNz
aW9uU3RvcmFnZS5zdGFnZSA9IDI7IGhpc3RvcnkuYmFjaygpOyI+PC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0
eS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1v
YmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMiBAQAorbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUK
K21haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB0aGF0IGNhbGxzIHRvIHB1c2hTdGF0ZSgpIGFuZCByZXBsYWNlU3RhdGUoKSB3
aXRoIFVSTHMgdGhhdCB2aW9sYXRlIHRoZSBzZWN1cml0eSBvcmlnaW4gY2hlY2sgZmFpbCBhcyBl
eHBlY3RlZC4KKworVHJ5aW5nIHRvIHB1c2hTdGF0ZSgpIHdpdGggdXJsIGh0dHA6Ly9sb2NhbGhv
c3QvdGVzdC5odG1sIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJVFlfRVJSOiBE
T00gRXhjZXB0aW9uIDE4CitIaXN0b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8gcmVwbGFjZVN0
YXRlKCkgd2l0aCB1cmwgaHR0cDovL2xvY2FsaG9zdC90ZXN0Lmh0bWwgZmFpbGVkIHdpdGggZXhj
ZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVu
Z3RoIGlzIDEKK1RyeWluZyB0byBwdXNoU3RhdGUoKSB3aXRoIHVybCBodHRwOi8vbG9jYWxob3N0
OjgwMDEvdGVzdC5odG1sIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJVFlfRVJS
OiBET00gRXhjZXB0aW9uIDE4CitIaXN0b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8gcmVwbGFj
ZVN0YXRlKCkgd2l0aCB1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDAxL3Rlc3QuaHRtbCBmYWlsZWQg
d2l0aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlz
dG9yeSBsZW5ndGggaXMgMQorVHJ5aW5nIHRvIHB1c2hTdGF0ZSgpIHdpdGggdXJsIGh0dHA6Ly93
d3cud2Via2l0Lm9yZy90ZXN0Lmh0bWwgZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNV
UklUWV9FUlI6IERPTSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0
byByZXBsYWNlU3RhdGUoKSB3aXRoIHVybCBodHRwOi8vd3d3LndlYmtpdC5vcmcvdGVzdC5odG1s
IGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhjZXB0aW9u
IDE4CitIaXN0b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8gcHVzaFN0YXRlKCkgd2l0aCB1cmwg
aHR0cDovL3d3dy53ZWJraXQub3JnLyBmYWlsZWQgd2l0aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VS
SVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlzdG9yeSBsZW5ndGggaXMgMQorVHJ5aW5nIHRv
IHJlcGxhY2VTdGF0ZSgpIHdpdGggdXJsIGh0dHA6Ly93d3cud2Via2l0Lm9yZy8gZmFpbGVkIHdp
dGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRpb24gMTgKK0hpc3Rv
cnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0byBwdXNoU3RhdGUoKSB3aXRoIHVybCBmdHA6Ly93d3cu
d2Via2l0Lm9yZy8gZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6IERP
TSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0byByZXBsYWNlU3Rh
dGUoKSB3aXRoIHVybCBmdHA6Ly93d3cud2Via2l0Lm9yZy8gZmFpbGVkIHdpdGggZXhjZXB0aW9u
IEVycm9yOiBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlz
IDEKK1RyeWluZyB0byBwdXNoU3RhdGUoKSB3aXRoIHVybCBmaWxlOi8vYW55ZmlsZS5odG1sLyBm
YWlsZWQgd2l0aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAx
OAorSGlzdG9yeSBsZW5ndGggaXMgMQorVHJ5aW5nIHRvIHJlcGxhY2VTdGF0ZSgpIHdpdGggdXJs
IGZpbGU6Ly9hbnlmaWxlLmh0bWwvIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJ
VFlfRVJSOiBET00gRXhjZXB0aW9uIDE4CitIaXN0b3J5IGxlbmd0aCBpcyAxCisKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJpdHktZXhjZXB0
aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N0
YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJpdHktZXhjZXB0aW9u
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworfQor
CitmdW5jdGlvbiB0cnlVUkwodXJsKQoreworICAgIHRyeSB7CisgICAgICAgIGhpc3RvcnkucHVz
aFN0YXRlKG51bGwsIG51bGwsIHVybCk7CisgICAgICAgIGxvZygiVHJ5aW5nIHRvIHB1c2hTdGF0
ZSgpIHdpdGggdXJsICIgKyB1cmwgKyAiIHN1Y2NlZWRlZCwgYnV0IHNob3VsZCd2ZSBmYWlsZWQu
Iik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiVHJ5aW5nIHRvIHB1c2hTdGF0ZSgp
IHdpdGggdXJsICIgKyB1cmwgKyAiIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiAiICsgZSk7CisgICAg
fQorICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKKworICAg
IHRyeSB7CisgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIG51bGwsIHVybCk7Cisg
ICAgICAgIGxvZygiVHJ5aW5nIHRvIHJlcGxhY2VTdGF0ZSgpIHdpdGggdXJsICIgKyB1cmwgKyAi
IHN1Y2NlZWRlZCwgYnV0IHNob3VsZCd2ZSBmYWlsZWQuIik7CisgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIGxvZygiVHJ5aW5nIHRvIHJlcGxhY2VTdGF0ZSgpIHdpdGggdXJsICIgKyB1cmwgKyAi
IGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiAiICsgZSk7CisgICAgfQorICAgIGxvZygiSGlzdG9yeSBs
ZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKK30KKwordmFyIFVSTHNUb1RyeSA9IG5ldyBB
cnJheSgKKyJodHRwOi8vbG9jYWxob3N0L3Rlc3QuaHRtbCIsCisiaHR0cDovL2xvY2FsaG9zdDo4
MDAxL3Rlc3QuaHRtbCIsCisiaHR0cDovL3d3dy53ZWJraXQub3JnL3Rlc3QuaHRtbCIsCisiaHR0
cDovL3d3dy53ZWJraXQub3JnLyIsCisiZnRwOi8vd3d3LndlYmtpdC5vcmcvIiwKKyJmaWxlOi8v
YW55ZmlsZS5odG1sLyIKKyk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGZvciAobiBp
biBVUkxzVG9UcnkpCisgICAgICAgIHRyeVVSTChVUkxzVG9Ucnlbbl0pOworfQorCis8L3Njcmlw
dD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cHJlPgorVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBjYWxscyB0byBwdXNoU3RhdGUoKSBhbmQgcmVwbGFjZVN0YXRlKCkgd2l0aCBVUkxz
IHRoYXQgdmlvbGF0ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGNoZWNrIGZhaWwgYXMgZXhwZWN0ZWQu
Cis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mt
ZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNTE1NDUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLWZyYW1lLWFjY2Vzcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDYgKzEwLDEwIEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNj
cmkKIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1lbnVtZXJhdGlvbi10ZXN0Lmh0bWwgZnJv
bSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY3Jvc3MtZnJh
bWUtYWNjZXNzLWVudW1lcmF0aW9uLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KIAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1lbnVtZXJhdGlvbi10ZXN0
Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
Y3Jvc3MtZnJhbWUtYWNjZXNzLWVudW1lcmF0aW9uLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBh
bmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLWZvci1lbnVtZXJh
dGlvbi10ZXN0Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWVudW1lcmF0aW9uLmh0bWwuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKwogVGhpcyB0ZXN0cyB0aGF0IHZhcmlhYmxl
IG5hbWVzIGNhbid0IGJlIGVudW1lcmF0ZWQgY3Jvc3MgZG9tYWluIChzZWUgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODcpCiAKIAo=
</data>
<flag name="commit-queue"
          id="25953"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44163</attachid>
            <date>2009-12-02 11:08:52 -0800</date>
            <delta_ts>2009-12-02 19:37:53 -0800</delta_ts>
            <desc>Same patch, removing a printf() I missed and fixing *some* of the style-guideline bot&apos;s qualms.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>141910</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTU4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIwIEBACisyMDA5LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIxNDIzNj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJ
bXBsZW1lbnQgSFRNTDUgc3RhdGUgb2JqZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFj
ay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQt
ZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29t
cGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0
ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNl
c3RhdGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2xvYWRpbmcvc3RhdGUtb2JqZWN0LXNlY3Vy
aXR5LWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgRGVyaXZlZCBzb3VyY2VzIGFuZCBwcm9qZWN0
IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgUG9wU3RhdGVFdmVudDoKKyAgICAgICAgKiBkb20vUG9wU3RhdGVF
dmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6UG9wU3Rh
dGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVF
dmVudCk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wU3Rh
dGVFdmVudDo6aXNQb3BTdGF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZl
bnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1BvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAg
ICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNQb3BTdGF0ZUV2
ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5o
OgorCisgICAgICAgIEFkZCB0aGUgIm9ucG9wc3RhdGUiIGF0dHJpYnV0ZToKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmlkbDoKKworICAgICAgICBBZGQgcHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgbWFu
YWdlbWVudCB0byB0aGUgbG9hZGVyIGFuZCBoaXN0b3J5IG1hY2hpbmVyeToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0
b3J5OjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3Rh
dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlv
bik6IEF1Z21lbnRlZCBmcm9tICJzY3JvbGxUb0FuY2hvcigpIiwgY29tYmluaW5nCisgICAgICAg
ICAgYm90aCB0aGUgc2FtZS1kb2N1bWVudCBmcmFnbWVudCBzY3JvbGwgY2FzZSB3aXRoIHRoZSBu
ZXcgc2FtZS1kb2N1bWVudCBzdGF0ZSBvYmplY3QgYWN0aXZhdGlvbiBjYXNlLgorICAgICAgICAo
V2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBsb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0pOiBVc2UgaW5zZXJ0
SXRlbUFmdGVyQ3VycmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6aW5z
ZXJ0SXRlbUFmdGVyQ3VycmVudCk6IE9wdGlvbmFsbHkgaW5zZXJ0IHRoZSBpdGVtIHdpdGhvdXQg
Y2xlYXJpbmcgdGhlIGZvcndhcmQKKyAgICAgICAgICBsaXN0LCBhcyBwdXNoU3RhdGVJdGVtIG1p
Z2h0J3ZlIHNlbGVjdGl2ZWx5IGNsZWFyZWQgb25seSBjZXJ0YWluIGl0ZW1zLCB3aXRoIHRoZSBi
dWxrIG9mIHRoZSBmb3J3YXJkIGxpc3QKKyAgICAgICAgICBtZWFudCB0byByZW1haW4uCisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OnB1c2hTdGF0ZUl0ZW0pOiBDbGVhciB0aGUg
Zm9yd2FyZCBsaXN0ICpvbmx5KiBmb3IgdGhlIHN0YXRlIGl0ZW0ncyBkb2N1bWVudCwgdGhlbiAK
KyAgICAgICAgICBpbnNlcnQgdGhlIG5ldyBpdGVtLgorICAgICAgICAoV2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dC5oOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Ojp1cmxGb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVj
dEFkZGVkKToKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuaDoKKyAgICAgICAgKiBwYWdlL0hpc3Rv
cnkuaWRsOgorCisgICAgICAgIExldCBIaXN0b3J5SXRlbXMgYW5kIERvY3VtZW50cyBhc3NvY2lh
dGUgd2l0aCBlYWNoIG90aGVyLCBhcyB3ZWxsIGFzIGxldHRpbmcgSGlzdG9yeUl0ZW1zIGNvbnRh
aW4gc3RhdGUgb2JqZWN0czoKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5SXRlbTo6fkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtOjpzZXRTdGF0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6
c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmRvY3VtZW50RGV0
YWNoZWQpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlJdGVtOjpzdGF0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
SXRlbTo6ZG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKTogTm90aWZ5IGFsbCBiYWNrL2ZvcndhcmQgaGlzdG9y
eSBpdGVtcyBvd25lZCBieSB0aGlzIERvY3VtZW50IHRoYXQgaXQKKyAgICAgICAgICBpcyBnb2lu
ZyBhd2F5LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVySGlzdG9yeUl0ZW0p
OiBNYW5hZ2UgdGhlIGxpc3Qgb2YgYmFjay9mb3J3YXJkIGhpc3RvcnkgaXRlbXMgdGhpcyBkb2N1
bWVudCBvd25zLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJIaXN0b3J5
SXRlbSk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgIEFkZCB0
aGUgYWJpbGl0eSBmb3IgRG9jdW1lbnRzLCBEb2N1bWVudExvYWRlcnMsIGFuZCBGcmFtZUxvYWRl
ckNsaWVudHMgdG8gYmUgbm90aWZpZWQgd2hlbiBhIERvY3VtZW50cworICAgICAgICBVUkwgY2hh
bmdlcyBhcyB0aGUgcmVzdWx0IG9mIHB1c2hTdGF0ZSgpLCByZXBsYWNlU3RhdGUoKSwgb3IgYSBw
b3BzdGF0ZSBuYXZpZ2F0aW9uOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IElmIHRoZXJlJ3MgYSBwZW5kaW5n
IHN0YXRlIG9iamVjdCwgZGlzcGF0Y2ggdGhlIHBvcHN0YXRlIGV2ZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c3RhdGVQb3BwZWQpOiBJZiBsb2FkaW5nIGlzIGNvbXBsZXRl
LCBkaXNwYXRjaCB0aGUgcG9wc3RhdGUgZXZlbnQuIE90aGVyd2lzZSwgc2V0IAorICAgICAgICAg
IHRoZSBwZW5kaW5nIHN0YXRlIG9iamVjdC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0
VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSk6
CisKKyAgICAgICAgQ2hhbmdlIGhhbmRsaW5nIG9mICJsb2FkaW5nIGEgSGlzdG9yeUl0ZW0iIHRv
IGRpc3Rpbmd1aXNoIGJldHdlZW4gbmV3LURvY3VtZW50IG5hdmlnYXRpb25zIGFuZCBzYW1lLURv
Y3VtZW50CisgICAgICAgIG5hdmlnYXRpb25zLCBjb21iaW5pbmcgdGhlIG9sZCBjb25jZXB0IG9m
IGFuY2hvciBzY3JvbGxzIHdpdGggdGhlIG5ldyBjb25jZXB0IG9mIHN0YXRlIG9iamVjdCBuYXZp
Z2F0aW9uczoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGlj
eSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdhdGVXaXRoaW5Eb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSXRlbSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmdvVG9JdGVtKTogQ2hhbmdlZCB0byBhbGxvdyBzdGF0ZSBv
YmplY3QgYWN0aXZhdGlvbnMgdG8gcGFzcyB0aHJvdWdoIHdpdGhvdXQgdGhlIGxvYWQgc3RvcHBp
bmcuCisKIDIwMDktMTItMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlz
aW9uIDUxNTQ1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MSw2ICsxODEsNyBAQAogI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNQbHVnaW4uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luQXJyYXkuY3BwIgor
I2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTUHJvZ3Jlc3NFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNSYW5nZS5jcHAiCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3
IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAogICAgIFBsdWdp
biBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvcFN0YXRlRXZlbnQgXAogICAgIFBvc2l0aW9u
RXJyb3IgXAogICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBcCiAgICAgUHJvZ3Jlc3NFdmVudCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUxNTg0
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtOTIxMSw2ICs5MjExLDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQb3BTdGF0ZUV2ZW50LmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
CisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1BvcFN0YXRlRXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQb3NpdGlvbkVycm9yLmNwcCINCiAJCQkJPg0K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yODc5NSw2ICsyODg1MSwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUG9wU3Rh
dGVFdmVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cUG9wU3RhdGVFdmVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBvc2l0aW9uLmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkBAIC0zODMzNCw2ICszODM5OCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlci5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00MjQ0NSwx
MCArNDI1MTMsMTAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XENvbG9yLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQotICAgICAgICAgICAgICAgIDxGaWxl
DQotICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcQ29uc29sZVBhbmVsLmpzIg0KLSAgICAgICAgICAgICAgICAgICAgPg0KLSAgICAgICAgICAg
ICAgICA8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcQ29uc29sZVBhbmVsLmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29uc29s
ZVZpZXcuanMiDQogCQkJCQk+DQpAQCAtNDI2NjIsMTEgKzQyNzMwLDExIEBACiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXFRpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFRpbWVsaW5lR3JpZC5qcyINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXFRpbWVsaW5lR3JpZC5qcyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxUaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgsMTIgQEAKIAkJNTE3NDFE
MTAwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwQzBCMDcyNTlBMDBFRDQ0MkMg
LyogQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJD
IC8qIEhpc3RvcnlJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTc0MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcy
NTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJ
dGVtLmNwcCAqLzsgfTsKKwkJNTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRF
MjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxNzRFMjBD
MTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMEIxMEExRjQ5QTAwRjk1RTZGIC8q
IFBvcFN0YXRlRXZlbnQuaWRsICovOyB9OworCQk1MTg5RjAxODEwQjM3ODEzMDBGM0M3MzkgLyog
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODlGMDE3MTBCMzc4MTMwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZl
bnRDdXN0b20uY3BwICovOyB9OworCQk1MTg5RjAxRDEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BT
dGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODlGMDFCMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuY3BwICovOyB9
OworCQk1MTg5RjAxRTEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjAxQzEwQjM3QkQ5
MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxODlGMERFMTBCNDZCMEUw
MEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2
ZW50LmNwcCAqLzsgfTsKIAkJNTE4QTM0QzExMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRC
RTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLzsgfTsKIAkJNTE4QTM0QzIxMDI2
QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4QTM0QkYxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5o
ICovOyB9OwogCQk1MThBMzRDNzEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MThBMzRDNDEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CkBAIC02MzMyLDYgKzYzMzgsMTIgQEAKIAkJNTE3NDFEMEMwQjA3MjU5QTAwRUQ0NDJDIC8q
IEJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0
MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNzQxRDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAv
KiBQb3BTdGF0ZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0ZUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4OUYwMTcxMEIzNzgxMzAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODlGMDFDMTBCMzdCRDkwMEYz
QzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODlG
MEREMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJT
b2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBX
ZWJTb2NrZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNvY2tldC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ5OSw2ICsxMzUxMSw4IEBACiAJCQkJMUEwRDU3
M0YwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5oICovLAogCQkJCUUxMjg0QkIw
MTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJCUUx
Mjg0QkFGMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCAqLywKKwkJ
CQk1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLywKKwkJ
CQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8sCiAJCQkJ
OTMzQTE0QjYwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmNwcCAqLywKIAkJCQk5MzNB
MTRCNzBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCAqLywKIAkJCQlBODY2MjlDQTA5
REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmNwcCAqLywKQEAgLTE0NTc0LDYgKzE0NTg4LDcg
QEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3RvbS5j
cHAgKi8sCisJCQkJNTE4OUYwMTcxMEIzNzgxMzAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8q
IEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcwMDNC
MzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLApAQCAtMTU2OTgsNiArMTU3MTMsOSBAQAog
CQkJCUUxMjg0QUQ5MTA0NDdBRUIwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCAq
LywKIAkJCQk0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwICovLAogCQkJCTQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oICovLAorCQkJCTUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAvKiBQ
b3BTdGF0ZUV2ZW50LmNwcCAqLywKKwkJCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9w
U3RhdGVFdmVudC5oICovLAorCQkJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0
ZUV2ZW50LmlkbCAqLywKIAkJCQlCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovLAogCQkJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICovLAog
CQkJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLywK
QEAgLTE4MjAwLDEyICsxODIxOCwxNCBAQAogCQkJCTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAv
KiBSZW5kZXJSdWJ5QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAw
REVENjU1IC8qIFJlbmRlclJ1YnlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5
QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3
NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE4QzVGQ0E2MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE4QzVGQ0E5MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRT
Y3JpcHRSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxOEM1RkNCODEwQTNDNkYyMDA0
ODQzOEQgLyogU2hhcmVkU2NyaXB0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNDc0
ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTg5RjAxRTEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyog
V2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3
NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NkZB
MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLApA
QCAtMTgzMTEsNiArMTgzMzEsNyBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3
ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZE
RTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFB
RTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8s
CisJCQkJNTE3NEUyMEMxMEExRjQ5QTAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaWRsIGluIFJl
c291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIwMzUzLDYgKzIwMzc0LDkgQEAKIAkJCQkxNDc5RkFFRjEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZB
RjExMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ3OUZBRjMxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxODlGMDE4MTBCMzc4MTMwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg5RjBERTEwQjQ2QjBF
MDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxOEM1RkNB
NTEwQTM5OTFGMDA0ODQzOEQgLyogV2ViS2l0U2hhcmVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE4QzVGQ0E4MTBBMzk5MUYwMDQ4NDM4RCAvKiBXZWJLaXRTaGFyZWRTY3JpcHRSZXBv
c2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE4QzVGQ0I3MTBBM0M2RjIwMDQ4NDM4RCAv
KiBTaGFyZWRTY3JpcHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJKU092ZXJmbG93RXZl
bnQuaCIKICNpbmNsdWRlICJKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJKU1Bv
cFN0YXRlRXZlbnQuaCIKICNpbmNsdWRlICJKU1Byb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJK
U1RleHRFdmVudC5oIgogI2luY2x1ZGUgIkpTVUlFdmVudC5oIgpAQCAtNTcsNiArNTgsNyBAQAog
I2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQu
aCIKICNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAj
aW5jbHVkZSAiVUlFdmVudC5oIgpAQCAtMTQwLDYgKzE0Miw4IEBAIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICBlbHNlIGlmIChldmVudC0+aXNFcnJvckV2ZW50
KCkpCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgRXJyb3JFdmVudCwgZXZlbnQpOwogI2VuZGlmCisgICAgZWxzZSBpZiAoZXZl
bnQtPmlzUG9wU3RhdGVFdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpF
Q1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFBvcFN0YXRlRXZlbnQsIGV2ZW50KTsKICAg
ICBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgRXZlbnQsIGV2ZW50KTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw0ICsxNjMsNTIg
QEAgdm9pZCBKU0hpc3Rvcnk6OmdldE93blByb3BlcnR5TmFtZXMoRXhlYwogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7CiB9CiAKK0pTVmFsdWUgSlNI
aXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBhcmdzLmF0KDApKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgU3RyaW5nIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhl
eGVjLCBhcmdzLmF0KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAKKyAgICBTdHJpbmcgdXJsOworICAgIGlm
IChhcmdzLnNpemUoKSA+IDIpIHsKKyAgICAgICAgdXJsID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBhcmdzLmF0KDIpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQor
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5zdGF0ZU9iamVjdEFkZGVk
KGhpc3RvcnlTdGF0ZSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RQdXNoLCBlYyk7
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorCitKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhl
YywgYXJncy5hdCgwKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFN0cmluZyB0aXRsZSA9IHZhbHVlVG9TdHJpbmdX
aXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgxKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
CisgICAgU3RyaW5nIHVybDsKKyAgICBpZiAoYXJncy5zaXplKCkgPiAyKSB7CisgICAgICAgIHVy
bCA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgy
KSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IGltcGwoKS0+c3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3RhdGUsIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0UmVwbGFjZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50LmgiCisKKyNpbmNsdWRlICJQb3BT
dGF0ZUV2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSlNWYWx1ZSBKU1BvcFN0YXRlRXZlbnQ6OmluaXRQb3BTdGF0ZUV2ZW50KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBjb25zdCBVU3RyaW5nJiB0eXBl
QXJnID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBib29sIGNhbkJ1YmJsZUFyZyA9
IGFyZ3MuYXQoMSkudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgY2FuY2VsYWJsZUFyZyA9IGFy
Z3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpOworICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzdGF0ZU9iamVjdEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4
ZWMsIGFyZ3MuYXQoMykpOworICAgIAorICAgIFBvcFN0YXRlRXZlbnQqIGV2ZW50ID0gc3RhdGlj
X2Nhc3Q8UG9wU3RhdGVFdmVudCo+KGltcGwoKSk7CisgICAgZXZlbnQtPmluaXRQb3BTdGF0ZUV2
ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgc3RhdGVPYmplY3RBcmcp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU0M6OkpTVmFsdWUgSlNQb3BTdGF0
ZUV2ZW50OjpzdGF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIG9iamVjdCA9IHN0YXRpY19jYXN0PFBvcFN0YXRlRXZlbnQqPihpbXBs
KCkpLT5zdGF0ZSgpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKKyAgICAKKyAgICByZXR1cm4gb2JqZWN0LT5kZXNlcmlhbGl6ZShleGVjKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTE1NDUpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MQWxsQ29sbGVjdGlvbi5oIgpAQCAtOTgsNiArOTksNyBAQAogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCkBAIC0xNDcwLDYgKzE0NzIsMTIgQEAg
dm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKICAgICBpZiAocmVuZGVyKQogICAgICAgICByZW5kZXIt
PmRlc3Ryb3koKTsKICAgICAKKyAgICBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiBhc3Nv
Y2lhdGVkSGlzdG9yeUl0ZW1zOworICAgIGFzc29jaWF0ZWRIaXN0b3J5SXRlbXMuc3dhcChtX2Fz
c29jaWF0ZWRIaXN0b3J5SXRlbXMpOworICAgIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+
OjppdGVyYXRvciBlbmQgPSBhc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmVuZCgpOworICAgIGZvciAo
SGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID46Oml0ZXJhdG9yIGkgPSBhc3NvY2lhdGVkSGlz
dG9yeUl0ZW1zLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAgICAgICgqaSktPmRvY3VtZW50
RGV0YWNoZWQodGhpcyk7CisgICAgCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCwgYXMgb3VyIEZy
YW1lIG1pZ2h0IGRlbGV0ZSBpdHNlbGYgYXMgc29vbiBhcyBpdCBkZXRhY2hlcwogICAgIC8vIHVz
LiBIb3dldmVyLCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHN5bWFudGljcywgYXMgaXQn
cyBuZXZlcgogICAgIC8vIHBvc3NpYmxlIHRvIHJlLWF0dGFjaC4gRXZlbnR1YWxseSBEb2N1bWVu
dDo6ZGV0YWNoKCkgc2hvdWxkIGJlIHJlbmFtZWQsCkBAIC0xNzQxLDYgKzE3NDksOSBAQCB2b2lk
IERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCk7CiAgICAgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKICAgICBkaXNwYXRj
aFdpbmRvd0V2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFn
ZXNob3dFdmVudCwgZmFsc2UpLCB0aGlzKTsKKyAgICBpZiAobV9wZW5kaW5nU3RhdGVPYmplY3Qp
CisgICAgICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKG1fcGVu
ZGluZ1N0YXRlT2JqZWN0LnJlbGVhc2UoKSkpOworICAgIAogICAgIGlmIChmKQogICAgICAgICBm
LT5sb2FkZXIoKS0+aGFuZGxlZE9ubG9hZEV2ZW50cygpOwogI2lmZGVmIElOU1RSVU1FTlRfTEFZ
T1VUX1NDSEVEVUxJTkcKQEAgLTQzMTUsNiArNDMyNiw0MiBAQCB2b2lkIERvY3VtZW50OjpzZXRT
ZWN1cml0eU9yaWdpbihTZWN1cml0CiAgICAgaW5pdEROU1ByZWZldGNoKCk7CiB9CiAKK3ZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgRnJhbWUqIGYgPSBmcmFtZSgpOworICAgIGlmICghZikKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2V0VVJMKHVybCk7CisgICAgZi0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbih1cmwpOworCisgICAg
Zi0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFn
ZUZvckZyYW1lKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnN0YXRlUG9wcGVkKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGVPYmplY3QpCit7CisgICAgRnJhbWUqIGYgPSBmcmFtZSgpOworICAg
IGlmICghZikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChmLT5sb2FkZXIoKS0+aXND
b21wbGV0ZSgpKQorICAgICAgICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNy
ZWF0ZShzdGF0ZU9iamVjdCkpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nU3RhdGVPYmpl
Y3QgPSBzdGF0ZU9iamVjdDsKK30KKwordm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIW1fYXNzb2NpYXRlZEhpc3RvcnlJ
dGVtcy5jb250YWlucyhpdGVtKSk7CisgICAgbV9hc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmFkZChp
dGVtKTsKK30KKwordm9pZCBEb2N1bWVudDo6dW5yZWdpc3Rlckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQoreworICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRIaXN0b3J5SXRlbXMuY29udGFp
bnMoaXRlbSkgfHwgbV9hc3NvY2lhdGVkSGlzdG9yeUl0ZW1zLmlzRW1wdHkoKSk7CisgICAgbV9h
c3NvY2lhdGVkSGlzdG9yeUl0ZW1zLnJlbW92ZShpdGVtKTsKK30KKwogdm9pZCBEb2N1bWVudDo6
dXBkYXRlRm9jdXNBcHBlYXJhbmNlU29vbigpCiB7CiAgICAgaWYgKCFtX3VwZGF0ZUZvY3VzQXBw
ZWFyYW5jZVRpbWVyLmlzQWN0aXZlKCkpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7Ci0gICAgY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiAg
ICAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTENvbGxlY3Rpb247CiAg
ICAgY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CkBAIC03Nyw2ICs3Niw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MSGVhZEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKICAgICBjbGFzcyBIVE1MTWFwRWxlbWVudDsKKyAgICBjbGFzcyBIaXN0b3J5SXRl
bTsKKyAgICBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKICAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OwogICAgIGNsYXNzIEludFBvaW50OwogICAgIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsK
QEAgLTkzLDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlbmRlclZp
ZXc7CiAgICAgY2xhc3MgU2NyaXB0RWxlbWVudERhdGE7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmln
aW47CisgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFNlZ21lbnRl
ZFN0cmluZzsKICAgICBjbGFzcyBTZXR0aW5nczsKICAgICBjbGFzcyBTdHlsZVNoZWV0OwpAQCAt
ODg3LDYgKzg4OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgdGhhdCBhbHJlYWR5IGNvbnRh
aW5zIGNvbnRlbnQuCiAgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiop
OwogCisgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYp
OworICAgIHZvaWQgc3RhdGVQb3BwZWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CisgICAgdm9p
ZCByZWdpc3Rlckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSk7CisKICAgICBib29sIHByb2Nlc3Np
bmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQ7IH0KIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTEwNjUsNiArMTA3Miw4IEBAIHByaXZhdGU6CiAgICAg
RWxlbWVudCogbV9jc3NUYXJnZXQ7CiAgICAgCiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdMb2FkRXZl
bnQ7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVPYmpl
Y3Q7CisgICAgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gbV9hc3NvY2lhdGVkSGlzdG9y
eUl0ZW1zOwogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fb3Zlck1pbmltdW1M
YXlvdXRUaHJlc2hvbGQ7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9k
b20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDExIEBAIGJvb2wgRXZl
bnQ6OmlzUGFnZVRyYW5zaXRpb25FdmVudCgpIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgRXZlbnQ6OmlzUG9wU3RhdGVFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIEV2ZW50Ojppc1Byb2dyZXNzRXZlbnQoKSBjb25zdAogewogICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVyZmxvd0V2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1BhZ2VUcmFuc2l0aW9uRXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBi
b29sIGlzUG9wU3RhdGVFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9n
cmVzc0V2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmlt
YXRpb25FdmVudCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNTE1NDUpCisrKyBX
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHBhZ2VoaWRlKSBcCiAgICAgbWFjcm8ocGFn
ZXNob3cpIFwKICAgICBtYWNybyhwYXN0ZSkgXAorICAgIG1hY3JvKHBvcHN0YXRlKSBcCiAgICAg
bWFjcm8ocmVhZHlzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlc2V0KSBcCiAgICAgbWFjcm8o
cmVzaXplKSBcCkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICov
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvcFN0YXRlRXZl
bnQ6OlBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0KQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGZhbHNlLCB0
cnVlKQorICAgICwgbV9zdGF0ZU9iamVjdChzdGF0ZU9iamVjdCkKK3sKK30KKyAgICAKK3ZvaWQg
UG9wU3RhdGVFdmVudDo6aW5pdFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpCit7CisgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpOworCisgICAgbV9zdGF0ZU9iamVjdCA9IHN0YXRlT2JqZWN0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpZm5kZWYgUG9wU3RhdGVFdmVudF9oCisjZGVmaW5lIFBvcFN0YXRlRXZlbnRfaAorCisjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNz
IFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cFN0YXRlRXZlbnQoc3RhdGVPYmplY3QpKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRQb3BTdGF0
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICBib29sIGlz
UG9wU3RhdGVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgpOyB9
ICAgIAorCitwcml2YXRlOgorICAgIFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc3Rh
dGVPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3BT
dGF0ZUV2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworbW9kdWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBQb3BTdGF0ZUV2ZW50IDogRXZlbnQgeworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGluaXRQb3BTdGF0ZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhbnkgc3RhdGVBcmcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3Rv
bUdldHRlcl0gYW55IHN0YXRlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hl
LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTU0LDEyICs1NSwxNiBAQCBCYWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2Fy
ZExpc3QoKQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPiBwcnBJdGVtKQogeworICAgIGluc2VydEl0ZW1BZnRlckN1cnJlbnQocHJwSXRlbSwg
dHJ1ZSk7Cit9Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6aW5zZXJ0SXRlbUFmdGVyQ3VycmVudChQ
YXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtLCBib29sIHJlbW92ZUZvcndhcmRMaXN0KQor
ewogICAgIEFTU0VSVChwcnBJdGVtKTsKICAgICBpZiAobV9jYXBhY2l0eSA9PSAwIHx8ICFtX2Vu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRo
ZSBmb3J3YXJkIGxpc3QgICAgCi0gICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5k
ZXgpIHsKKyAgICBpZiAocmVtb3ZlRm9yd2FyZExpc3QgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVu
dEl0ZW1JbmRleCkgewogICAgICAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gbV9jdXJyZW50ICsg
MTsKICAgICAgICAgd2hpbGUgKG1fZW50cmllcy5zaXplKCkgPiB0YXJnZXRTaXplKSB7CiAgICAg
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMubGFzdCgpOwpAQCAt
NzksOCArODQsOCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRyCiAg
ICAgICAgIG1fY3VycmVudC0tOwogICAgIH0KICAgICAKLSAgICBtX2VudHJpZXMuYXBwZW5kKHBy
cEl0ZW0pOwotICAgIG1fZW50cnlIYXNoLmFkZChtX2VudHJpZXMubGFzdCgpKTsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBwcnBJdGVtKTsKICAgICBtX2N1cnJlbnQrKzsKIH0KIApAQCAtMjIyLDYgKzIyNywz
MCBAQCBIaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0OjplbnRyCiAgICAgcmV0dXJu
IG1fZW50cmllczsKIH0KIAordm9pZCBCYWNrRm9yd2FyZExpc3Q6OnB1c2hTdGF0ZUl0ZW0oUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4gbmV3SXRlbSkKK3sKKyAgICBBU1NFUlQobmV3SXRlbSk7Cisg
ICAgQVNTRVJUKG5ld0l0ZW0tPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChuZXdJdGVtLT5zdGF0
ZU9iamVjdCgpKTsKKyAgICAKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGN1cnJlbnQgPSBjdXJy
ZW50SXRlbSgpOworICAgIEFTU0VSVChjdXJyZW50KTsKKworICAgIERvY3VtZW50KiBuZXdJdGVt
RG9jdW1lbnQgPSBuZXdJdGVtLT5kb2N1bWVudCgpOworICAgIHdoaWxlIChIaXN0b3J5SXRlbSog
aXRlbSA9IGZvcndhcmRJdGVtKCkpIHsKKyAgICAgICAgaWYgKGl0ZW0tPmRvY3VtZW50KCkgIT0g
bmV3SXRlbURvY3VtZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJlbW92ZUl0ZW0o
aXRlbSk7CisgICAgfQorCisgICAgaW5zZXJ0SXRlbUFmdGVyQ3VycmVudChuZXdJdGVtLCBmYWxz
ZSk7CisgICAgCisgICAgaWYgKCFjdXJyZW50LT5kb2N1bWVudCgpKSB7CisgICAgICAgIGN1cnJl
bnQtPnNldERvY3VtZW50KG5ld0l0ZW1Eb2N1bWVudCk7CisgICAgICAgIGN1cnJlbnQtPnNldFN0
YXRlT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkpOworICAgIH0KK30KKwog
dm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkKIHsKICAgICBpbnQgc2l6ZSA9IG1fZW50cmll
cy5zaXplKCk7CkBAIC0yNTQsNyArMjgzLDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnJlbW92
ZUl0ZW0oSGlzdG9yeQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50ID0gbV9lbnRyaWVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
ID49IGNvdW50KQotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBjb3VudCA/IGNvdW50
LTEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9
IGNvdW50ID8gY291bnQgLSAxIDogTm9DdXJyZW50SXRlbUluZGV4OwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRM
aXN0LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQYWdlOwor
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3RyaW5nOwogCiB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhpc3RvcnlJdGVtSGFzaFNldDsKQEAgLTk2LDEy
ICs5OSwxNiBAQCBwdWJsaWM6IAogICAgIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwog
ICAgIEhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CiAgICAgCisgICAgdm9pZCBwdXNoU3Rh
dGVJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKwogI2lmIEVOQUJMRShXTUwpCiAgICAg
dm9pZCBjbGVhcldNTFBhZ2VIaXN0b3J5KCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBCYWNr
Rm9yd2FyZExpc3QoUGFnZSopOworICAgIAorICAgIHZvaWQgaW5zZXJ0SXRlbUFmdGVyQ3VycmVu
dChQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiwgYm9vbCByZW1vdmVGb3J3YXJkTGlzdCk7CiAKICAg
ICBQYWdlKiBtX3BhZ2U7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pIApJbmRleDogV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uY3BwCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgSGlzdG9yeUl0ZW06Okhp
c3RvcnlJdGVtKCkKICAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZShmYWxzZSkKICAgICAsIG1f
aXNUYXJnZXRJdGVtKGZhbHNlKQogICAgICwgbV92aXNpdENvdW50KDApCisgICAgLCBtX2RvY3Vt
ZW50KDApCiB7CiB9CiAKQEAgLTYwLDYgKzYxLDcgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlKGZhbHNlKQogICAg
ICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKKyAgICAsIG1f
ZG9jdW1lbnQoMCkKIHsgICAgCiAgICAgaWNvbkRhdGFiYXNlKCktPnJldGFpbkljb25Gb3JQYWdl
VVJMKG1fdXJsU3RyaW5nKTsKIH0KQEAgLTc0LDYgKzc2LDcgQEAgSGlzdG9yeUl0ZW06Okhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlKGZhbHNl
KQogICAgICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKKyAg
ICAsIG1fZG9jdW1lbnQoMCkKIHsKICAgICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNvbkZvclBh
Z2VVUkwobV91cmxTdHJpbmcpOwogfQpAQCAtODksNiArOTIsNyBAQCBIaXN0b3J5SXRlbTo6SGlz
dG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJsCiAgICAgLCBtX2xhc3RWaXNpdFdhc0ZhaWx1cmUoZmFs
c2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQor
ICAgICwgbV9kb2N1bWVudCgwKQogeyAgICAKICAgICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNv
bkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOwogfQpAQCAtOTcsNiArMTAxLDcgQEAgSGlzdG9yeUl0
ZW06On5IaXN0b3J5SXRlbSgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFBhZ2UpOwogICAgIGlj
b25EYXRhYmFzZSgpLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOworICAgIHNl
dERvY3VtZW50KDApOwogfQogCiBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0
IEhpc3RvcnlJdGVtJiBpdGVtKQpAQCAtMzc4LDYgKzM4MywzMyBAQCB2b2lkIEhpc3RvcnlJdGVt
OjpzZXRJc1RhcmdldEl0ZW0oYm9vbCBmCiAgICAgbV9pc1RhcmdldEl0ZW0gPSBmbGFnOwogfQog
Cit2b2lkIEhpc3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gb2JqZWN0KQoreworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBtX3N0
YXRlT2JqZWN0ID0gb2JqZWN0OworfQorCit2b2lkIEhpc3RvcnlJdGVtOjpzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAgbV9kb2N1
bWVudC0+dW5yZWdpc3Rlckhpc3RvcnlJdGVtKHRoaXMpOzQwCisgICAgaWYgKGRvY3VtZW50KQor
ICAgICAgICBkb2N1bWVudC0+cmVnaXN0ZXJIaXN0b3J5SXRlbSh0aGlzKTsKKyAgICAgICAgCisg
ICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OworICAgIAorfQorCit2b2lkIEhpc3RvcnlJdGVtOjpk
b2N1bWVudERldGFjaGVkKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQobV9kb2N1
bWVudCA9PSBkb2N1bWVudCk7CisgICAgbV9kb2N1bWVudCA9IDA7CisgICAgbV9zdGF0ZU9iamVj
dCA9IDA7Cit9CisKIHZvaWQgSGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhp
c3RvcnlJdGVtPiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hp
bGQtPnRhcmdldCgpKSk7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gNTE1NDUp
CisrKyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0xMjgsNiArMTI5
LDEyIEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHNldElzVGFyZ2V0SXRlbShib29sKTsKICAgICAKKyAgICB2b2lkIHNldFN0YXRlT2JqZWN0
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBvYmplY3QpOworICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc3RhdGVPYmplY3QoKSB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgp
OyB9CisgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICB2b2lkIGRvY3VtZW50
RGV0YWNoZWQoRG9jdW1lbnQqKTsKKyAgICAKICAgICB2b2lkIHNldEZvcm1JbmZvRnJvbVJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBzZXRGb3JtRGF0YShQYXNzUmVm
UHRyPEZvcm1EYXRhPik7CiAgICAgdm9pZCBzZXRGb3JtQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
Jik7CkBAIC0yMDksNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXJlbnQ7CiAg
ICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fZGlzcGxheVRpdGxlOworICAgIFN0cmlu
ZyBtX3N0YXRlRGF0YTsKICAgICAKICAgICBkb3VibGUgbV9sYXN0VmlzaXRlZFRpbWU7CiAgICAg
Ym9vbCBtX2xhc3RWaXNpdFdhc0hUVFBOb25HZXQ7CkBAIC0yMjYsNiArMjM0LDEwIEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX3JlZGlyZWN0VVJMczsKIAorICAg
IC8vIFN1cHBvcnQgZm9yIEhUTUw1IEhpc3RvcnkKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtX3N0YXRlT2JqZWN0OworICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIAog
ICAgIC8vIGluZm8gdXNlZCB0byByZXBvc3QgZm9ybSBkYXRhCiAgICAgUmVmUHRyPEZvcm1EYXRh
PiBtX2Zvcm1EYXRhOwogICAgIFN0cmluZyBtX2Zvcm1Db250ZW50VHlwZTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAg
b25wYXN0ZQogb25wYXVzZQogb25wbGF5CiBvbnBsYXlpbmcKK29ucG9wc3RhdGUKIG9ucHJvZ3Jl
c3MKIG9ucmF0ZWNoYW5nZQogb25yZXNldApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBvbnBhZ2VzaG93QXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGFnZXNob3dFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7Cisg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucG9wc3RhdGVBdHRyKQorICAgICAgICBkb2N1
bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3Bz
dGF0ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1l
KCksIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKICAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuYmx1ckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCkt
PmZyYW1lKCksIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25mb2N1c0F0
dHIpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA1MTU0NSkKKysr
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5
LDcgKzE5OSw3IEBAIGNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAogICAg
IHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxh
Y2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgbV9vcmlnaW5hbFJlcXVlc3RDb3B5LnNldFVSTCh1cmwpOwog
ICAgIG1fcmVxdWVzdC5zZXRVUkwodXJsKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
cmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Y29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2b2lkIHJlcGxhY2VS
ZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZXBs
YWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYpOwogICAg
ICAgICBib29sIGlzU3RvcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBpbmc7IH0KICAg
ICAgICAgdm9pZCBzdG9wTG9hZGluZyhEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3Rv
cCk7CiAgICAgICAgIHZvaWQgc2V0Q29tbWl0dGVkKGJvb2wgY29tbWl0dGVkKSB7IG1fY29tbWl0
dGVkID0gY29tbWl0dGVkOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNTE1
NDUpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91YmxlKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFt
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk0LDUyICsxNjk0LDY5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnNldEZpcnN0UGFydHlGb3JDb29raWUKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zZXRG
aXJzdFBhcnR5Rm9yQ29va2llcyh1cmwpOwogfQogCi1jbGFzcyBIYXNoQ2hhbmdlRXZlbnRUYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPEhhc2hDaGFuZ2VFdmVudFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgSGFzaENoYW5nZUV2
ZW50VGFzayhkb2N1bWVudCk7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmhh
c2hjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAg
ICBIYXNoQ2hhbmdlRXZlbnRUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50KQotICAg
ICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kb2N1
bWVudCk7Ci0gICAgfQotICAgIAotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKLX07
Ci0KIC8vIFRoaXMgZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRv
ZXMsIGV4Y2VwdCBpdCByZWxpZXMgb24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwg
YWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMg
dGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9BbmNob3Io
Y29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNv
bnN0IEtVUkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9iamVjdCwgYm9vbCBp
c05ld05hdmlnYXRpb24pCiB7Ci0gICAgQVNTRVJUKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIodXJsLCBtX1VSTCkpOwotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCwgbV9VUkwpICYmICFlcXVhbElnbm9yaW5nTnVsbGl0eSh1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCksIG1fVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSkgewotICAgICAgICBEb2N1bWVu
dCogY3VycmVudERvY3VtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgY3VycmVu
dERvY3VtZW50LT5wb3N0VGFzayhIYXNoQ2hhbmdlRXZlbnRUYXNrOjpjcmVhdGUoY3VycmVudERv
Y3VtZW50KSk7CisgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXRlIG9iamVjdCwgd2UgY2Fubm90IGFs
c28gYmUgYSBuZXcgbmF2aWdhdGlvbi4KKyAgICBBU1NFUlQoIXN0YXRlT2JqZWN0IHx8IChzdGF0
ZU9iamVjdCAmJiAhaXNOZXdOYXZpZ2F0aW9uKSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGRhdGEg
c291cmNlJ3MgcmVxdWVzdCB3aXRoIHRoZSBuZXcgVVJMIHRvIGZha2UgdGhlIFVSTCBjaGFuZ2UK
KyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVUkwodXJsKTsKKyAgICBkb2N1bWVudExvYWRl
cigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKKyAg
ICBpZiAoaXNOZXdOYXZpZ2F0aW9uICYmICFzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudCh1
cmwpICYmICFzdGF0ZU9iamVjdCkgeworICAgICAgICAvLyBOQjogbXVzdCBoYXBwZW4gYWZ0ZXIg
cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCksIHNpbmNlIHdlIGFk
ZCAKKyAgICAgICAgLy8gYmFzZWQgb24gdGhlIGN1cnJlbnQgcmVxdWVzdC4gTXVzdCBhbHNvIGhh
cHBlbiBiZWZvcmUgd2Ugb3BlblVSTCBhbmQgZGlzcGxhY2UgdGhlIAorICAgICAgICAvLyBzY3Jv
bGwgcG9zaXRpb24sIHNpbmNlIGFkZGluZyB0aGUgQkYgaXRlbSB3aWxsIHNhdmUgYXdheSBzY3Jv
bGwgc3RhdGUuCisgICAgICAgIAorICAgICAgICAvLyBOQjI6ICBJZiB3ZSB3ZXJlIGxvYWRpbmcg
YSBsb25nLCBzbG93IGRvYywgYW5kIHRoZSB1c2VyIGFuY2hvciBuYXYnZWQgYmVmb3JlCisgICAg
ICAgIC8vIGl0IHdhcyBkb25lLCBjdXJySXRlbSBpcyBub3cgc2V0IHRoZSB0aGF0IHNsb3cgZG9j
LCBhbmQgcHJldkl0ZW0gaXMgd2hhdGV2ZXIgd2FzCisgICAgICAgIC8vIGJlZm9yZSBpdC4gIEFk
ZGluZyB0aGUgYi9mIGl0ZW0gd2lsbCBidW1wIHRoZSBzbG93IGRvYyBkb3duIHRvIHByZXZJdGVt
LCBldmVuCisgICAgICAgIC8vIHRob3VnaCBpdHMgbG9hZCBpcyBub3QgeWV0IGRvbmUuICBJIHRo
aW5rIHRoaXMgYWxsIHdvcmtzIG91dCBPSywgZm9yIG9uZSBiZWNhdXNlCisgICAgICAgIC8vIHdl
IGhhdmUgYWxyZWFkeSBzYXZlZCBhd2F5IHRoZSBzY3JvbGwgYW5kIGRvYyBzdGF0ZSBmb3IgdGhl
IGxvbmcgc2xvdyBsb2FkLAorICAgICAgICAvLyBidXQgaXQncyBub3QgYW4gb2J2aW91cyBjYXNl
LgorCisgICAgICAgIGhpc3RvcnkoKS0+dXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRT
Y3JvbGwoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG1fVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkgIT0gbV9VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgbV9VUkwgPSB1cmw7Ci0gICAg
aGlzdG9yeSgpLT51cGRhdGVGb3JBbmNob3JTY3JvbGwoKTsKKyAgICBoaXN0b3J5KCktPnVwZGF0
ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhl
IGF1dG9zY3JvbGwvcGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xs
b3dpbmcgdGhlIGxpbmsgdG8gdGhlIGFuY2hvcgotICAgIG1fZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgc3RhcnRlZCgpOwotICAgIGlmIChGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgIHZpZXctPnNjcm9sbFRvRnJhZ21l
bnQobV9VUkwpOwotCisgICAgaWYgKGhhc2hDaGFuZ2UpCisgICAgICAgIG1fZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgCiAgICAgLy8gSXQncyBpbXBv
cnRhbnQgdG8gbW9kZWwgdGhpcyBhcyBhIGxvYWQgdGhhdCBzdGFydHMgYW5kIGltbWVkaWF0ZWx5
IGZpbmlzaGVzLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHBhcmVudCBmcmFtZSBtYXkgdGhpbmsg
d2UgbmV2ZXIgZmluaXNoZWQgbG9hZGluZy4KKyAgICBzdGFydGVkKCk7CisgICAgCisgICAgaWYg
KGhhc2hDaGFuZ2UpCisgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3
KCkpCisgICAgICAgICAgICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KG1fVVJMKTsKKwogICAgIG1f
aXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29tcGxldGVkKCk7CisKKyAgICBpZiAoaXNO
ZXdOYXZpZ2F0aW9uKSB7CisgICAgICAgIC8vIFRoaXMgd2lsbCBjbGVhciBwcmV2aW91c0l0ZW0g
ZnJvbSB0aGUgcmVzdCBvZiB0aGUgZnJhbWUgdHJlZSB0aGF0IGRpZG4ndAorICAgICAgICAvLyBk
b2luZyBhbnkgbG9hZGluZy4gV2UgbmVlZCB0byBtYWtlIGEgcGFzcyBvbiB0aGlzIG5vdywgc2lu
Y2UgZm9yIGFuY2hvciBuYXYKKyAgICAgICAgLy8gd2UnbGwgbm90IGdvIHRocm91Z2ggYSByZWFs
IGxvYWQgYW5kIHJlYWNoIENvbXBsZXRlZCBzdGF0ZS4KKyAgICAgICAgY2hlY2tMb2FkQ29tcGxl
dGUoKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVPYmplY3QpIHsKKyAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QpOworICAgICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoaGFzaENoYW5nZSkgeworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5k
aXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmhhc2hjaGFuZ2VF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpOworICAgIH0KKyAgICAKKyAgICAvLyBGcmFtZUxvYWRlckNs
aWVudDo6ZGlkRmluaXNoTG9hZCgpIHRlbGxzIHRoZSBpbnRlcm5hbCBsb2FkIGRlbGVnYXRlIHRo
ZSBsb2FkIGZpbmlzaGVkIHdpdGggbm8gZXJyb3IKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9h
ZCgpOwogfQogCiBib29sIEZyYW1lTG9hZGVyOjppc0NvbXBsZXRlKCkgY29uc3QKQEAgLTMzNDks
NDAgKzMzNjYsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlRnJhZ21lbnRTYwog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51
ZSkKIHsKLSAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmcgfHwgcG9s
aWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGVSZWRpcmVjdFdpdGhMb2Nr
ZWRCYWNrRm9yd2FyZExpc3Q7CiAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAK
ICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVy
bCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgCi0gICAgbV9kb2N1bWVudExvYWRlci0+cmVwbGFjZVJl
cXVlc3RVUkxGb3JBbmNob3JTY3JvbGwodXJsKTsKLSAgICBpZiAoIWlzUmVkaXJlY3QgJiYgIXNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KHVybCkpIHsKLSAgICAgICAgLy8gTkI6IG11c3Qg
aGFwcGVuIGFmdGVyIF9zZXRVUkwsIHNpbmNlIHdlIGFkZCBiYXNlZCBvbiB0aGUgY3VycmVudCBy
ZXF1ZXN0LgotICAgICAgICAvLyBNdXN0IGFsc28gaGFwcGVuIGJlZm9yZSB3ZSBvcGVuVVJMIGFu
ZCBkaXNwbGFjZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLCBzaW5jZQotICAgICAgICAvLyBhZGRpbmcg
dGhlIEJGIGl0ZW0gd2lsbCBzYXZlIGF3YXkgc2Nyb2xsIHN0YXRlLgotICAgICAgICAKLSAgICAg
ICAgLy8gTkIyOiAgSWYgd2Ugd2VyZSBsb2FkaW5nIGEgbG9uZywgc2xvdyBkb2MsIGFuZCB0aGUg
dXNlciBhbmNob3IgbmF2J2VkIGJlZm9yZQotICAgICAgICAvLyBpdCB3YXMgZG9uZSwgY3Vyckl0
ZW0gaXMgbm93IHNldCB0aGUgdGhhdCBzbG93IGRvYywgYW5kIHByZXZJdGVtIGlzIHdoYXRldmVy
IHdhcwotICAgICAgICAvLyBiZWZvcmUgaXQuICBBZGRpbmcgdGhlIGIvZiBpdGVtIHdpbGwgYnVt
cCB0aGUgc2xvdyBkb2MgZG93biB0byBwcmV2SXRlbSwgZXZlbgotICAgICAgICAvLyB0aG91Z2gg
aXRzIGxvYWQgaXMgbm90IHlldCBkb25lLiAgSSB0aGluayB0aGlzIGFsbCB3b3JrcyBvdXQgT0ss
IGZvciBvbmUgYmVjYXVzZQotICAgICAgICAvLyB3ZSBoYXZlIGFscmVhZHkgc2F2ZWQgYXdheSB0
aGUgc2Nyb2xsIGFuZCBkb2Mgc3RhdGUgZm9yIHRoZSBsb25nIHNsb3cgbG9hZCwKLSAgICAgICAg
Ly8gYnV0IGl0J3Mgbm90IGFuIG9idmlvdXMgY2FzZS4KLQotICAgICAgICBoaXN0b3J5KCktPnVw
ZGF0ZUJhY2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Nyb2xsKCk7Ci0gICAgfQotICAgIAotICAg
IHNjcm9sbFRvQW5jaG9yKHVybCk7Ci0gICAgCi0gICAgaWYgKCFpc1JlZGlyZWN0KQotICAgICAg
ICAvLyBUaGlzIHdpbGwgY2xlYXIgcHJldmlvdXNJdGVtIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGZy
YW1lIHRyZWUgdGhhdCBkaWRuJ3QKLSAgICAgICAgLy8gZG9pbmcgYW55IGxvYWRpbmcuIFdlIG5l
ZWQgdG8gbWFrZSBhIHBhc3Mgb24gdGhpcyBub3csIHNpbmNlIGZvciBhbmNob3IgbmF2Ci0gICAg
ICAgIC8vIHdlJ2xsIG5vdCBnbyB0aHJvdWdoIGEgcmVhbCBsb2FkIGFuZCByZWFjaCBDb21wbGV0
ZWQgc3RhdGUuCi0gICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0gCi0gICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7Ci0gICAgbV9jbGllbnQtPmRp
ZEZpbmlzaExvYWQoKTsKKyAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21p
bmcgfHwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGVSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q7ICAgIAorICAgIGxvYWRJblNhbWVEb2N1bWVudChy
ZXF1ZXN0LnVybCgpLCAwLCAhaXNSZWRpcmVjdCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OnNo
b3VsZFNjcm9sbFRvQW5jaG9yKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRnJhbWVMb2FkVHlwZSBs
b2FkVHlwZSwgY29uc3QgS1VSTCYgdXJsKQpAQCAtMzY1NywxNCArMzY0Nyw1MiBAQCBGcmFtZSog
RnJhbWVMb2FkZXI6OmZpbmRGcmFtZUZvck5hdmlnYXRpCiAgICAgcmV0dXJuIGZyYW1lOwogfQog
Ci0vLyBMb2FkcyBjb250ZW50IGludG8gdGhpcyBmcmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3Rv
cnkgaXRlbQordm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVXaXRoaW5Eb2N1bWVudChIaXN0b3J5
SXRlbSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIWl0ZW0tPmRvY3VtZW50KCkgfHwgaXRlbS0+ZG9j
dW1lbnQoKSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKworICAgIC8vIFNhdmUgdXNlciB2aWV3
IHN0YXRlIHRvIHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBoZXJlIHNpbmNlIHdlIGRvbid0IGRv
IGEgbm9ybWFsIGxvYWQuCisgICAgLy8gRklYTUU6IERvZXMgZm9ybSBzdGF0ZSBuZWVkIHRvIGJl
IHNhdmVkIGhlcmUgdG9vPworICAgIGhpc3RvcnkoKS0+c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSk7CisgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRC
eVVzZXIoZmFsc2UpOworCisgICAgaGlzdG9yeSgpLT5zZXRDdXJyZW50SXRlbShpdGVtKTsKKyAg
ICAgICAgCisgICAgLy8gbG9hZEluU2FtZURvY3VtZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUg
VVJMIGFuZCBub3RpZmllcyBsb2FkIGRlbGVnYXRlcyBvZiBhICJmYWtlIiBsb2FkCisgICAgbG9h
ZEluU2FtZURvY3VtZW50KGl0ZW0tPnVybCgpLCBpdGVtLT5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7
CisKKyAgICAvLyBSZXN0b3JlIHVzZXIgdmlldyBzdGF0ZSBmcm9tIHRoZSBjdXJyZW50IGhpc3Rv
cnkgaXRlbSBoZXJlIHNpbmNlIHdlIGRvbid0IGRvIGEgbm9ybWFsIGxvYWQuCisgICAgLy8gRXZl
biB0aG91Z2ggd2UganVzdCBtYW51YWxseSBzZXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtLCB0
aGlzIEFTU0VSVCB2ZXJpZmllcyBub3RoaW5nIAorICAgIC8vIGluc2lkZSBvZiBsb2FkSW5TYW1l
RG9jdW1lbnQoKSBjYXVzZWQgaXQgdG8gY2hhbmdlLgorICAgIEFTU0VSVChoaXN0b3J5KCktPmN1
cnJlbnRJdGVtKCkgPT0gaXRlbSk7CisgICAgaGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUoKTsKK30KKwogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJl
YWxseSBiZSBzcGxpdCBpbnRvIGEgY291cGxlIHBpZWNlcywgc29tZSBvZgogLy8gd2hpY2ggc2hv
dWxkIGJlIG1ldGhvZHMgb2YgSGlzdG9yeUNvbnRyb2xsZXIgYW5kIHNvbWUgb2Ygd2hpY2ggc2hv
dWxkIGJlCiAvLyBtZXRob2RzIG9mIEZyYW1lTG9hZGVyLgotdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCit2b2lkIEZy
YW1lTG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jdW1lbnQoSGlzdG9yeUl0ZW0qIGl0ZW0s
IEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAvLyBSZW1lbWJlciB0aGlzIGl0ZW0gc28gd2UgY2FuIHRyYXZl
cnNlIGFueSBjaGlsZCBpdGVtcyBhcyBjaGlsZCBmcmFtZXMgbG9hZAorICAgIGhpc3RvcnkoKS0+
c2V0UHJvdmlzaW9uYWxJdGVtKGl0ZW0pOworICAgIAorICAgIC8vIENoZWNrIGlmIHdlJ2xsIGJl
IHVzaW5nIHRoZSBwYWdlIGNhY2hlLiAgV2Ugb25seSB1c2UgdGhlIHBhZ2UgY2FjaGUKKyAgICAv
LyBpZiBvbmUgZXhpc3RzIGFuZCBpdCBpcyBsZXNzIHRoYW4gX2JhY2tGb3J3YXJkQ2FjaGVFeHBp
cmF0aW9uSW50ZXJ2YWwKKyAgICAvLyBzZWNvbmRzIG9sZC4gIElmIHRoZSBjYWNoZSBpcyBleHBp
cmVkIGl0IGdldHMgZmx1c2hlZCBoZXJlLgorICAgIGlmIChSZWZQdHI8Q2FjaGVkUGFnZT4gY2Fj
aGVkUGFnZSA9IHBhZ2VDYWNoZSgpLT5nZXQoaXRlbSkpIHsKKyAgICAgICAgICAgIAorICAgICAg
ICAvLyBGSVhNRTogMTgwMCBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCwgaXQgc2hvdWxkIGNvbWUg
ZnJvbQorICAgICAgICAvLyBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFs
S2V5IGluIFdlYktpdC4KKyAgICAgICAgLy8gT3Igd2Ugc2hvdWxkIHJlbW92ZSBXZWJLaXRCYWNr
Rm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5LgorICAgICAgICBpZiAoY3VycmVudFRp
bWUoKSAtIGNhY2hlZFBhZ2UtPnRpbWVTdGFtcCgpIDw9IDE4MDApIHsKKyAgICAgICAgICAgIGxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIoY2FjaGVkUGFnZS0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZFR5
cGUsIDApOyAgIAorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBMT0coUGFnZUNhY2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2sv
Zm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaGlzdG9yeSgp
LT5wcm92aXNpb25hbEl0ZW0oKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAg
ICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKGl0ZW0pOworICAgIH0KIAogICAgIEtVUkwgaXRlbVVS
TCA9IGl0ZW0tPnVybCgpOwogICAgIEtVUkwgaXRlbU9yaWdpbmFsVVJMID0gaXRlbS0+b3JpZ2lu
YWxVUkwoKTsKQEAgLTM2NzMsMTM4ICszNzAxLDk2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJ
dGVtKEhpc3RvcnlJdGVtKiAKICAgICAgICAgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCkt
PnVybCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpdGVtLT5mb3JtRGF0YSgp
OwogCi0gICAgLy8gQXJlIHdlIG5hdmlnYXRpbmcgdG8gYW4gYW5jaG9yIHdpdGhpbiB0aGUgcGFn
ZT8KLSAgICAvLyBOb3RlIGlmIHdlIGhhdmUgY2hpbGQgZnJhbWVzIHdlIGRvIGEgcmVhbCByZWxv
YWQsIHNpbmNlIHRoZSBjaGlsZCBmcmFtZXMgbWlnaHQgbm90Ci0gICAgLy8gbWF0Y2ggb3VyIGN1
cnJlbnQgZnJhbWUgc3RydWN0dXJlLCBvciB0aGV5IG1pZ2h0IG5vdCBoYXZlIHRoZSByaWdodCBj
b250ZW50LiAgV2UgY291bGQKLSAgICAvLyBjaGVjayBmb3IgYWxsIHRoYXQgYXMgYW4gYWRkaXRp
b25hbCBvcHRpbWl6YXRpb24uCi0gICAgLy8gV2UgYWxzbyBkbyBub3QgZG8gYW5jaG9yLXN0eWxl
IG5hdmlnYXRpb24gaWYgd2UncmUgcG9zdGluZyBhIGZvcm0gb3IgbmF2aWdhdGluZyBmcm9tCi0g
ICAgLy8gYSBwYWdlIHRoYXQgd2FzIHJlc3VsdGVkIGZyb20gYSBmb3JtIHBvc3QuCi0gICAgYm9v
bCBzaG91bGRTY3JvbGwgPSAhZm9ybURhdGEgJiYgIShoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkg
JiYgaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5mb3JtRGF0YSgpKSAmJiBoaXN0b3J5KCktPnVy
bHNNYXRjaEl0ZW0oaXRlbSk7Ci0KLSNpZiBFTkFCTEUoV01MKQotICAgIC8vIEFsbCBXTUwgZGVj
a3Mgc2hvdWxkIGdvIHRocm91Z2ggdGhlIHJlYWwgbG9hZCBtZWNoYW5pc20sIG5vdCB0aGUgc2Ny
b2xsLXRvLWFuY2hvciBjb2RlCi0gICAgaWYgKGZyYW1lQ29udGFpbnNXTUxDb250ZW50KG1fZnJh
bWUpKQotICAgICAgICBzaG91bGRTY3JvbGwgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKHNo
b3VsZFNjcm9sbCkgewotICAgICAgICAvLyBNdXN0IGRvIHRoaXMgbWFpbnRlbmFuY2UgaGVyZSwg
c2luY2Ugd2UgZG9uJ3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxvYWQKLSAgICAgICAgaGlz
dG9yeSgpLT5zYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oaGlzdG9yeSgpLT5j
dXJyZW50SXRlbSgpKTsKLQotICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+
dmlldygpKQotICAgICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwot
Ci0gICAgICAgIGhpc3RvcnkoKS0+c2V0Q3VycmVudEl0ZW0oaXRlbSk7CisgICAgYm9vbCBhZGRl
ZEV4dHJhRmllbGRzID0gZmFsc2U7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaXRlbVVS
TCk7CiAKLSAgICAgICAgLy8gRklYTUU6IEZvcm0gc3RhdGUgbWlnaHQgbmVlZCB0byBiZSBzYXZl
ZCBoZXJlIHRvby4KLQotICAgICAgICAvLyBXZSBhbHdheXMgY2FsbCBzY3JvbGxUb0FuY2hvciBo
ZXJlLCBldmVuIGlmIHRoZSBVUkwgZG9lc24ndCBoYXZlIGFuCi0gICAgICAgIC8vIGFuY2hvciBm
cmFnbWVudC4gVGhpcyBpcyBzbyB3ZSdsbCBrZWVwIHRoZSBXZWJDb3JlIEZyYW1lJ3MgVVJMIHVw
LXRvLWRhdGUuCi0gICAgICAgIHNjcm9sbFRvQW5jaG9yKGl0ZW0tPnVybCgpKTsKKyAgICBpZiAo
IWl0ZW0tPnJlZmVycmVyKCkuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKGl0ZW0tPnJlZmVycmVyKCkpOwogICAgIAotICAgICAgICAvLyBtdXN0IGRvIHRoaXMgbWFp
bnRlbmFuY2UgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxv
YWQKLSAgICAgICAgaGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUo
KTsKKyAgICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNo
ZSwgd2UgbWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KKyAgICBOYXZpZ2F0aW9uQWN0aW9u
IGFjdGlvbjsKKyAgICBpZiAoZm9ybURhdGEpIHsKKyAgICAgICAgZm9ybURhdGEtPmdlbmVyYXRl
RmlsZXMobV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOworCisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5
KGZvcm1EYXRhKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS0+Zm9y
bUNvbnRlbnRUeXBlKCkpOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS0+cmVmZXJyZXIo
KSk7CisgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdp
bi0+dG9TdHJpbmcoKSk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVs
ZHMgdG8gdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlIE9yaWdpbiBoZWFkZXIgaXMgYWRkZWQgZm9yIHRo
ZSBGb3JtRGF0YSBjYXNlLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTk0IGZvciBtb3JlIGRpc2N1c3Npb24uCisgICAgICAgIGFkZEV4
dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsK
KyAgICAgICAgYWRkZWRFeHRyYUZpZWxkcyA9IHRydWU7CiAgICAgICAgIAotICAgICAgICAvLyBG
YWtlIHRoZSBVUkwgY2hhbmdlIGJ5IHVwZGF0aW5nIHRoZSBkYXRhIHNvdXJjZSdzIHJlcXVlc3Qu
ICBUaGlzIHdpbGwgbm8gbG9uZ2VyCi0gICAgICAgIC8vIGJlIG5lY2Vzc2FyeSBpZiB3ZSBkbyB0
aGUgYmV0dGVyIGZpeCBkZXNjcmliZWQgYWJvdmUuCi0gICAgICAgIGRvY3VtZW50TG9hZGVyKCkt
PnJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGl0ZW1VUkwpOwotCi0gICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOworICAgICAgICAv
LyBGSVhNRTogU2xpZ2h0IGhhY2sgdG8gdGVzdCBpZiB0aGUgTlNVUkwgY2FjaGUgY29udGFpbnMg
dGhlIHBhZ2Ugd2UncmUgZ29pbmcgdG8uCisgICAgICAgIC8vIFdlIHdhbnQgdG8ga25vdyB0aGlz
IGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUsIHNpbmNlIGl0IGFmZmVjdHMg
d2hldGhlciAKKyAgICAgICAgLy8gd2Ugc2hvdyB0aGUgRG9Zb3VSZWFsbHlXYW50VG9SZXBvc3Qg
bmFnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIHRyaWNrIGhhcyBhIHNtYWxsIGJ1ZyAo
MzEyMzg5Mykgd2hlcmUgd2UgbWlnaHQgZmluZCBhIGNhY2hlIGhpdCwgYnV0IHRoZW4KKyAgICAg
ICAgLy8gaGF2ZSB0aGUgaXRlbSB2YW5pc2ggd2hlbiB3ZSB0cnkgdG8gdXNlIGl0IGluIHRoZSBl
bnN1aW5nIG5hdi4gIFRoaXMgc2hvdWxkIGJlCisgICAgICAgIC8vIGV4dHJlbWVseSByYXJlLCBi
dXQgaW4gdGhhdCBjYXNlIHRoZSB1c2VyIHdpbGwgZ2V0IGFuIGVycm9yIG9uIHRoZSBuYXZpZ2F0
aW9uLgogICAgICAgICAKLSAgICAgICAgLy8gRnJhbWVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWQoKSB0ZWxscyB0aGUgaW50ZXJuYWwgbG9hZCBkZWxlZ2F0ZSB0aGUgbG9hZCBmaW5pc2hlZCB3
aXRoIG5vIGVycm9yCi0gICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkKCk7CisgICAgICAg
IGlmIChSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUocmVxdWVzdCwgbV9mcmFtZSkp
CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxvYWRUeXBl
LCBmYWxzZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZp
Z2F0aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgaXRlbSBzbyB3
ZSBjYW4gdHJhdmVyc2UgYW55IGNoaWxkIGl0ZW1zIGFzIGNoaWxkIGZyYW1lcyBsb2FkCi0gICAg
ICAgIGhpc3RvcnkoKS0+c2V0UHJvdmlzaW9uYWxJdGVtKGl0ZW0pOwotCi0gICAgICAgIGJvb2wg
aW5QYWdlQ2FjaGUgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlmIHdlJ2xs
IGJlIHVzaW5nIHRoZSBwYWdlIGNhY2hlLiAgV2Ugb25seSB1c2UgdGhlIHBhZ2UgY2FjaGUKLSAg
ICAgICAgLy8gaWYgb25lIGV4aXN0cyBhbmQgaXQgaXMgbGVzcyB0aGFuIF9iYWNrRm9yd2FyZENh
Y2hlRXhwaXJhdGlvbkludGVydmFsCi0gICAgICAgIC8vIHNlY29uZHMgb2xkLiAgSWYgdGhlIGNh
Y2hlIGlzIGV4cGlyZWQgaXQgZ2V0cyBmbHVzaGVkIGhlcmUuCi0gICAgICAgIGlmIChSZWZQdHI8
Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSA9IHBhZ2VDYWNoZSgpLT5nZXQoaXRlbSkpIHsKLSAgICAg
ICAgICAgIGRvdWJsZSBpbnRlcnZhbCA9IGN1cnJlbnRUaW1lKCkgLSBjYWNoZWRQYWdlLT50aW1l
U3RhbXAoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRklYTUU6IDE4MDAgc2hvdWxk
IG5vdCBiZSBoYXJkY29kZWQsIGl0IHNob3VsZCBjb21lIGZyb20KLSAgICAgICAgICAgIC8vIFdl
YktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkgaW4gV2ViS2l0LgotICAg
ICAgICAgICAgLy8gT3Igd2Ugc2hvdWxkIHJlbW92ZSBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhw
aXJhdGlvbkludGVydmFsS2V5LgotICAgICAgICAgICAgaWYgKGludGVydmFsIDw9IDE4MDApIHsK
LSAgICAgICAgICAgICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGNhY2hlZFBhZ2UtPmRvY3Vt
ZW50TG9hZGVyKCksIGxvYWRUeXBlLCAwKTsgICAKLSAgICAgICAgICAgICAgICBpblBhZ2VDYWNo
ZSA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExPRyhQYWdl
Q2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hl
IGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBoaXN0b3J5KCktPnByb3Zpc2lvbmFs
SXRlbSgpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAg
cGFnZUNhY2hlKCktPnJlbW92ZShpdGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNo
IChsb2FkVHlwZSkgeworICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkOgorICAg
ICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbjoKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2s6
CisgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2libGU6
CisgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3YXJkOgorICAgICAgICAgICAgY2Fz
ZSBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkOgorICAgICAgICAgICAgICAgIGlmIChp
dGVtVVJMLnByb3RvY29sKCkgIT0gImh0dHBzIikKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVTdGFuZGFyZDoKKyAgICAg
ICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlw
ZVNhbWU6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIWluUGFnZUNhY2hl
KSB7Ci0gICAgICAgICAgICBib29sIGFkZGVkRXh0cmFGaWVsZHMgPSBmYWxzZTsKLSAgICAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGl0ZW1VUkwpOwogCi0gICAgICAgICAgICBpZiAo
IWl0ZW0tPnJlZmVycmVyKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQUmVmZXJyZXIoaXRlbS0+cmVmZXJyZXIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IC8vIElmIHRoaXMgd2FzIGEgcmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBt
aWdodCB0cnkgdG8gcmVwb3N0IHRoZSBmb3JtLgotICAgICAgICAgICAgTmF2aWdhdGlvbkFjdGlv
biBhY3Rpb247Ci0gICAgICAgICAgICBpZiAoZm9ybURhdGEpIHsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBmb3JtRGF0YS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24o
aXRlbU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IWFkZGVkRXh0cmFGaWVsZHMpCisgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVl
c3QsIG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsKIAotICAgICAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEJvZHkoZm9ybURhdGEpOwotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRU
eXBlKGl0ZW0tPmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcoaXRlbS0+cmVmZXJyZXIoKSk7Ci0gICAgICAgICAgICAgICAgYWRkSFRUUE9yaWdpbklm
TmVlZGVkKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKLSAgICAgICAgCi0g
ICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMgdG8gdGhlIHJl
cXVlc3QgYWZ0ZXIgdGhlIE9yaWdpbiBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBGb3JtRGF0YSBj
YXNlLgotICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIxOTQgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgICAgICBh
ZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCBtX2xvYWRUeXBlLCB0cnVlLCBmb3JtRGF0
YSk7Ci0gICAgICAgICAgICAgICAgYWRkZWRFeHRyYUZpZWxkcyA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRvIHRlc3QgaWYg
dGhlIE5TVVJMIGNhY2hlIGNvbnRhaW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRvLgotICAgICAg
ICAgICAgICAgIC8vIFdlIHdhbnQgdG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBw
b2xpY3kgZGVsZWdhdGUsIHNpbmNlIGl0IGFmZmVjdHMgd2hldGhlciAKLSAgICAgICAgICAgICAg
ICAvLyB3ZSBzaG93IHRoZSBEb1lvdVJlYWxseVdhbnRUb1JlcG9zdCBuYWcuCi0gICAgICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgICAgICAvLyBUaGlzIHRyaWNrIGhhcyBhIHNtYWxsIGJ1ZyAo
MzEyMzg5Mykgd2hlcmUgd2UgbWlnaHQgZmluZCBhIGNhY2hlIGhpdCwgYnV0IHRoZW4KLSAgICAg
ICAgICAgICAgICAvLyBoYXZlIHRoZSBpdGVtIHZhbmlzaCB3aGVuIHdlIHRyeSB0byB1c2UgaXQg
aW4gdGhlIGVuc3VpbmcgbmF2LiAgVGhpcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAvLyBl
eHRyZW1lbHkgcmFyZSwgYnV0IGluIHRoYXQgY2FzZSB0aGUgdXNlciB3aWxsIGdldCBhbiBlcnJv
ciBvbiB0aGUgbmF2aWdhdGlvbi4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAoUmVzb3VyY2VIYW5kbGU6OndpbGxMb2FkRnJvbUNhY2hlKHJlcXVlc3QsIG1fZnJhbWUpKQot
ICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxv
YWRUeXBlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmln
YXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkOgotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBG
cmFtZUxvYWRUeXBlQmFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBl
QmFja1dNTERlY2tOb3RBY2Nlc3NpYmxlOgotICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1l
TG9hZFR5cGVGb3J3YXJkOgotICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJ
bmRleGVkQmFja0ZvcndhcmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVVSTC5w
cm90b2NvbCgpICE9ICJodHRwcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBl
U3RhbmRhcmQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlZGlyZWN0
V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVTYW1lOgotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlv
bihyZXF1ZXN0LCBhY3Rpb24sIGZhbHNlLCBsb2FkVHlwZSwgMCk7Cit9CiAKLSAgICAgICAgICAg
ICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1PcmlnaW5hbFVSTCwgbG9hZFR5cGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFh
ZGRlZEV4dHJhRmllbGRzKQotICAgICAgICAgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0
KHJlcXVlc3QsIG1fbG9hZFR5cGUsIHRydWUsIGZvcm1EYXRhKTsKKy8vIExvYWRzIGNvbnRlbnQg
aW50byB0aGlzIGZyYW1lLCBhcyBzcGVjaWZpZWQgYnkgaGlzdG9yeSBpdGVtCit2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSkKK3sKKyAgICAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaW4gdGhlIGZvbGxv
d2luZyBjYXNlczoKKyAgICAvLyAtIFRoZSBIaXN0b3J5SXRlbSBoYXMgYSBoaXN0b3J5IHN0YXRl
IG9iamVjdAorICAgIC8vIC0gTmF2aWdhdGluZyB0byBhbiBhbmNob3Igd2l0aGluIHRoZSBwYWdl
LCB3aXRoIG5vIGZvcm0gZGF0YSBzdG9yZWQgb24gdGhlIHRhcmdldCBpdGVtIG9yIHRoZSBjdXJy
ZW50IGhpc3RvcnkgZW50cnksCisgICAgLy8gICBhbmQgdGhlIFVSTHMgaW4gdGhlIGZyYW1lIHRy
ZWUgbWF0Y2ggdGhlIGhpc3RvcnkgaXRlbSBmb3IgZnJhZ21lbnQgc2Nyb2xsaW5nLgorICAgIGJv
b2wgc2FtZURvY3VtZW50TmF2aWdhdGlvbiA9ICghaXRlbS0+Zm9ybURhdGEoKSAmJiAhKGhpc3Rv
cnkoKS0+Y3VycmVudEl0ZW0oKSAmJiBoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCktPmZvcm1EYXRh
KCkpICYmIGhpc3RvcnkoKS0+dXJsc01hdGNoSXRlbShpdGVtKSkgfHwgaXRlbS0+ZG9jdW1lbnQo
KSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogCi0gICAgICAgICAgICBsb2FkV2l0aE5hdmlnYXRp
b25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBmYWxzZSwgbG9hZFR5cGUsIDApOwotICAgICAgICB9
Ci0gICAgfQorI2lmIEVOQUJMRShXTUwpCisgICAgLy8gQWxsIFdNTCBkZWNrcyBzaG91bGQgZ28g
dGhyb3VnaCB0aGUgcmVhbCBsb2FkIG1lY2hhbmlzbSwgbm90IHRoZSBzY3JvbGwtdG8tYW5jaG9y
IGNvZGUKKyAgICAvLyBGSVhNRTogV2h5IGRvIFdNTCBkZWNrcyBoYXZlIHRoaXMgZGlmZmVyZW50
IGJlaGF2aW9yPworICAgIC8vIEFyZSBXTUwgZGVja3MgaW5jb21wYXRpYmxlIHdpdGggSFRNTDUg
cHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSB3aGljaCByZXF1aXJlIGludGVyLWRvY3VtZW50IGhpc3Rv
cnkgbmF2aWdhdGlvbnM/CisgICAgLy8gU2hvdWxkIHRoaXMgbmV3IEFQSSBiZSBkaXNhYmxlZCBm
b3IgV01MIHBhZ2VzLCBvciBkb2VzIFdNTCBuZWVkIHRvIHVwZGF0ZSB0aGVpciBtZWNoYW5pc20g
dG8gYWN0IGxpa2Ugbm9ybWFsIGxvYWRzPworICAgIC8vIElmIHNjcm9sbC10by1hbmNob3IgbmF2
aWdhdGlvbnMgd2VyZSBicm9rZW4gZm9yIFdNTCBhbmQgcmVxdWlyZWQgdGhlbSB0byBoYXZlIGRp
ZmZlcmVudCBsb2FkaW5nIGJlaGF2aW9yLCB0aGVuICAKKyAgICAvLyBzdGF0ZSBvYmplY3QgbG9h
ZHMgYXJlIGNlcnRhaW5seSBhbHNvIGJyb2tlbiBmb3IgdGhlbS4KKyAgICBpZiAoZnJhbWVDb250
YWluc1dNTENvbnRlbnQobV9mcmFtZSkpCisgICAgICAgIHNhbWVEb2N1bWVudE5hdmlnYXRpb24g
PSBmYWxzZTsKKyNlbmRpZgorCisgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCisgICAg
ICAgIG5hdmlnYXRlV2l0aGluRG9jdW1lbnQoaXRlbSk7CisgICAgZWxzZQorICAgICAgICBuYXZp
Z2F0ZVRvRGlmZmVyZW50RG9jdW1lbnQoaXRlbSwgbG9hZFR5cGUpOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24g
NTE1NDUpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw2ICs3Myw3IEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTY3JpcHRTdHJp
bmc7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0
ZURhdGE7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwpAQCAtMzQ1LDYgKzM0Niw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBsb2FkUGx1Z2luKFJlbmRlclBhcnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsK
ICAgICAKKyAgICB2b2lkIG5hdmlnYXRlV2l0aGluRG9jdW1lbnQoSGlzdG9yeUl0ZW0qKTsKKyAg
ICB2b2lkIG5hdmlnYXRlVG9EaWZmZXJlbnREb2N1bWVudChIaXN0b3J5SXRlbSosIEZyYW1lTG9h
ZFR5cGUpOworICAgIAogICAgIGJvb2wgbG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdl
KCk7CiAgICAgdm9pZCBjYWNoZVBhZ2VGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopOwogICAg
IHZvaWQgcGFnZUhpZGRlbigpOwpAQCAtNDE5LDcgKzQyMyw3IEBAIHByaXZhdGU6CiAKICAgICBG
cmFtZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCi0gICAgdm9pZCBz
Y3JvbGxUb0FuY2hvcihjb25zdCBLVVJMJik7CisgICAgdm9pZCBsb2FkSW5TYW1lRG9jdW1lbnQo
Y29uc3QgS1VSTCYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdGVPYmplY3QsIGJvb2wgaXNO
ZXdOYXZpZ2F0aW9uKTsKIAogICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwogCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYg
KzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRl
cnZhbCwgZG91YmxlIGZpcmVEYXRlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw3ICs0MDIsNyBA
QCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgfQogfQogCi12
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JBbmNob3JTY3JvbGwoKQordm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7CiAgICAg
aWYgKG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYyNCw0ICs2MjQsNDEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0Zv
cndhcgogICAgIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5hZGRJdGVtKGl0ZW0pOwogfQogCit2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIEFT
U0VSVChwYWdlKTsKKyAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgQVNTRVJUKG1haW5GcmFtZSk7CisKKyAgICAvLyBHZXQgYSBIaXN0b3J5SXRlbSB0cmVlIGZv
ciB0aGUgY3VycmVudCBmcmFtZSB0cmVlLgorICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9
IGNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICAKKyAgICAvLyBPdmVycmlkZSBk
YXRhIGluIHRoZSB0YXJnZXQgaXRlbSB0byByZWZsZWN0IHRoZSBwdXNoU3RhdGUoKSBhcmd1bWVu
dHMuCisgICAgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0gPSBpdGVtLT50YXJnZXRJdGVtKCk7Cisg
ICAgQVNTRVJUKHRhcmdldEl0ZW0tPmlzVGFyZ2V0SXRlbSgpKTsKKyAgICB0YXJnZXRJdGVtLT5z
ZXREb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICB0YXJnZXRJdGVtLT5zZXRUaXRs
ZSh0aXRsZSk7CisgICAgdGFyZ2V0SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwor
ICAgIHRhcmdldEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOworICAgIAorICAgIHBhZ2Ut
PmJhY2tGb3J3YXJkTGlzdCgpLT5wdXNoU3RhdGVJdGVtKGl0ZW0ucmVsZWFzZSgpKTsKK30KKwor
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCit7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAg
ICBBU1NFUlQocGFnZSk7CisgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnQgPSBwYWdlLT5iYWNrRm9y
d2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKTsKKyAgICBBU1NFUlQoY3VycmVudCk7CisgICAgCisg
ICAgQVNTRVJUKCFjdXJyZW50LT5kb2N1bWVudCgpIHx8IGN1cnJlbnQtPmRvY3VtZW50KCkgPT0g
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgY3VycmVudC0+c2V0RG9jdW1lbnQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7CisgICAgCisgICAgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKQorICAgICAg
ICBjdXJyZW50LT5zZXRVUkxTdHJpbmcodXJsU3RyaW5nKTsKKyAgICBjdXJyZW50LT5zZXRUaXRs
ZSh0aXRsZSk7CisgICAgY3VycmVudC0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiAKIGNsYXNzIEhpc3RvcnlDb250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yUmVk
aXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgdm9pZCB1cGRhdGVGb3JDbGll
bnRSZWRpcmVjdCgpOwogICAgIHZvaWQgdXBkYXRlRm9yQ29tbWl0KCk7Ci0gICAgdm9pZCB1cGRh
dGVGb3JBbmNob3JTY3JvbGwoKTsKKyAgICB2b2lkIHVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmln
YXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpOwogCiAgICAg
SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SXRlbS5n
ZXQoKTsgfQpAQCAtNzUsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgSGlzdG9yeUl0ZW0qIHByb3Zp
c2lvbmFsSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qKTsKIAorICAgIHZvaWQgcHVz
aFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgcmVwbGFjZVN0YXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmwpOworCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCk7CiAgICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3Jl
YXRlSXRlbVRyZWUoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIGNsaXBBdFRhcmdldCk7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ4LDkgKzI0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKIAogICAgICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihiZWZvcmV1bmxvYWQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGJsdXIpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGNhbnBsYXkpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNhbnBs
YXl0aHJvdWdoKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjaGFu
Z2UpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKKyAg
ICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb250ZXh0bWVudSk7CiAgICAg
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGJsY2xpY2spOwogICAgICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRyYWcpOwogICAgICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGRyYWdlbmQpOwpAQCAtMjU5LDEzICsyNjMsMjIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGRyYWdvdmVyKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkcmFn
c3RhcnQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRyb3ApOwor
ICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGR1cmF0aW9uY2hhbmdlKTsK
KyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbXB0aWVkKTsKKyAgICAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CiAgICAgICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogICAgICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGZvY3VzKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihoYXNoY2hhbmdlKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihpbnB1dCk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
aW52YWxpZCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoa2V5ZG93
bik7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoa2V5cHJlc3MpOwog
ICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGtleXVwKTsKICAgICAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihsb2FkKTsKKyAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihsb2FkZWRkYXRhKTsKKyAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihsb2FkZWRtZXRhZGF0YSk7CisgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIobG9hZHN0YXJ0KTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihtb3VzZWRvd24pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKG1vdXNlbW92ZSk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIobW91c2VvdXQpOwpAQCAtMjc2LDQxICsyODksMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG9ubGluZSk7CiAgICAgICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocGFnZWhpZGUpOwogICAgICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHBhZ2VzaG93KTsKKyAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihwYXVzZSk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIocGxheSk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIocGxheWluZyk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
cG9wc3RhdGUpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHByb2dy
ZXNzKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyYXRlY2hhbmdl
KTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZXNldCk7CiAgICAg
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVzaXplKTsKICAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzY3JvbGwpOwogICAgICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHNlYXJjaCk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoc2Vla2VkKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihzZWVraW5nKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihzZWxlY3QpOworICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YWxs
ZWQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0b3JhZ2UpOwog
ICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN1Ym1pdCk7Ci0gICAgICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodW5sb2FkKTsKLSAgICAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihiZWZvcmV1bmxvYWQpOwotICAgICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNhbnBsYXkpOwotICAgICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGNhbnBsYXl0aHJvdWdoKTsKLSAgICAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihkdXJhdGlvbmNoYW5nZSk7Ci0gICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoZW1wdGllZCk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoZW5kZWQpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGxvYWRlZGRhdGEpOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGxvYWRlZG1ldGFkYXRhKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihwYXVzZSk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocGxh
eSk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocGxheWluZyk7Ci0g
ICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmF0ZWNoYW5nZSk7Ci0gICAg
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2Vla2VkKTsKLSAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzZWVraW5nKTsKKyAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihzdXNwZW5kKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih0aW1ldXBkYXRlKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih1bmxvYWQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHZvbHVtZWNoYW5nZSk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIod2FpdGluZyk7Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
bG9hZHN0YXJ0KTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJr
aXRiZWdpbmZ1bGxzY3JlZW4pOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHdlYmtpdGVuZGZ1bGxzY3JlZW4pOwotICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHByb2dyZXNzKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihzdGFsbGVkKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihz
dXNwZW5kKTsKLSAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihpbnB1dCk7
Ci0gICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7Ci0gICAg
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29udGV4dG1lbnUpOwotICAgICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGludmFsaWQpOworCiAjaWYgRU5BQkxF
KE9SSUVOVEFUSU9OX0VWRU5UUykKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvcmllbnRhdGlvbmNoYW5nZSk7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiA1MTU0NSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTIsNiArMjUyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9ucGF1c2U7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
cGxheTsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wbGF5aW5nOworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnBvcHN0YXRlOwogICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnJhdGVjaGFuZ2U7CiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVzaXpl
OwpJbmRleDogV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9IaXN0b3J5LmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeS5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJI
aXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNzcsNCArNzksNDEgQEAgdm9pZCBIaXN0b3J5OjpnbyhpbnQgZGlzdGFuY2UpCiAgICAgbV9m
cmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihkaXN0
YW5jZSk7CiB9CiAKK0tVUkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit7CisgICAgS1VSTCBiYXNlVVJMID0gbV9mcmFtZS0+bG9hZGVyKCktPmJhc2VVUkwo
KTsKKyAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGJhc2VVUkw7
CisgICAgICAgIAorICAgIEtVUkwgYWJzb2x1dGVVUkwoYmFzZVVSTCwgdXJsU3RyaW5nKTsKKyAg
ICBpZiAoIWFic29sdXRlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAg
ICAKKyAgICBpZiAoYWJzb2x1dGVVUkwuc3RyaW5nKCkubGVmdChhYnNvbHV0ZVVSTC5wYXRoU3Rh
cnQoKSkgIT0gYmFzZVVSTC5zdHJpbmcoKS5sZWZ0KGJhc2VVUkwucGF0aFN0YXJ0KCkpKQorICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgIAorICAgIHJldHVybiBhYnNvbHV0ZVVSTDsKK30KKwor
dm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2JqZWN0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJhbWUt
PnBhZ2UoKSk7CisgICAgCisgICAgS1VSTCBmdWxsVVJMID0gdXJsRm9yU3RhdGUodXJsU3RyaW5n
KTsKKyAgICBpZiAoIWZ1bGxVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YXRlT2JqZWN0VHlwZSA9
PSBTdGF0ZU9iamVjdFB1c2gpCisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCkt
PnB1c2hTdGF0ZShkYXRhLCB0aXRsZSwgZnVsbFVSTC5zdHJpbmcoKSk7CisgICAgZWxzZSBpZiAo
c3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2JqZWN0UmVwbGFjZSkKKyAgICAgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVwbGFjZVN0YXRlKGRhdGEsIHRpdGxlLCBmdWxsVVJMLnN0
cmluZygpKTsKKyAgICAgICAgICAgIAorICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRl
KGZ1bGxVUkwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvSGlzdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9IaXN0b3J5LmgJKHJldmlz
aW9uIDUxNTQ1KQorKysgV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMzAgKzI2LDQyIEBACiAjaWZuZGVmIEhpc3RvcnlfaAogI2RlZmluZSBIaXN0b3J5X2gKIAor
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEZy
YW1lOworY2xhc3MgRnJhbWU7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBT
dHJpbmc7Cit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBIaXN0b3J5IDogcHVi
bGljIFJlZkNvdW50ZWQ8SGlzdG9yeT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhpc3Rvcnk+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0
b3J5KGZyYW1lKSk7IH0KKyAgICAKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsKKyAgICB2b2lk
IGRpc2Nvbm5lY3RGcmFtZSgpOworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAg
dm9pZCBiYWNrKCk7CisgICAgdm9pZCBmb3J3YXJkKCk7CisgICAgdm9pZCBnbyhpbnQgZGlzdGFu
Y2UpOworCisgICAgZW51bSBTdGF0ZU9iamVjdFR5cGUgeworICAgICAgICBTdGF0ZU9iamVjdFB1
c2gsCisgICAgICAgIFN0YXRlT2JqZWN0UmVwbGFjZQorICAgIH07CisgICAgdm9pZCBzdGF0ZU9i
amVjdEFkZGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0YXRlT2JqZWN0VHlwZSwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgY2xhc3MgSGlzdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPEhpc3Rvcnk+IHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpc3Rvcnk+IGNyZWF0ZShG
cmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5KGZyYW1lKSk7IH0KLSAg
ICAgICAgCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGRpc2Nv
bm5lY3RGcmFtZSgpOwotCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgICAg
ICB2b2lkIGJhY2soKTsKLSAgICAgICAgdm9pZCBmb3J3YXJkKCk7Ci0gICAgICAgIHZvaWQgZ28o
aW50IGRpc3RhbmNlKTsKK3ByaXZhdGU6CisgICAgSGlzdG9yeShGcmFtZSopOwogCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgSGlzdG9yeShGcmFtZSopOworICAgIEtVUkwgdXJsRm9yU3RhdGUoY29u
c3QgU3RyaW5nJiB1cmwpOwogCi0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIH07CisgICAg
RnJhbWUqIG1fZnJhbWU7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9IaXN0b3J5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSGlzdG9y
eS5pZGwJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgW0Rv
Tm90Q2hlY2tEb21haW5TZWN1cml0eV0gdm9pZCBiYWNrKCk7CiAgICAgICAgIFtEb05vdENoZWNr
RG9tYWluU2VjdXJpdHldIHZvaWQgZm9yd2FyZCgpOwogICAgICAgICBbRG9Ob3RDaGVja0RvbWFp
blNlY3VyaXR5XSB2b2lkIGdvKGluIGxvbmcgZGlzdGFuY2UpOworICAgICAgICAKKyAgICAgICAg
W0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHB1c2hTdGF0ZShpbiBhbnkg
ZGF0YSwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBvcHRpb25hbCBET01TdHJpbmcgdXJsKQorICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtEb05vdENoZWNrRG9tYWlu
U2VjdXJpdHksIEN1c3RvbV0gdm9pZCByZXBsYWNlU3RhdGUoaW4gYW55IGRhdGEsIGluIERPTVN0
cmluZyB0aXRsZSwgaW4gb3B0aW9uYWwgRE9NU3RyaW5nIHVybCkKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDUxNTQ1KQor
KysgV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMjc3LDIwICsyNzgsMzAgQEAgdm9p
ZCBQYWdlOjpnb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKQogCiB2b2lkIFBhZ2U6OmdvVG9J
dGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiB7Ci0gICAgLy8gQWJv
cnQgYW55IGN1cnJlbnQgbG9hZCBpZiB3ZSdyZSBnb2luZyB0byBhIGhpc3RvcnkgaXRlbQorI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICAvLyBJZiB3ZSdyZSBuYXZpZ2F0aW5nIHRvIGFuIGl0ZW0g
d2l0aCBoaXN0b3J5IHN0YXRlIGZvciBhIERvY3VtZW50IG90aGVyIHRoYW4gdGhlCisgICAgLy8g
Y3VycmVudCBEb2N1bWVudCwgdGhlIG5ldyBEb2N1bWVudCBoYWQgYmV0dGVyIGJlIGluIHRoZSBw
YWdlIGNhY2hlLgorICAgIGlmIChpdGVtLT5zdGF0ZU9iamVjdCgpICYmIGl0ZW0tPmRvY3VtZW50
KCkgIT0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIEFTU0VSVChpdGVtLT5kb2N1
bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKKyNlbmRpZgogCi0gICAgLy8gRGVmaW5lIHdoYXQgdG8g
ZG8gd2l0aCBhbnkgb3BlbiBkYXRhYmFzZSBjb25uZWN0aW9ucy4gQnkgZGVmYXVsdCB3ZSBzdG9w
IHRoZW0gYW5kIHRlcm1pbmF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFkLgotICAgIERhdGFiYXNlUG9s
aWN5IGRhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wOworICAgIC8vIEFib3J0IGFu
eSBjdXJyZW50IGxvYWQgdW5sZXNzIHdlJ3JlIG5hdmlnYXRpbmcgdGhlIGN1cnJlbnQgZG9jdW1l
bnQgdG8gYSBuZXcgc3RhdGUgb2JqZWN0CisgICAgaWYgKCFpdGVtLT5zdGF0ZU9iamVjdCgpIHx8
IGl0ZW0tPmRvY3VtZW50KCkgIT0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAgICAg
Ly8gRGVmaW5lIHdoYXQgdG8gZG8gd2l0aCBhbnkgb3BlbiBkYXRhYmFzZSBjb25uZWN0aW9ucy4g
QnkgZGVmYXVsdCB3ZSBzdG9wIHRoZW0gYW5kIHRlcm1pbmF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFk
LgorICAgICAgICBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5
U3RvcDsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICAvLyBJZiB3ZSdyZSBuYXZpZ2F0aW5n
IHRoZSBoaXN0b3J5IHZpYSBhIGZyYWdtZW50IG9uIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHdl
IGRvIG5vdCB3YW50IHRvIHN0b3AgZGF0YWJhc2VzLgotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRV
UkwgPSBtX21haW5GcmFtZS0+bG9hZGVyKCktPnVybCgpOwotICAgIGNvbnN0IEtVUkwmIG5ld1VS
TCA9IGl0ZW0tPnVybCgpOwotCi0gICAgaWYgKG5ld1VSTC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGN1cnJlbnRVUkwsIG5ld1VSTCkp
Ci0gICAgICAgIGRhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lDb250aW51ZTsKKyAgICAg
ICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0
aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4K
KyAgICAgICAgY29uc3QgS1VSTCYgY3VycmVudFVSTCA9IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+
dXJsKCk7CisgICAgICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9IGl0ZW0tPnVybCgpOworICAgIAor
ICAgICAgICBpZiAobmV3VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIoY3VycmVudFVSTCwgbmV3VVJMKSkKKyAgICAgICAgICAgIGRh
dGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lDb250aW51ZTsKICNlbmRpZgotICAgIG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0YWJhc2VQb2xpY3kpOworCisgICAg
ICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0YWJhc2VQb2xpY3kp
OworICAgIH0KKyAgICAgICAgCiAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCkt
PmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUx
NTgzKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDA5LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIxNDIzNj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJbXBsZW1l
bnQgSFRNTDUgc3RhdGUgb2JqZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUpOgorICAgICAgICAq
IHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAwOS0xMi0wMSAgUGV0ZXIgS2FzdGlu
ZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw2ICs1ODksMTAgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQwogICAgICAgICB3ZWJWaWV3LT5jbGll
bnQoKS0+ZGlkU3RvcExvYWRpbmcoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpCit7CisgICAgLy8gRklY
TUUKK30KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdpbGxDbG9zZSgpCiB7
CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0
aGluUGFnZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0
Rm9yUGFnZUZvckZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9u
IDUxNTgzKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAwOS0xMi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzcyMTQyMzY+IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVtZW50
IEhUTUw1IHN0YXRlIG9iamVjdCBoaXN0b3J5IEFQSQorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAwOS0x
Mi0wMSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTE1NDUpCisr
KyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjU3LDYgKzY1NywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENoYW5nCiAgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJWaWV3
KSwgInVyaSIpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5n
ZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3Vi
bGUsIGRvdWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VT
dGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTU4MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTItMDIgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE0MjM2PiBhbmQgaHR0cDovL3dlYmtpdC5v
cmcvYi8zMjA1MiAtIEltcGxlbWVudCBIVE1MNSBzdGF0ZSBvYmplY3QgaGlzdG9yeSBBUEkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JG
cmFtZSk6CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
aW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaDoK
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY2Fj
aGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorCiAyMDA5LTEyLTAxICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw2ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJs
ZSBmaXJlRGF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmpl
Y3RGb3JQYWdlRm9yRnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDUxNTQ1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM4LDYgKzUzOCwxNCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lRnVu
Yywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
Rm9yRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKQoreyAg
ICAKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
KyAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0
aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3
KTsKKyAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VG
b3JGcmFtZUZ1bmMpCisgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlv
bnMtPmRpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWU6KSwgbV93
ZWJGcmFtZS5nZXQoKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
V2lsbENsb3NlKCkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKTsgICAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW8KICAgICBJTVAgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUZ1bmM7CiAg
ICAgSU1QIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTERlbGF5RmlyZURhdGVGb3JGcmFt
ZUZ1bmM7CiAgICAgSU1QIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lRnVuYzsK
KyAgICBJTVAgZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWVGdW5jOwogICAgIElN
UCB3aWxsQ2xvc2VGcmFtZUZ1bmM7CiAgICAgSU1QIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVGdW5jOwogICAgIElNUCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmM7CkluZGV4OiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oCShy
ZXZpc2lvbiA1MTU0NSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0
ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNCArMzksNiBAQAogCiAtICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU6KFdl
YkZyYW1lICopZnJhbWUgaW5TY3JpcHRXb3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZDsKIAor
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDaGFuZ2VTdGF0ZU9iamVjdEZv
clBhZ2VGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKKwogQGVuZApJbmRleDogV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNTAsNiArMTM1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSU1Q
IGdldE1ldGhvZChpZCBvLCBTRUwgcykKIAogICAgIGNhY2hlLT5kaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTopKTsKKyAg
ICBjYWNoZS0+ZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWVGdW5jID0gZ2V0TWV0
aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBh
Z2VGb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZUZ1
bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZENsZWFyV2luZG93
T2JqZWN0OmZvckZyYW1lOikpOwogICAgIGNhY2hlLT5kaWRDbGVhcldpbmRvd09iamVjdEZvckZy
YW1lSW5TY3JpcHRXb3JsZEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWU6aW5TY3JpcHRXb3JsZDopKTsKICAgICBj
YWNoZS0+ZGlkQ2xlYXJJbnNwZWN0b3JXaW5kb3dPYmplY3RGb3JGcmFtZUZ1bmMgPSBnZXRNZXRo
b2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZENsZWFySW5zcGVjdG9yV2luZG93T2Jq
ZWN0OmZvckZyYW1lOikpOwpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTU4MykKKysrIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMi0wMiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMTQyMzY+IGFuZCBodHRwOi8v
d2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVtZW50IEhUTUw1IHN0YXRlIG9iamVjdCBoaXN0b3J5
IEFQSQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5n
ZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMDktMTItMDEgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8gZml4
IFF0IGJ1aWxkLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNTE1NDUpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw2ICsz
MDQsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYQogICAgIG1f
d2ViRnJhbWUtPnBhZ2UoKS0+ZC0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKIH0KIAordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFn
ZUZvckZyYW1lKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAg
ICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWVcbiIsIHFQ
cmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsK
KyAgICAgICAgCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaFdpbGxDbG9zZSgpCiB7CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDUxNTQ1KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91
YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlU3RhdGVPYmplY3RGb3JQYWdlRm9yRnJhbWUoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTE1ODMpCisrKyBXZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTEy
LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIxNDIzNj4g
YW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJbXBsZW1lbnQgSFRNTDUgc3RhdGUgb2Jq
ZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxl
Z2F0ZVByaXZhdGUyLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMDktMTItMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56
aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8gZml4IHdp
bmRvd3MgYnVpbGQuCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZTIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwJKHJldmlzaW9uIDUxNTQ1KQorKysgV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNCArNDgsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZTIgCiAgICAgSFJFU1VMVCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoW2luXSBJV2Vi
Vmlldyogc2VuZGVyLCBbaW5dIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKIAogICAgIEhS
RVNVTFQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZUluU2NyaXB0V29ybGQoW2luXSBJV2Vi
Vmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lLCBbaW5dIElXZWJTY3JpcHRXb3Js
ZCopOworCisgICAgSFJFU1VMVCBkaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZShb
aW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogfQpJbmRleDog
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDUxNTQ1KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsMjAgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAgICAgICBmcmFtZUxvYWRE
ZWxlZ2F0ZS0+ZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUod2ViVmlldywgbV93
ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlU3RhdGVPYmplY3RGb3JQYWdlKCkKK3sKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJG
cmFtZS0+d2ViVmlldygpOworICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRl
PiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5mcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERlbGVnYXRlUHJpdikpIHx8ICFmcmFtZUxvYWRE
ZWxlZ2F0ZVByaXYpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViRnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlMj4gZnJhbWVMb2FkRGVsZWdhdGVQcml2MihRdWVyeSwgZnJhbWVMb2Fk
RGVsZWdhdGVQcml2KTsKKyAgICBpZiAoIWZyYW1lTG9hZERlbGVnYXRlUHJpdjIpCisgICAgICAg
IHJldHVybjsKKworICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdjItPmRpZENoYW5nZVN0YXRlT2Jq
ZWN0Rm9yUGFnZUZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSgpCiB7CiAgICAgV2ViVmlldyogd2Vi
VmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNTQ1KQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRvdWJsZSBpbnRl
cnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VTdGF0ZU9iamVjdEZvclBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xv
c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJL
aXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDUxNTgzKQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDA5LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIxNDIzNj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJbXBsZW1l
bnQgSFRNTDUgc3RhdGUgb2JqZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VGb3JGcmFtZSk6
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMDkt
MTEtMjMgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9u
IDUxNTQ1KQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZENoYQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VTdGF0ZU9iamVjdEZvclBhZ2VG
b3JGcmFtZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpkaXNwYXRjaFdpbGxDbG9zZSgpCiB7CkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiA1MTU0NSkKKysrIFdl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNiArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJs
ZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZVN0YXRlT2JqZWN0Rm9yUGFnZUZvckZyYW1lKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTE2MDIpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAwOS0x
Mi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMTQyMzY+
IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMyMDUyIC0gSW1wbGVtZW50IEhUTUw1IHN0YXRlIG9i
amVjdCBoaXN0b3J5IEFQSQorCisgICAgICAgIFVwZGF0ZSBleHBlY3RlZCByZXN1bHRzIG9mIG9s
ZCB0ZXN0czoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LWFwcGVuZGFnZXMtY2xl
YXJlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LWZyYW1lLWFjY2Vzcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6CisKKworICAgICAgICAqIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0czogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ry
b3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3ll
ZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUt
YmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9w
c3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVy
LWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1h
ZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1j
b21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3Qt
dHlwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1
c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13
aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQt
dXJscy1hbmQtaGFzaGNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVu
LXB1c2hzdGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cmVzb3VyY2VzL25hdmlnYXRlLWJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvc3RhdGUtb2JqZWN0LXNlY3VyaXR5
LWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKwogMjAwOS0xMi0wMiAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0yMjAuc3BiLmNvcnAuZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LWFwcGVuZGFnZXMtY2xlYXJlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1hcHBlbmRhZ2VzLWNsZWFy
ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTU0NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctYXBwZW5kYWdlcy1jbGVhcmVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMiw2ICsyLDggQEAgUEFTUyBoaXN0b3J5LmJhY2sgPT0gIkxFRlRPVkVSIiBpcyBm
YWxzZQogUEFTUyBoaXN0b3J5LmZvcndhcmQgPT0gIkxFRlRPVkVSIiBpcyBmYWxzZQogUEFTUyBo
aXN0b3J5LmdvID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBBU1MgaGlzdG9yeS5sZW5ndGggPT0g
IkxFRlRPVkVSIiBpcyBmYWxzZQorUEFTUyBoaXN0b3J5LnB1c2hTdGF0ZSA9PSAiTEVGVE9WRVIi
IGlzIGZhbHNlCitQQVNTIGhpc3RvcnkucmVwbGFjZVN0YXRlID09ICJMRUZUT1ZFUiIgaXMgZmFs
c2UKIFBBU1MgbG9jYXRpb24uYXNzaWduID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBBU1MgbG9j
YXRpb24uaGFzaCA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCiBQQVNTIGxvY2F0aW9uLmhvc3QgPT0g
IkxFRlRPVkVSIiBpcyBmYWxzZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1
MTU0NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MzcsNiArMTczNyw4IEBAIHdpbmRvdy5o
aXN0b3J5LmJhY2sgW2Z1bmN0aW9uXQogd2luZG93Lmhpc3RvcnkuZm9yd2FyZCBbZnVuY3Rpb25d
CiB3aW5kb3cuaGlzdG9yeS5nbyBbZnVuY3Rpb25dCiB3aW5kb3cuaGlzdG9yeS5sZW5ndGggW251
bWJlcl0KK3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSBbZnVuY3Rpb25dCit3aW5kb3cuaGlzdG9y
eS5yZXBsYWNlU3RhdGUgW2Z1bmN0aW9uXQogd2luZG93LmlubmVySGVpZ2h0IFtudW1iZXJdCiB3
aW5kb3cuaW5uZXJXaWR0aCBbbnVtYmVyXQogd2luZG93Lmxlbmd0aCBbbnVtYmVyXQpAQCAtMTgx
Myw2ICsxODE1LDcgQEAgd2luZG93Lm9ucGFnZXNob3cgW251bGxdCiB3aW5kb3cub25wYXVzZSBb
bnVsbF0KIHdpbmRvdy5vbnBsYXkgW251bGxdCiB3aW5kb3cub25wbGF5aW5nIFtudWxsXQord2lu
ZG93Lm9ucG9wc3RhdGUgW251bGxdCiB3aW5kb3cub25wcm9ncmVzcyBbbnVsbF0KIHdpbmRvdy5v
bnJhdGVjaGFuZ2UgW251bGxdCiB3aW5kb3cub25yZXNldCBbbnVsbF0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUt
YmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9k
b2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjIgQEAKK21haW4gZnJhbWUgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMp
CitBTEVSVDogSGlzdG9yeSBsZW5ndGggaXMgMgorQUxFUlQ6IFN0YXRlIHBvcHBlZCAtIEZpcnN0
RW50cnkgKHR5cGUgc3RyaW5nKQorQUxFUlQ6IFN0YXRlIHBvcHBlZCAtIFNlY29uZEVudHJ5ICh0
eXBlIHN0cmluZykKK0FMRVJUOiBOYXZpZ2F0aW5nIGJhY2suLi4KK21haW4gZnJhbWUgLSBoYXMg
MSBvbnVubG9hZCBoYW5kbGVyKHMpCitBTEVSVDogSGlzdG9yeSBsZW5ndGggaXMgMgorQUxFUlQ6
IHdpbmRvdy5sb2NhdGlvbiBpcyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5h
dmlnYXRlLWJhY2suaHRtbD9TZWNvbmRFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAorbWFp
biBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykKK0FMRVJUOiBIaXN0b3J5IGxlbmd0
aCBpcyAxCitBTEVSVDogd2luZG93LmxvY2F0aW9uIGlzIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2
bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVu
dC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sP0ZpcnN0RW50cnlTaG91bGROZXZlckJlUmVh
Y3RpdmF0ZWQKK0FMRVJUOiBUZXN0IGNvbXBsZXRlZAorVGhpcyB0ZXN0OgorLUJ1aWxkcyB1cCBh
IGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVudHJpZXMuCistTmF2aWdhdGVzIHRocm91Z2ggdGhlbSB0
byB2ZXJpZnkgdGhhdCB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgZmlyZWQuCistTmF2aWdhdGVzIGF3
YXkgdG8gYSBuZXcgZG9jdW1lbnQsIHdpdGggdGhlIG9sZCBkb2N1bWVudCBiZWluZyBkZXN0cm95
ZWQuCistTmF2aWdhdGVzIGJhY2sgdG8gdGhlIHN0YXRlIG9iamVjdCBlbnRyaWVzIGFuZCB2ZXJp
ZmllcyB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgbm90IGZpcmVkLgorCitIaXN0b3J5IGxlbmd0aCBp
cyAxCit3aW5kb3cubG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3Vy
Y2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3ll
ZC1uYXZpZ2F0ZS1iYWNrLmh0bWw/Rmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAor
VGVzdCBjb21wbGV0ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xs
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1z
Y3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJh
Z21lbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAor
bWFpbiBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykKK0FMRVJUOiBIaXN0b3J5IGxl
bmd0aCBpcyAyCitBTEVSVDogU3RhdGUgcG9wcGVkIC0gRmlyc3RFbnRyeSAodHlwZSBzdHJpbmcp
CitBTEVSVDogaGFzaENoYW5nZWQgLSBsb2NhdGlvbiBpcyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9z
dm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1l
bnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbCNGaXJz
dEVudHJ5CitBTEVSVDogU3RhdGUgcG9wcGVkIC0gU2Vjb25kRW50cnkgKHR5cGUgc3RyaW5nKQor
QUxFUlQ6IGhhc2hDaGFuZ2VkIC0gbG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3Zu
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwjU2Vjb25k
RW50cnkKK0FMRVJUOiBOYXZpZ2F0aW5nIGJhY2suLi4KK21haW4gZnJhbWUgLSBoYXMgMSBvbnVu
bG9hZCBoYW5kbGVyKHMpCitBTEVSVDogSGlzdG9yeSBsZW5ndGggaXMgMgorQUxFUlQ6IHdpbmRv
dy5sb2NhdGlvbiBpcyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRl
LWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbCNTZWNvbmRFbnRyeVNob3VsZE5ldmVyQmVS
ZWFjdGl2YXRlZAorQUxFUlQ6IGhhc2hDaGFuZ2VkIC0gbG9jYXRpb24gaXMgZmlsZTovLy9Wb2x1
bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xs
Lmh0bWwjRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAorQUxFUlQ6IFRlc3QgY29t
cGxldGVkCitUaGlzIHRlc3Q6CistQnVpbGRzIHVwIGEgbGlzdCBvZiBzdGF0ZSBvYmplY3QgZW50
cmllcyB3aXRoIGZyYWdtZW50IFVSTC4KKy1OYXZpZ2F0ZXMgdGhyb3VnaCB0aGVtIHRvIHZlcmlm
eSB0aGF0IHRoZSBwb3BzdGF0ZSBhbmQgaGFzaGNoYW5nZWQgZXZlbnRzIGFyZSBmaXJlZC4KKy1O
YXZpZ2F0ZXMgYXdheSB0byBhIG5ldyBkb2N1bWVudCwgd2l0aCB0aGUgb2xkIGRvY3VtZW50IGJl
aW5nIGRlc3Ryb3llZC4KKy1OYXZpZ2F0ZXMgYmFjayB0byB0aGUgc3RhdGUgb2JqZWN0IGVudHJp
ZXMgYW5kIHZlcmlmaWVzIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBub3QgZmlyZWQuCisKK0hpc3Rv
cnkgbGVuZ3RoIGlzIDIKK3dpbmRvdy5sb2NhdGlvbiBpcyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9z
dm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1l
bnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbCNTZWNv
bmRFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAoraGFzaENoYW5nZWQgLSBsb2NhdGlvbiBp
cyBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1m
cmFnbWVudC1zY3JvbGwuaHRtbCNGaXJzdEVudHJ5U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkCitU
ZXN0IGNvbXBsZXRlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
ZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9k
b2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICghc2Vzc2lvblN0
b3JhZ2Uuc3RhZ2UpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zvcndh
cmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4
dCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9
IHR4dCArICJcbiI7CisgICAgLy8gYWxlcnQgdGhlIG1lc3NhZ2VzIGFsc28gc28gRHVtcFJlbmRl
clRyZWUgY2FuIGNhcHR1cmUgYW5kIGxvZyBtZXNzYWdlcyBhY3Jvc3MgbXVsdGlwbGUgZG9jdW1l
bnRzLgorICAgIGFsZXJ0KHR4dCk7Cit9CisKK2Z1bmN0aW9uIGVuZFRlc3QobXNnKQoreworICAg
IGxvZyhtc2cpOworICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5TZWNvbmRTdGFnZU9mVGVzdCgpCit7CisgICAgbG9n
KCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGxvZygid2luZG93
LmxvY2F0aW9uIGlzICIgKyB3aW5kb3cubG9jYXRpb24pOworICAgIHNlc3Npb25TdG9yYWdlLnN0
YWdlID0gMzsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gcnVuVGhpcmRTdGFn
ZU9mVGVzdCgpCit7CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5n
dGgpOworICAgIGxvZygid2luZG93LmxvY2F0aW9uIGlzICIgKyB3aW5kb3cubG9jYXRpb24pOwor
ICAgIGVuZFRlc3QoIlRlc3QgY29tcGxldGVkIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgpCit7
CisgICAgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlKSB7CisgICAgICAgIGlmIChzZXNzaW9uU3Rv
cmFnZS5zdGFnZSA9PSAyKQorICAgICAgICAgICAgcnVuU2Vjb25kU3RhZ2VPZlRlc3QoKTsKKyAg
ICAgICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMykKKyAgICAgICAgICAgIGVu
ZFRlc3QoIlNob3VsZG4ndCByZWFjaCB0aGlzIGNhc2Ugd2hlbiBkb2luZyBmcmFnbWVudCBzY3Jv
bGxzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVuZFRlc3QoIlVuZXhwZWN0ZWQgc3Rh
Z2UgdmFsdWUiKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcnVuRmlyc3RTdGFnZU9mVGVzdCgpOwor
fQorCitmdW5jdGlvbiBydW5GaXJzdFN0YWdlT2ZUZXN0KCkKK3sgICAKKyAgICBoaXN0b3J5LnJl
cGxhY2VTdGF0ZSgiRmlyc3RFbnRyeSIsIG51bGwsICIjRmlyc3RFbnRyeSIpOworICAgIGhpc3Rv
cnkucHVzaFN0YXRlKCJTZWNvbmRFbnRyeSIsIG51bGwsICIjU2Vjb25kRW50cnkiKTsKKyAgICAK
KyAgICBsb2coIkhpc3RvcnkgbGVuZ3RoIGlzICIgKyBoaXN0b3J5Lmxlbmd0aCk7CisgICAgaGlz
dG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3sKKyAgICBsb2coIlN0
YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5z
dGF0ZSArICIpIik7CisgICAgaWYgKGV2ZW50LnN0YXRlID09ICJGaXJzdEVudHJ5IikgeworICAg
ICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2
YXRlZCIsIG51bGwsICIjRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIpOworICAg
ICAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LnN0YXRlID09ICJT
ZWNvbmRFbnRyeSIpIHsKKyAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIlNlY29uZEVudHJ5
U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIiNTZWNvbmRFbnRyeVNob3VsZE5ldmVy
QmVSZWFjdGl2YXRlZCIpOworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL25h
dmlnYXRlLWJhY2suaHRtbCI7CisgICAgfSBlbHNlCisgICAgICAgIGVuZFRlc3QoIlVuZXhwZWN0
ZWQgc3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlKTsKK30KKworZnVuY3Rpb24gaGFzaENo
YW5nZWQoKQoreworICAgIGxvZygiaGFzaENoYW5nZWQgLSBsb2NhdGlvbiBpcyAiICsgd2luZG93
LmxvY2F0aW9uKTsKKyAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggPT0gIiNGaXJzdEVudHJ5
U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIikKKyAgICAgICAgZW5kVGVzdCgiVGVzdCBjb21wbGV0
ZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyIgb25wb3BzdGF0
ZT0ic3RhdGVQb3BwZWQoKTsiIG9uaGFzaGNoYW5nZT0iaGFzaENoYW5nZWQoKTsiIG9udW5sb2Fk
PSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8iPgorPHByZT4KK1RoaXMgdGVzdDoKKy1CdWlsZHMg
dXAgYSBsaXN0IG9mIHN0YXRlIG9iamVjdCBlbnRyaWVzIHdpdGggZnJhZ21lbnQgVVJMLgorLU5h
dmlnYXRlcyB0aHJvdWdoIHRoZW0gdG8gdmVyaWZ5IHRoYXQgdGhlIHBvcHN0YXRlIGFuZCBoYXNo
Y2hhbmdlZCBldmVudHMgYXJlIGZpcmVkLgorLU5hdmlnYXRlcyBhd2F5IHRvIGEgbmV3IGRvY3Vt
ZW50LCB3aXRoIHRoZSBvbGQgZG9jdW1lbnQgYmVpbmcgZGVzdHJveWVkLgorLU5hdmlnYXRlcyBi
YWNrIHRvIHRoZSBzdGF0ZSBvYmplY3QgZW50cmllcyBhbmQgdmVyaWZpZXMgdGhlIHBvcHN0YXRl
IGV2ZW50IGlzIG5vdCBmaXJlZC4KKzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVk
LW5hdmlnYXRlLWJhY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICghc2Vzc2lvblN0b3Jh
Z2Uuc3RhZ2UpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRM
aXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4dCkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4
dCArICJcbiI7CisgICAgLy8gYWxlcnQgdGhlIG1lc3NhZ2VzIGFsc28gc28gRHVtcFJlbmRlclRy
ZWUgY2FuIGNhcHR1cmUgYW5kIGxvZyBtZXNzYWdlcyBhY3Jvc3MgbXVsdGlwbGUgZG9jdW1lbnRz
LgorICAgIGFsZXJ0KHR4dCk7Cit9CisKK2Z1bmN0aW9uIGVuZFRlc3QobXNnKQoreworICAgIGxv
Zyhtc2cpOworICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBydW5TZWNvbmRTdGFnZU9mVGVzdCgpCit7CisgICAgbG9nKCJI
aXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGxvZygid2luZG93Lmxv
Y2F0aW9uIGlzICIgKyB3aW5kb3cubG9jYXRpb24pOworICAgIHNlc3Npb25TdG9yYWdlLnN0YWdl
ID0gMzsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gcnVuVGhpcmRTdGFnZU9m
VGVzdCgpCit7CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgp
OworICAgIGxvZygid2luZG93LmxvY2F0aW9uIGlzICIgKyB3aW5kb3cubG9jYXRpb24pOworICAg
IGVuZFRlc3QoIlRlc3QgY29tcGxldGVkIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgpCit7Cisg
ICAgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlKSB7CisgICAgICAgIGlmIChzZXNzaW9uU3RvcmFn
ZS5zdGFnZSA9PSAyKQorICAgICAgICAgICAgcnVuU2Vjb25kU3RhZ2VPZlRlc3QoKTsKKyAgICAg
ICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMykKKyAgICAgICAgICAgIHJ1blRo
aXJkU3RhZ2VPZlRlc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5kVGVzdCgiVW5l
eHBlY3RlZCBzdGFnZSB2YWx1ZSIpOworICAgIH0gZWxzZQorICAgICAgICBydW5GaXJzdFN0YWdl
T2ZUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKQoreyAgIAorICAg
IGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVudHJ5IiwgbnVsbCwgIj9GaXJzdEVudHJ5Iik7
CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlNlY29uZEVudHJ5IiwgbnVsbCwgIj9TZWNvbmRFbnRy
eSIpOworICAgIAorICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3Ro
KTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQorewor
ICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlw
ZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICBpZiAoZXZlbnQuc3RhdGUgPT0gIkZpcnN0RW50
cnkiKSB7CisgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVudHJ5U2hvdWxkTmV2
ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIj9GaXJzdEVudHJ5U2hvdWxkTmV2ZXJCZVJlYWN0aXZh
dGVkIik7CisgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgIH0gZWxzZSBpZiAoZXZlbnQu
c3RhdGUgPT0gIlNlY29uZEVudHJ5IikgeworICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgi
U2Vjb25kRW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQiLCBudWxsLCAiP1NlY29uZEVudHJ5
U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIik7CisgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJy
ZXNvdXJjZXMvbmF2aWdhdGUtYmFjay5odG1sIjsKKyAgICB9IGVsc2UKKyAgICAgICAgZW5kVGVz
dCgiVW5leHBlY3RlZCBzdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUpOworfQorCis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgp
OyIgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBjYWNoZSAqLyI+Cis8cHJlPgorVGhpcyB0ZXN0
OgorLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVudHJpZXMuCistTmF2aWdhdGVz
IHRocm91Z2ggdGhlbSB0byB2ZXJpZnkgdGhhdCB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgZmlyZWQu
CistTmF2aWdhdGVzIGF3YXkgdG8gYSBuZXcgZG9jdW1lbnQsIHdpdGggdGhlIG9sZCBkb2N1bWVu
dCBiZWluZyBkZXN0cm95ZWQuCistTmF2aWdhdGVzIGJhY2sgdG8gdGhlIHN0YXRlIG9iamVjdCBl
bnRyaWVzIGFuZCB2ZXJpZmllcyB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgbm90IGZpcmVkLgorPC9w
cmU+PGJyPgorPHByZSBpZD0ibG9nZ2VyIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2Fk
LWNvbXBsZXRlLWFkZGV2ZW50bGlzdGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNv
bXBsZXRlLWFkZGV2ZW50bGlzdGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29t
cGxldGUtYWRkZXZlbnRsaXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKK1RoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistTGlzdGVucyBmb3IgdGhl
IHBvcHN0YXRlIGV2ZW50IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIKKy1NYWtlcyBhIGNhbGwgdG8g
cHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0Cist
R29lcyBiYWNrLCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAor
LUdvZXMgZm9yd2FyZCwgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJl
Y3QKKworSGlzdG9yeSBsZW5ndGggaXMgMgorU3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBvYmpl
Y3QpCitTdGF0ZSBwb3BwZWQgLSBTdGF0ZVN0cmluZ0RhdGEgKHR5cGUgc3RyaW5nKQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9h
ZC1jb21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUt
YWRkZXZlbnRsaXN0ZW5lci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRs
aXN0ZW5lci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4dCkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTdGF0ZVN0cmluZ0RhdGEi
LCAiTmV3IHRpdGxlIik7CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5s
ZW5ndGgpOworICAgIGhpc3RvcnkuYmFjaygpOworfQorCitmdW5jdGlvbiBzdGF0ZVBvcHBlZCgp
Cit7CisgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIg
KyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgIGlmIChldmVudC5zdGF0ZSA9PSBudWxs
KQorICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIiwgc3RhdGVQb3BwZWQp
OworCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cHJlPgorVGhpcyB0
ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKKy1MaXN0ZW5zIGZvciB0aGUgcG9wc3RhdGUgZXZlbnQg
dXNpbmcgYWRkRXZlbnRMaXN0ZW5lcgorLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUoKQorLU1h
a2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1Hb2VzIGJhY2ssIGFuZCBt
YWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0CistR29lcyBmb3J3YXJkLCBh
bmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorPC9wcmU+PGJyPgor
PHByZSBpZD0ibG9nZ2VyIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRl
LWJvZHktYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMg
dGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistVXNlcyBib2R5Lm9ucG9wc3RhdGUgdG8gYWRkIGEg
cG9wc3RhdGUgaGFuZGxlciAoYm90aCBieSB1c2luZyB0aGUgaW5saW5lIGF0dHJpYnV0ZSBhbmQg
YSBzY3JpcHQtYXNzaWduZWQgYXR0cmlidXRlKQorLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUo
KQorLU1ha2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1Hb2VzIGJhY2ss
IGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0CistR29lcyBmb3J3
YXJkLCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorCitIaXN0
b3J5IGxlbmd0aCBpcyAyCitTdGF0ZSBwb3BwZWQgLSBudWxsICh0eXBlIG9iamVjdCkKK1N0YXRl
IHBvcHBlZCAtIFN0YXRlU3RyaW5nRGF0YSAodHlwZSBzdHJpbmcpCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRl
LWJvZHktYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1hdHRyaWJ1
dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBsb2codHh0KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dn
ZXIiKS5pbm5lclRleHQgKz0gdHh0ICsgIlxuIjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlN0YXRlU3RyaW5nRGF0YSIsICJOZXcgdGl0bGUiKTsK
KyAgICBsb2coIkhpc3RvcnkgbGVuZ3RoIGlzICIgKyBoaXN0b3J5Lmxlbmd0aCk7CisgICAgaGlz
dG9yeS5iYWNrKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3sKKyAgICBsb2coIlN0
YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5z
dGF0ZSArICIpIik7CisgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpIHsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5vbnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CisgICAgICAgIGhpc3RvcnkuZm9y
d2FyZCgpOworICAgIH0gZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0Pgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8
cHJlPgorVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKKy1Vc2VzIGJvZHkub25wb3BzdGF0
ZSB0byBhZGQgYSBwb3BzdGF0ZSBoYW5kbGVyIChib3RoIGJ5IHVzaW5nIHRoZSBpbmxpbmUgYXR0
cmlidXRlIGFuZCBhIHNjcmlwdC1hc3NpZ25lZCBhdHRyaWJ1dGUpCistTWFrZXMgYSBjYWxsIHRv
IHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5ndGggaXMgY29ycmVjdAor
LUdvZXMgYmFjaywgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QK
Ky1Hb2VzIGZvcndhcmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3Jy
ZWN0Cis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFm
dGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVy
LWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXIt
bG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKKy1Vc2VzIHdp
bmRvdy5vbnBvcHN0YXRlIHRvIGFkZCBhIHBvcHN0YXRlIGhhbmRsZXIKKy1NYWtlcyBhIGNhbGwg
dG8gcHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0
CistR29lcyBiYWNrLCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVj
dAorLUdvZXMgZm9yd2FyZCwgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNv
cnJlY3QKKworSGlzdG9yeSBsZW5ndGggaXMgMgorU3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBv
YmplY3QpCitTdGF0ZSBwb3BwZWQgLSBTdGF0ZVN0cmluZ0RhdGEgKHR5cGUgc3RyaW5nKQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXIt
bG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxl
dGUtd2luZG93LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93
LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4dCkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7Cit9CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTdGF0ZVN0cmluZ0Rh
dGEiLCAiTmV3IHRpdGxlIik7CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9y
eS5sZW5ndGgpOworICAgIGhpc3RvcnkuYmFjaygpOworfQorCitmdW5jdGlvbiBzdGF0ZVBvcHBl
ZCgpCit7CisgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBl
ICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgIGlmIChldmVudC5zdGF0ZSA9PSBu
dWxsKQorICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKword2luZG93Lm9ucG9wc3RhdGUgPSBzdGF0ZVBvcHBlZDsKKworPC9zY3JpcHQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHByZT4KK1RoaXMgdGVzdCBkb2VzIHRoZSBm
b2xsb3dpbmc6CistVXNlcyB3aW5kb3cub25wb3BzdGF0ZSB0byBhZGQgYSBwb3BzdGF0ZSBoYW5k
bGVyCistTWFrZXMgYSBjYWxsIHRvIHB1c2hTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9y
eSBsZW5ndGggaXMgY29ycmVjdAorLUdvZXMgYmFjaywgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0
YXRlIGV2ZW50IGlzIGNvcnJlY3QKKy1Hb2VzIGZvcndhcmQsIGFuZCBtYWtlcyBzdXJlIHRoZSBw
b3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0Cis8L3ByZT48YnI+Cis8cHJlIGlkPSJsb2dnZXIiPjwv
cHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0
LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGNhbGxzIHB1c2hTdGF0ZSB3aXRo
IHN0YXRlIG9iamVjdHMgb2YgYWxsIHRoZSBkaWZmZXJlbnQgb2JqZWN0IHR5cGVzIHN1cHBvcnRl
ZCBieSB0aGUgSFRNTDUgImludGVybmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0iIGFu
ZCBtYWtlcyBzdXJlIHRoZSBldmVudHMgY29udGFpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0cyB3aGVu
IHRoZSBzdGF0ZXMgYXJlIHBvcHBlZC4KKworU3RhdGUgcG9wcGVkIC0gW29iamVjdCBPYmplY3Rd
ICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIFtvYmplY3QgT2JqZWN0XSAodHlwZSBvYmpl
Y3QpCitTdGF0ZSBwb3BwZWQgLSAgKHR5cGUgb2JqZWN0KQorU3RhdGUgcG9wcGVkIC0gbnVsbCAo
dHlwZSBvYmplY3QpCitTdGF0ZSBwb3BwZWQgLSBXZWQgRGVjIDMxIDE5NjkgMTY6MDA6MDAgR01U
LTA4MDAgKFBTVCkgKHR5cGUgb2JqZWN0KQorU3RhdGUgcG9wcGVkIC0gU3RyaW5nICh0eXBlIHN0
cmluZykKK1N0YXRlIHBvcHBlZCAtIDQyICh0eXBlIG51bWJlcikKK1N0YXRlIHBvcHBlZCAtIHRy
dWUgKHR5cGUgYm9vbGVhbikKK1N0YXRlIHBvcHBlZCAtIGZhbHNlICh0eXBlIGJvb2xlYW4pCitT
dGF0ZSBwb3BwZWQgLSBudWxsICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIHVuZGVmaW5l
ZCAodHlwZSB1bmRlZmluZWQpCitTdGF0ZSBwb3BwZWQgLSBGaXJzdEVudHJ5ICh0eXBlIHN0cmlu
ZykKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0
ZS1vYmplY3QtdHlwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3Qt
dHlwZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworfQorICAgIAorZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIkZpcnN0RW50cnki
LCAiSW5pdGlhbCBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKHVuZGVmaW5lZCwgInVu
ZGVmaW5lZCBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICJudWxsIGVudHJ5
Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoZmFsc2UsICJmYWxzZSBlbnRyeSIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKHRydWUsICJ0cnVlIGVudHJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3Rh
dGUoNDIsICJOdW1iZXIgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSgiU3RyaW5nIiwg
IlN0cmluZyBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBEYXRlKDApLCAiRGF0
ZSBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBSZWdFeHAsICJSZWdFeHAgZW50
cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgQXJyYXksICJBcnJheSBlbnRyeSIpOwor
ICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBPYmplY3QsICJPYmplY3QgZW50cnkiKTsKKyAgICBo
aXN0b3J5LnB1c2hTdGF0ZShuZXcgRXJyb3IsICJFcnJvciBlbnRyeSIpOworCisvKiBUaGUgZm9s
bG93aW5nIGFyZSBub3QgeWV0IHdlbGwgZW5vdWdoIHN1cHBvcnRlZCBpbiBXZWJLaXQgdG8gbWVh
bmluZ2Z1bGx5IHRlc3QgaGVyZToKK2hpc3RvcnkucHVzaFN0YXRlKFtJbWFnZURhdGFdLCAiSW1h
Z2VEYXRhIGVudHJ5Iik7CitoaXN0b3J5LnB1c2hTdGF0ZShbQmxvYl0sICJCbG9iIGVudHJ5Iik7
CitoaXN0b3J5LnB1c2hTdGF0ZShbRmlsZV0sICJGaWxlIGVudHJ5Iik7CitoaXN0b3J5LnB1c2hT
dGF0ZShbRmlsZUxpc3RdLCAiRmlsZUxpc3QgZW50cnkiKTsKKyovCisKKyAgICBoaXN0b3J5LnB1
c2hTdGF0ZSgiQnVmZmVyRW50cnkiLCAiTGFzdCBlbnRyeSIpOworICAgIGhpc3RvcnkuYmFjaygp
OworfQorCitmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit7CisgICAgbG9nKCJTdGF0ZSBwb3BwZWQg
LSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIp
OworICAgIGlmIChldmVudC5zdGF0ZSAhPSAiRmlyc3RFbnRyeSIpCisgICAgICAgIGhpc3Rvcnku
YmFjaygpOworICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiPgorPHBy
ZSBpZD0ic29tZWVsZW1lbnQiPgorVGhpcyB0ZXN0IGNhbGxzIHB1c2hTdGF0ZSB3aXRoIHN0YXRl
IG9iamVjdHMgb2YgYWxsIHRoZSBkaWZmZXJlbnQgb2JqZWN0IHR5cGVzIHN1cHBvcnRlZCBieSB0
aGUgSFRNTDUgImludGVybmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0iIGFuZCBtYWtl
cyBzdXJlIHRoZSBldmVudHMgY29udGFpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0cyB3aGVuIHRoZSBz
dGF0ZXMgYXJlIHBvcHBlZC4KKzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVw
bGFjZXN0YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgZG9lcyB0aGUgZm9s
bG93aW5nOgorLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUoKQorLU1ha2VzIHN1cmUgdGhlIGhp
c3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1NYWtlcyBhIGNhbGwgdG8gcmVwbGFjZVN0YXRlKCkK
Ky1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistR29lcyBiYWNrLCBh
bmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorLUdvZXMgZm9yd2Fy
ZCwgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IHJlcHJlc2VudHMgdGhlIHJlcGxh
Y2VkIHN0YXRlIG9iamVjdAorCitIaXN0b3J5IGxlbmd0aCBpcyAyCitIaXN0b3J5IGxlbmd0aCBp
cyAyCitTdGF0ZSBwb3BwZWQgLSBudWxsICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIDEg
KHR5cGUgbnVtYmVyKQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zvcndh
cmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4
dCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9
IHR4dCArICJcbiI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGhpc3RvcnkucHVz
aFN0YXRlKCJTdGF0ZVN0cmluZ0RhdGEiLCAiTmV3IHRpdGxlIik7CisgICAgbG9nKCJIaXN0b3J5
IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworICAgIGhpc3RvcnkucmVwbGFjZVN0YXRl
KDEsICJSZXBsYWNlZCB0aXRsZSIpOworICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhp
c3RvcnkubGVuZ3RoKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKworZnVuY3Rpb24gc3RhdGVQ
b3BwZWQoKQoreworICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAo
dHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICBpZiAoZXZlbnQuc3RhdGUg
PT0gbnVsbCkKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgZWxzZSBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBv
cHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8cHJlPgorVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxv
d2luZzoKKy1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0
b3J5IGxlbmd0aCBpcyBjb3JyZWN0CistTWFrZXMgYSBjYWxsIHRvIHJlcGxhY2VTdGF0ZSgpCist
TWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5ndGggaXMgY29ycmVjdAorLUdvZXMgYmFjaywgYW5k
IG1ha2VzIHN1cmUgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGNvcnJlY3QKKy1Hb2VzIGZvcndhcmQs
IGFuZCBtYWtlcyBzdXJlIHRoZSBwb3BzdGF0ZSBldmVudCByZXByZXNlbnRzIHRoZSByZXBsYWNl
ZCBzdGF0ZSBvYmplY3QKKzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0
ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM0IEBACitUaGlzIHRlc3QgcHVzaGVzIGEgc2VyaWVzIG9mIHN0YXRl
IG9iamVjdHMgd2l0aCBkaWZmZXJlbnQgVVJMcyBhbmQgZnJhZ21lbnQgaWRlbnRpZmllcnMgbWVh
bnQgdG8gdGVzdCB0aGUgaGFzaENoYW5nZSBldmVudCBhcyBzdGF0ZXMgYXJlIHBvcHBlZC4KKwor
U3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBm
aWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhzb21lb3RoZXJxdWVyeQorU3RhdGUg
cG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8v
L1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhzb21lb3RoZXJxdWVyeSMKK0hhc2ggY2hhbmdl
IGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBudWxsICh0eXBlIG9iamVjdCkgYW5kIGxv
Y2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zb21lLW90aGVyLmh0bWw/d2l0aHNvbWVvdGhlcnF1ZXJ5
CitIYXNoIGNoYW5nZSBmaXJlZAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBv
YmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhz
b21lb3RoZXJxdWVyeSNzb21laGFzaAorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3
aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVz
L0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3NvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVycXVlcnkjc29tZW90aGVyaGFzaAorSGFzaCBj
aGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBh
bmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3NvbWUtb3RoZXIuaHRtbD93aXRocXVlcnkjc29t
ZW90aGVyaGFzaAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFu
ZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5odG1sP3dpdGhxdWVyeSMKK0hh
c2ggY2hhbmdlIGZpcmVkCitTdGF0ZSBwb3BwZWQgd2l0aCBldmVudCBudWxsICh0eXBlIG9iamVj
dCkgYW5kIGxvY2F0aW9uIGZpbGU6Ly8vVm9sdW1lcy9EYXRhL3N2bi9PcGVuU291cmNlL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zb21lLW90aGVyLmh0bWw/d2l0aHF1ZXJ5
I3NvbWVoYXNoCitIYXNoIGNoYW5nZSBmaXJlZAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVs
bCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3Bl
blNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29tZS1vdGhlci5o
dG1sP3dpdGhxdWVyeQorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50
IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3Zu
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3NvbWUtb3Ro
ZXIuaHRtbD93aXRocXVlcnkjCitIYXNoIGNoYW5nZSBmaXJlZAorU3RhdGUgcG9wcGVkIHdpdGgg
ZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0
YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc29t
ZS1vdGhlci5odG1sP3dpdGhxdWVyeQorSGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3
aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVz
L0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3NvbWUtb3RoZXIuaHRtbAorU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmpl
Y3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQt
dXJscy1hbmQtaGFzaGNoYW5nZS5odG1sIworU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgbnVsbCAo
dHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9zdm4vT3BlblNv
dXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgt
ZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sIworU3RhdGUgcG9wcGVkIHdpdGggZXZl
bnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1ZvbHVtZXMvRGF0YS9z
dm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0
YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sI290aGVyaGFzaAorSGFz
aCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2JqZWN0
KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVy
bHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCNoYXNoCitIYXNoIGNoYW5nZSBmaXJlZAorU3RhdGUgcG9w
cGVkIHdpdGggZXZlbnQgbnVsbCAodHlwZSBvYmplY3QpIGFuZCBsb2NhdGlvbiBmaWxlOi8vL1Zv
bHVtZXMvRGF0YS9zdm4vT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sIwor
SGFzaCBjaGFuZ2UgZmlyZWQKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IG51bGwgKHR5cGUgb2Jq
ZWN0KSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEvc3ZuL09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50
LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCMKK1N0YXRlIHBvcHBlZCB3aXRoIGV2ZW50IE9yaWdp
bmFsRW50cnkgKHR5cGUgc3RyaW5nKSBhbmQgbG9jYXRpb24gZmlsZTovLy9Wb2x1bWVzL0RhdGEv
c3ZuL09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQt
dXJscy1hbmQtaGFzaGNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNo
Y2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gbG9nKHR4dCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJPcmlnaW5hbEVudHJ5IiwgIm9yaWdpbmFs
Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgIiMiKTsKKyAgICBoaXN0b3J5
LnB1c2hTdGF0ZShudWxsLCBudWxsLCAiIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwg
bnVsbCwgIiNoYXNoIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgIiNvdGhl
cmhhc2giKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAiIyIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG51bGwpOworICAgIGhpc3RvcnkucHVzaFN0YXRl
KG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWwiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShu
dWxsLCBudWxsLCAic29tZS1vdGhlci5odG1sP3dpdGhxdWVyeSIpOworICAgIGhpc3RvcnkucHVz
aFN0YXRlKG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWw/d2l0aHF1ZXJ5IyIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsICJzb21lLW90aGVyLmh0bWw/d2l0aHF1ZXJ5Iik7
CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRo
cXVlcnkjc29tZWhhc2giKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAic29t
ZS1vdGhlci5odG1sP3dpdGhxdWVyeSMiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBu
dWxsLCAic29tZS1vdGhlci5odG1sP3dpdGhxdWVyeSNzb21lb3RoZXJoYXNoIik7CisgICAgaGlz
dG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVy
cXVlcnkjc29tZW90aGVyaGFzaCIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGws
ICJzb21lLW90aGVyLmh0bWw/d2l0aHNvbWVvdGhlcnF1ZXJ5I3NvbWVoYXNoIik7CisgICAgaGlz
dG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgInNvbWUtb3RoZXIuaHRtbD93aXRoc29tZW90aGVy
cXVlcnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAic29tZS1vdGhlci5o
dG1sP3dpdGhzb21lb3RoZXJxdWVyeSMiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBu
dWxsLCAic29tZS1vdGhlci5odG1sP3dpdGhzb21lb3RoZXJxdWVyeSIpOworCisgICAgaGlzdG9y
eS5wdXNoU3RhdGUoIkJ1ZmZlckVudHJ5IiwgIkxhc3QgZW50cnkiKTsKKyAgICBoaXN0b3J5LmJh
Y2soKTsKK30KKworZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQoreworICAgIGxvZygiU3RhdGUgcG9w
cGVkIHdpdGggZXZlbnQgIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50
LnN0YXRlICsgIikgYW5kIGxvY2F0aW9uICIgKyB3aW5kb3cubG9jYXRpb24pOworICAgIGlmIChl
dmVudC5zdGF0ZSAhPSAiT3JpZ2luYWxFbnRyeSIpCisgICAgICAgIGhpc3RvcnkuYmFjaygpOwor
ICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBoYXNoQ2hhbmdlZCgp
Cit7CisgICAgbG9nKCJIYXNoIGNoYW5nZSBmaXJlZCIpOworfQorCis8L3NjcmlwdD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9uaGFzaGNo
YW5nZT0iaGFzaENoYW5nZWQoKTsiPgorPHByZT4KK1RoaXMgdGVzdCBwdXNoZXMgYSBzZXJpZXMg
b2Ygc3RhdGUgb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBVUkxzIGFuZCBmcmFnbWVudCBpZGVudGlm
aWVycyBtZWFudCB0byB0ZXN0IHRoZSBoYXNoQ2hhbmdlIGV2ZW50IGFzIHN0YXRlcyBhcmUgcG9w
cGVkLgorPC9wcmU+PGJyPgorPHByZSBpZD0ibG9nZ2VyIj48L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3Rh
dGUtdGhlbi1wdXNoc3RhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1wdXNoc3RhdGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CistTWFr
ZXMgYSBjYWxsIHRvIHJlcGxhY2VTdGF0ZSgpCistTWFrZXMgc3VyZSB0aGUgaGlzdG9yeSBsZW5n
dGggaXMgY29ycmVjdAorLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUoKQorLU1ha2VzIHN1cmUg
dGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QKKy1Hb2VzIGJhY2ssIGFuZCBtYWtlcyBzdXJl
IHRoZSBwb3BzdGF0ZSBldmVudCBpcyBjb3JyZWN0CistR29lcyBmb3J3YXJkLCBhbmQgbWFrZXMg
c3VyZSB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgY29ycmVjdAorCitIaXN0b3J5IGxlbmd0aCBpcyAx
CitIaXN0b3J5IGxlbmd0aCBpcyAyCitTdGF0ZSBwb3BwZWQgLSBPcmlnaW5hbEhpc3RvcnlJdGVt
ICh0eXBlIHN0cmluZykKK1N0YXRlIHBvcHBlZCAtIE5ld0hpc3RvcnlJdGVtICh0eXBlIHN0cmlu
ZykKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2Vz
dGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1wdXNoc3RhdGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNl
c3RhdGUtdGhlbi1wdXNoc3RhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0eHQpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4i
OworfQorICAgIAorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaGlzdG9yeS5yZXBsYWNlU3Rh
dGUoIk9yaWdpbmFsSGlzdG9yeUl0ZW0iLCAiUmVwbGFjZWQgdGl0bGUiKTsKKyAgICBsb2coIkhp
c3RvcnkgbGVuZ3RoIGlzICIgKyBoaXN0b3J5Lmxlbmd0aCk7CisgICAgaGlzdG9yeS5wdXNoU3Rh
dGUoIk5ld0hpc3RvcnlJdGVtIiwgIlB1c2hlZCB0aXRsZSIpOworICAgIGxvZygiSGlzdG9yeSBs
ZW5ndGggaXMgIiArIGhpc3RvcnkubGVuZ3RoKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKwor
ZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQoreworICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2
ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICBp
ZiAoZXZlbnQuc3RhdGUgPT0gIk9yaWdpbmFsSGlzdG9yeUl0ZW0iKQorICAgICAgICBoaXN0b3J5
LmZvcndhcmQoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4K
KzxwcmU+CitUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgorLU1ha2VzIGEgY2FsbCB0byBy
ZXBsYWNlU3RhdGUoKQorLU1ha2VzIHN1cmUgdGhlIGhpc3RvcnkgbGVuZ3RoIGlzIGNvcnJlY3QK
Ky1NYWtlcyBhIGNhbGwgdG8gcHVzaFN0YXRlKCkKKy1NYWtlcyBzdXJlIHRoZSBoaXN0b3J5IGxl
bmd0aCBpcyBjb3JyZWN0CistR29lcyBiYWNrLCBhbmQgbWFrZXMgc3VyZSB0aGUgcG9wc3RhdGUg
ZXZlbnQgaXMgY29ycmVjdAorLUdvZXMgZm9yd2FyZCwgYW5kIG1ha2VzIHN1cmUgdGhlIHBvcHN0
YXRlIGV2ZW50IGlzIGNvcnJlY3QKKzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcmVzb3VyY2VzL25hdmlnYXRlLWJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL25hdmlnYXRlLWJhY2suaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9y
ZXNvdXJjZXMvbmF2aWdhdGUtYmFjay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
KzxodG1sPgorPGJvZHkgb25sb2FkPSJhbGVydCgnTmF2aWdhdGluZyBiYWNrLi4uJyk7IHNlc3Np
b25TdG9yYWdlLnN0YWdlID0gMjsgaGlzdG9yeS5iYWNrKCk7Ij48L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvc3RhdGUtb2JqZWN0LXNlY3VyaXR5
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N0YXRlLW9i
amVjdC1zZWN1cml0eS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMyIEBACittYWluIGZyYW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQor
bWFpbiBmcmFtZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgY2FsbHMgdG8gcHVzaFN0YXRlKCkgYW5kIHJlcGxhY2VTdGF0ZSgpIHdp
dGggVVJMcyB0aGF0IHZpb2xhdGUgdGhlIHNlY3VyaXR5IG9yaWdpbiBjaGVjayBmYWlsIGFzIGV4
cGVjdGVkLgorCitUcnlpbmcgdG8gcHVzaFN0YXRlKCkgd2l0aCB1cmwgaHR0cDovL2xvY2FsaG9z
dC90ZXN0Lmh0bWwgZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6IERP
TSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0byByZXBsYWNlU3Rh
dGUoKSB3aXRoIHVybCBodHRwOi8vbG9jYWxob3N0L3Rlc3QuaHRtbCBmYWlsZWQgd2l0aCBleGNl
cHRpb24gRXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlzdG9yeSBsZW5n
dGggaXMgMQorVHJ5aW5nIHRvIHB1c2hTdGF0ZSgpIHdpdGggdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMS90ZXN0Lmh0bWwgZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6
IERPTSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0byByZXBsYWNl
U3RhdGUoKSB3aXRoIHVybCBodHRwOi8vbG9jYWxob3N0OjgwMDEvdGVzdC5odG1sIGZhaWxlZCB3
aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhjZXB0aW9uIDE4CitIaXN0
b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8gcHVzaFN0YXRlKCkgd2l0aCB1cmwgaHR0cDovL3d3
dy53ZWJraXQub3JnL3Rlc3QuaHRtbCBmYWlsZWQgd2l0aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VS
SVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlzdG9yeSBsZW5ndGggaXMgMQorVHJ5aW5nIHRv
IHJlcGxhY2VTdGF0ZSgpIHdpdGggdXJsIGh0dHA6Ly93d3cud2Via2l0Lm9yZy90ZXN0Lmh0bWwg
ZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRpb24g
MTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKK1RyeWluZyB0byBwdXNoU3RhdGUoKSB3aXRoIHVybCBo
dHRwOi8vd3d3LndlYmtpdC5vcmcvIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJ
VFlfRVJSOiBET00gRXhjZXB0aW9uIDE4CitIaXN0b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8g
cmVwbGFjZVN0YXRlKCkgd2l0aCB1cmwgaHR0cDovL3d3dy53ZWJraXQub3JnLyBmYWlsZWQgd2l0
aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlzdG9y
eSBsZW5ndGggaXMgMQorVHJ5aW5nIHRvIHB1c2hTdGF0ZSgpIHdpdGggdXJsIGZ0cDovL3d3dy53
ZWJraXQub3JnLyBmYWlsZWQgd2l0aCBleGNlcHRpb24gRXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9N
IEV4Y2VwdGlvbiAxOAorSGlzdG9yeSBsZW5ndGggaXMgMQorVHJ5aW5nIHRvIHJlcGxhY2VTdGF0
ZSgpIHdpdGggdXJsIGZ0cDovL3d3dy53ZWJraXQub3JnLyBmYWlsZWQgd2l0aCBleGNlcHRpb24g
RXJyb3I6IFNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOAorSGlzdG9yeSBsZW5ndGggaXMg
MQorVHJ5aW5nIHRvIHB1c2hTdGF0ZSgpIHdpdGggdXJsIGZpbGU6Ly9hbnlmaWxlLmh0bWwvIGZh
aWxlZCB3aXRoIGV4Y2VwdGlvbiBFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhjZXB0aW9uIDE4
CitIaXN0b3J5IGxlbmd0aCBpcyAxCitUcnlpbmcgdG8gcmVwbGFjZVN0YXRlKCkgd2l0aCB1cmwg
ZmlsZTovL2FueWZpbGUuaHRtbC8gZmFpbGVkIHdpdGggZXhjZXB0aW9uIEVycm9yOiBTRUNVUklU
WV9FUlI6IERPTSBFeGNlcHRpb24gMTgKK0hpc3RvcnkgbGVuZ3RoIGlzIDEKKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRp
b24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvc3Rh
dGUtb2JqZWN0LXNlY3VyaXR5LWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N0YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRpb24u
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gbG9nKHR4dCkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7Cit9CisK
K2Z1bmN0aW9uIHRyeVVSTCh1cmwpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaGlzdG9yeS5wdXNo
U3RhdGUobnVsbCwgbnVsbCwgdXJsKTsKKyAgICAgICAgbG9nKCJUcnlpbmcgdG8gcHVzaFN0YXRl
KCkgd2l0aCB1cmwgIiArIHVybCArICIgc3VjY2VlZGVkLCBidXQgc2hvdWxkJ3ZlIGZhaWxlZC4i
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJUcnlpbmcgdG8gcHVzaFN0YXRlKCkg
d2l0aCB1cmwgIiArIHVybCArICIgZmFpbGVkIHdpdGggZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9
CisgICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworCisgICAg
dHJ5IHsKKyAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgbnVsbCwgdXJsKTsKKyAg
ICAgICAgbG9nKCJUcnlpbmcgdG8gcmVwbGFjZVN0YXRlKCkgd2l0aCB1cmwgIiArIHVybCArICIg
c3VjY2VlZGVkLCBidXQgc2hvdWxkJ3ZlIGZhaWxlZC4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgbG9nKCJUcnlpbmcgdG8gcmVwbGFjZVN0YXRlKCkgd2l0aCB1cmwgIiArIHVybCArICIg
ZmFpbGVkIHdpdGggZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9CisgICAgbG9nKCJIaXN0b3J5IGxl
bmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOworfQorCit2YXIgVVJMc1RvVHJ5ID0gbmV3IEFy
cmF5KAorImh0dHA6Ly9sb2NhbGhvc3QvdGVzdC5odG1sIiwKKyJodHRwOi8vbG9jYWxob3N0Ojgw
MDEvdGVzdC5odG1sIiwKKyJodHRwOi8vd3d3LndlYmtpdC5vcmcvdGVzdC5odG1sIiwKKyJodHRw
Oi8vd3d3LndlYmtpdC5vcmcvIiwKKyJmdHA6Ly93d3cud2Via2l0Lm9yZy8iLAorImZpbGU6Ly9h
bnlmaWxlLmh0bWwvIgorKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZm9yIChuIGlu
IFVSTHNUb1RyeSkKKyAgICAgICAgdHJ5VVJMKFVSTHNUb1RyeVtuXSk7Cit9CisKKzwvc2NyaXB0
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxwcmU+CitUaGlzIHRlc3QgbWFrZXMgc3Vy
ZSB0aGF0IGNhbGxzIHRvIHB1c2hTdGF0ZSgpIGFuZCByZXBsYWNlU3RhdGUoKSB3aXRoIFVSTHMg
dGhhdCB2aW9sYXRlIHRoZSBzZWN1cml0eSBvcmlnaW4gY2hlY2sgZmFpbCBhcyBleHBlY3RlZC4K
KzwvcHJlPjxicj4KKzxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1l
bnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1MTU0NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3MtZnJhbWUtYWNjZXNzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTAsNiArMTAsMTAgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2Ny
aQogCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLWVudW1lcmF0aW9uLXRlc3QuaHRtbCBmcm9t
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jcm9zcy1mcmFt
ZS1hY2Nlc3MtZW51bWVyYXRpb24uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLgogCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQg
YXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLWVudW1lcmF0aW9uLXRlc3Qu
aHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9j
cm9zcy1mcmFtZS1hY2Nlc3MtZW51bWVyYXRpb24uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEph
dmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUtZm9yLWVudW1lcmF0
aW9uLXRlc3QuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtZW51bWVyYXRpb24uaHRtbC4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCiBUaGlzIHRlc3RzIHRoYXQgdmFyaWFibGUg
bmFtZXMgY2FuJ3QgYmUgZW51bWVyYXRlZCBjcm9zcyBkb21haW4gKHNlZSBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM4NykKIAogCg==
</data>
<flag name="review"
          id="25955"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="25956"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>