<?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>110436</bug_id>
          
          <creation_ts>2013-02-21 00:46:03 -0800</creation_ts>
          <short_desc>[Custom Elements] Any HTMLElement subclass should become a superclass of custom element</short_desc>
          <delta_ts>2013-03-15 13:14:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111411</dependson>
    
    <dependson>111511</dependson>
    
    <dependson>111512</dependson>
    
    <dependson>111678</dependson>
          <blocked>99688</blocked>
    
    <blocked>112094</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Web Components Team">webcomponents-bugzilla</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838191</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-21 00:46:03 -0800</bug_when>
    <thetext>The bug 100229 limits only HTMLElement as a superclass. Such a limitation should be eventually removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852109</commentid>
    <comment_count>1</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 01:22:02 -0700</bug_when>
    <thetext>*** Bug 111511 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852113</commentid>
    <comment_count>2</comment_count>
      <attachid>192423</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 01:29:34 -0700</bug_when>
    <thetext>Created attachment 192423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852569</commentid>
    <comment_count>3</comment_count>
      <attachid>192423</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-03-11 12:26:37 -0700</bug_when>
    <thetext>Comment on attachment 192423
Patch

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

&gt; Source/WebCore/bindings/v8/CustomElementHelpers.cpp:67
&gt; +static bool hasValidPrototypeChain(v8::Handle&lt;v8::Object&gt; requiredAscendant, v8::Handle&lt;v8::Value&gt; chain)

Ascendant -&gt; Ancestor? Or is that too close to ancestor in hierarchical sense?

&gt; Source/WebCore/html/HTMLAttributeNames.in:129
&gt; +is

Should this be ifdef&apos;d somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852906</commentid>
    <comment_count>4</comment_count>
      <attachid>192423</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 17:18:11 -0700</bug_when>
    <thetext>Comment on attachment 192423
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/CustomElementHelpers.cpp:67
&gt;&gt; +static bool hasValidPrototypeChain(v8::Handle&lt;v8::Object&gt; requiredAscendant, v8::Handle&lt;v8::Value&gt; chain)
&gt; 
&gt; Ascendant -&gt; Ancestor? Or is that too close to ancestor in hierarchical sense?

Ouch. Just confused. Should be ancestor.

&gt;&gt; Source/WebCore/html/HTMLAttributeNames.in:129
&gt;&gt; +is
&gt; 
&gt; Should this be ifdef&apos;d somehow?

Unfortunately, there is no such mechanism for attribute names.
Fortunately, this difference isn&apos;t observable from the Web ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852957</commentid>
    <comment_count>5</comment_count>
      <attachid>192615</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 18:27:05 -0700</bug_when>
    <thetext>Created attachment 192615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855518</commentid>
    <comment_count>6</comment_count>
      <attachid>192615</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-03-14 15:10:35 -0700</bug_when>
    <thetext>Comment on attachment 192615
Patch

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

The non-V8 things look good. Some comments inline:

&gt; Source/WebCore/ChangeLog:30
&gt; +          this change, the C++ backend of custom elements were alwasy

alwasy-&gt;always.

&gt; Source/WebCore/dom/CustomElementConstructor.cpp:57
&gt; +    , m_elementName(elementName)

should we call this customElementName? Maybe I should rename it to something like &quot;type name&quot; rather than &quot;custom element name&quot; in the spec.

&gt; Source/WebCore/dom/CustomElementConstructor.cpp:75
&gt; +PassRefPtr&lt;Element&gt; markAsExtendedCustomElement(PassRefPtr&lt;Element&gt; element, const AtomicString&amp; typeExtension)

setTypeExtension?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855636</commentid>
    <comment_count>7</comment_count>
      <attachid>193219</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 19:06:07 -0700</bug_when>
    <thetext>Created attachment 193219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855637</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 19:08:26 -0700</bug_when>
    <thetext>Hi Dimiri, thanks for taking a look! I revised the patch.
Haraken, could you give a glance for v8 bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855647</commentid>
    <comment_count>9</comment_count>
      <attachid>193219</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-14 19:25:41 -0700</bug_when>
    <thetext>Comment on attachment 193219
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:521
&gt; +template&lt;&gt;
&gt; +class WrapperTypeTraits&lt;${nativeType} &gt; {
&gt; +public:
&gt; +    static WrapperTypeInfo* info() { return &amp;${v8InterfaceName}::info; }
&gt; +};

You need to update run-bindings-tests.

&gt; Source/WebCore/bindings/v8/CustomElementHelpers.cpp:73
&gt;      while (!chain.IsEmpty()) {
&gt; -        if (chain == htmlPrototype)
&gt; +        if (chain == requiredAncestor)
&gt;              return true;
&gt;          if (!chain-&gt;IsObject())
&gt;              return false;

Nit: I&apos;d prefer:

  while (!chain.IsEmpty() &amp;&amp; chain-&gt;IsObject()) {
    if (chain == requiredAncestor)
      return true;
    chain = v8::Handle&lt;v8::Object&gt;::Cast(chain)-&gt;GetPrototype();
  }
  return true;

&gt; Source/WebCore/bindings/v8/V8CustomElement.cpp:48
&gt; +    RefPtr&lt;CustomElementConstructor&gt; protectedConstructor(constructor);

Why does this need to be protected again? PassRefPtr&lt;CustomElementConstructor&gt; already keeps +1, doesn&apos;t it?

&gt; Source/WebCore/bindings/v8/V8CustomElement.h:-63
&gt; -inline v8::Handle&lt;v8::Value&gt; V8CustomElement::toV8(Element* impl, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate* isolate)
&gt; -{
&gt; -    if (UNLIKELY(!impl))
&gt; -        return v8NullWithCheck(isolate);
&gt; -    v8::Handle&lt;v8::Object&gt; wrapper = DOMDataStore::getWrapper(impl, isolate);
&gt; -    if (!wrapper.IsEmpty())
&gt; -        return wrapper;
&gt; -    return V8CustomElement::wrap(impl, creationContext, isolate);
&gt; -}

Why can you remove this? Is it because there is no caller by chance, or because toV8() is auto-generated?

&gt; Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp:51
&gt; -    return V8CustomElement::toV8(element.get(), args.Holder(), args.GetIsolate());
&gt; +    return V8CustomElement::wrap(element.get(), args.Holder(), impl, args.GetIsolate());

What&apos;s the rationale for changing toV8() to wrap() ? (Actually I don&apos;t fully understand how toV8() and wrap() are related to each other in V8CustomElement.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855654</commentid>
    <comment_count>10</comment_count>
      <attachid>193219</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 19:51:41 -0700</bug_when>
    <thetext>Comment on attachment 193219
Patch

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

Hi Haraken, thanks for taking a look! I&apos;m revising the patch.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:521
&gt;&gt; +};
&gt; 
&gt; You need to update run-bindings-tests.

Will do.

&gt;&gt; Source/WebCore/bindings/v8/CustomElementHelpers.cpp:73
&gt;&gt;              return false;
&gt; 
&gt; Nit: I&apos;d prefer:
&gt; 
&gt;   while (!chain.IsEmpty() &amp;&amp; chain-&gt;IsObject()) {
&gt;     if (chain == requiredAncestor)
&gt;       return true;
&gt;     chain = v8::Handle&lt;v8::Object&gt;::Cast(chain)-&gt;GetPrototype();
&gt;   }
&gt;   return true;

OK, will do.

&gt;&gt; Source/WebCore/bindings/v8/V8CustomElement.cpp:48
&gt;&gt; +    RefPtr&lt;CustomElementConstructor&gt; protectedConstructor(constructor);
&gt; 
&gt; Why does this need to be protected again? PassRefPtr&lt;CustomElementConstructor&gt; already keeps +1, doesn&apos;t it?

Right. Will remove protectedConstructor variable.

&gt;&gt; Source/WebCore/bindings/v8/V8CustomElement.h:-63
&gt;&gt; -}
&gt; 
&gt; Why can you remove this? Is it because there is no caller by chance, or because toV8() is auto-generated?

We can remove this since this one cannot be called.
The point here is that there is no CustomElement class. V8CustomElement class is just a set of helper function
which is used mainly from generated code. The client can just use toV8(Node*), and V8CustomElement::wrap() is called inside the generated code
if necessary.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp:51
&gt;&gt; +    return V8CustomElement::wrap(element.get(), args.Holder(), impl, args.GetIsolate());
&gt; 
&gt; What&apos;s the rationale for changing toV8() to wrap() ? (Actually I don&apos;t fully understand how toV8() and wrap() are related to each other in V8CustomElement.)

wrap() is used here because there is no longer toV8().
This is safe since |element| is just created in this function through impl-&gt;createElement() call above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855656</commentid>
    <comment_count>11</comment_count>
      <attachid>193222</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 19:54:52 -0700</bug_when>
    <thetext>Created attachment 193222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855657</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-14 19:57:35 -0700</bug_when>
    <thetext>LGTM on the V8 side change.

(In reply to comment #10)
&gt; &gt;&gt; Source/WebCore/bindings/v8/V8CustomElement.h:-63
&gt; &gt;&gt; -}
&gt; &gt; 
&gt; &gt; Why can you remove this? Is it because there is no caller by chance, or because toV8() is auto-generated?
&gt; 
&gt; We can remove this since this one cannot be called.
&gt; The point here is that there is no CustomElement class. V8CustomElement class is just a set of helper function
&gt; which is used mainly from generated code. The client can just use toV8(Node*), and V8CustomElement::wrap() is called inside the generated code
&gt; if necessary.

Makes sense to me. Would you add a comment about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855682</commentid>
    <comment_count>13</comment_count>
      <attachid>193230</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 21:41:28 -0700</bug_when>
    <thetext>Created attachment 193230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855683</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-14 21:42:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; LGTM on the V8 side change.
&gt; 
&gt;&gt; (snip)
&gt; 
&gt; Makes sense to me. Would you add a comment about it?

Added a comment, waiting for rubberstamping from Dimitri :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856224</commentid>
    <comment_count>15</comment_count>
      <attachid>193230</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:14:33 -0700</bug_when>
    <thetext>Comment on attachment 193230
Patch

Clearing flags on attachment: 193230

Committed r145932: &lt;http://trac.webkit.org/changeset/145932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856225</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:14:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192423</attachid>
            <date>2013-03-11 01:29:34 -0700</date>
            <delta_ts>2013-03-11 18:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110436-20130311172534.patch</filename>
            <type>text/plain</type>
            <size>52876</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFlNWRlMzBjZTAxZmUy
MjU4ZThhMjU3YTVjMGNmNDJhYjU5NzBkMC4uM2Y0YTE1OWFiYmNlMzkyNjAzNzM3MGU5ODRmNmQy
MjE5M2UwMmNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMy0xMCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUgYSBzdXBlcmNsYXNz
IG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2Vw
dCBvZiBjdXN0b20gZWxlbWVudHMuCisgICAgICAgIFdpdGggdGhlIHR5cGUgZXh0ZW5zaW9uLCBl
YWNoIGN1c3RvbSBlbGVtZW50cyBhcmUgYWJsZSB0byBpbmhlcml0CisgICAgICAgIGZyb20gbm90
IG9ubHkgSFRNTEVsZW1lbnQsIGJ1dCBhbHNvIGFueSBIVE1MIGVsZW1lbnQuIFRvIG1ha2UgaXQg
d29yaywKKyAgICAgICAgdGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcGx1bWJpbmcuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICA9IERhdGEg
c3RydWN0dXJlOgorCisgICAgICAgIC0gTGV0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBvYmpl
Y3RzIGJlaW5nIGtleWVkIGJ5IHBhaXIgb2YgKGVsZW1lbnQKKyAgICAgICAgICBuYW1lLCBsb2Nh
bCBuYW1lKSBhcyB0aGUgc3RhbmRhcmQgcmVxdXJpZXMsIGluc3RlYWQgb2YganVzdCB1c2luZwor
ICAgICAgICAgIHNpbmdsZSBuYW1lLiBTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDb25zdHJ1
Y3Rvck1hcCBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKCkuCisKKyAgICAgICAgLSBD
cmVhdGVzIG1hcHBpbmcgZnJvbSBXcmFwcGVyVHlwZUluZm8gdG8gZWxlbWVudCBuYW1lLiAgVGhp
cyBtYXAKKyAgICAgICAgICBjYW4gYmUgbG9va2VkLXVwIGJ5IGdlbmVyYXRlZCBmdW5jdGlvbnMg
bGlrZQorICAgICAgICAgIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKCkuICBXaXRoIHRoaXMgdGFi
bGUsIFdlYktpdCBjYW4gZGV0ZXJtaW5lCisgICAgICAgICAgdGhlIGN1c3RvbSBlbGVtZW50IGxv
Y2FsIG5hbWUgb2YgZ2l2ZW4gcHJvdG90eXBlIG9iamVjdC4gU2VlICBtYWtlX25hbWVzLnBsLgor
ICAgICAgICAgIE5vdGUgdGhhdCBWOCBwcm90b3R5cGUgb2JqZWN0IGtub3dzIGFzc29jaWF0ZWQg
V3JhcHBlclR5cGVJbmZvLiBTZWUgcjE0NDg2NS4KKworICAgICAgICA9IEhvb2tpbmcgdXAgZWxl
bWVudCBsaWZlY3lsZToKKworICAgICAgICAtIENyZWF0ZSBhcHByb3ByaWF0ZSBDKysgaW5zdGFu
Y2UgZm9yIGVhY2ggY3VzdG9tIGVsZW1lbnQuICBCZWZvcmUKKyAgICAgICAgICB0aGlzIGNoYW5n
ZSwgdGhlIEMrKyBiYWNrZW5kIG9mIGN1c3RvbSBlbGVtZW50cyB3ZXJlIGFsd2FzeQorICAgICAg
ICAgIEhUTUxVbmtub3duRWxlbWVudHMgb3IgSFRNTEVsZW1lbnQuICBTZWUKKyAgICAgICAgICBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBhbmQgRWxlbWVudEZhY3Rv
cmllcyBpbgorICAgICAgICAgIG1ha2VfbmFtZXMucGwuCisKKyAgICAgICAgLSBIb29rcyB1cCBl
bGVtZW50IGNvbnN0cnVjdGlvbiBhbmQgZWxlbWVudCB3cmFwcGVyIGNyZWF0aW9uIGZvcgorICAg
ICAgICAgIGN1c3RvbSBlbGVtZW50ICJiZWZvcmUiIG5vbi1jdXN0b20gY2FzZSBpbnN0ZWFkIG9m
ICJhZnRlciIKKyAgICAgICAgICB0aGF0LiBXZSBkbyB0aGlzIGJlY2F1c2UgY3VzdG9tIGVsZW1l
bnQgbmVlZHMgdG8KKyAgICAgICAgICBvdmVycmlkZSBub24tY3VzdG9tIGNhc2Ugd2hlbiBAaXMg
YXR0cmlidXRlIGlzIGdpdmVuIGZvcgorICAgICAgICAgIG90aGVyd2lzZS1ub24tY3VzdG9tIGVs
ZW1lbnRzIGxpa2UgPGRpdiBpcz14LWJhcj4uCisgICAgICAgICAgU2VlIG1ha2VfbmFtZXMucGwu
CisKKyAgICAgICAgLSBHaXZlcyBAaXMgYXR0cmlidXRlcyB0byBlbGVtZW50cyBpZiBuZWVkZWQu
IFNlZSBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoKSBjYWxsIHNpdGVzCisgICAgICAgICAg
bGlrZSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCgpLCBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudHRO
UygpIGFuZCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnR0KCkKKworICAg
ICAgICBUZXN0OiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNp
b25zLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0N1c3Rv
bUVsZW1lbnRIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1ZhbGlkUHJvdG90eXBl
Q2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQ
cm90b3R5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBl
cnM6OmZpbmRMb2NhbE5hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChDdXN0b21FbGVtZW50SGVscGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDdXN0
b21FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRl
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4Q3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpWOEN1c3RvbUVsZW1lbnQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21F
bGVtZW50Ojpjb25zdHJ1Y3Rvck9mKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlw
ZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV3JhcHBlclR5cGVUcmFpdHMp
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I6OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6bWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmVsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6bG9jYWxOYW1lKToKKyAgICAgICAgKiBkb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVJbmNsdWRlc0h5
cGhlbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmlzVmFsaWRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZv
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6
OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZWdpc3RyeSk6IE1vdmVkIGZyb20gRG9jdW1lbnQuY3BwIHRvIGJlIGlu
bGluZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vbWFrZV9u
YW1lcy5wbDoKKyAgICAgICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRX
cmFwcGVyRmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRl
ckZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBBZGRlZCBAaXMg
YXR0cmlidXRlCisKIDIwMTMtMDMtMDcgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUu
Y29tPgogCiAgICAgICAgIEN1c3RvbSBFbGVtZW50czogQ3VzdG9tRWxlbWVudCBjb25zdHJ1Y3Rv
ciBzaG91bGRuJ3Qgc2hhcmUgZnVuY3Rpb24gaW5zdGFuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZTM4YWY0ZDE1NjVk
ZDliZTVkZjRiZjUwN2YzZjI4ZjZkZmMwMTQzYy4uMTVlOTdhMDlhZjYxYmQ4MjA1YjgxNjQxODJh
ZDYxNmNmNzExM2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUxNSw2ICs1MTUsMTIgQEAgRU5ECiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5
cGVUcmFpdHM8JHtuYXRpdmVUeXBlfSA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5
cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJiR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbzsgfQorfTsK
KwogRU5ECiAKICAgICBteSAkY3VzdG9tV3JhcCA9ICEhKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0gb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCA1NDhhNjQ3YTE5ZTUy
YzMzODdlNjQ5NWJjZmI0ZjQ4ZGE1MmNmODRlLi5iNTI4ZTk2NGI3MWUxYTMzZTIwZDViNWY5ODBk
MDNkZDg5MjlhYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0
b21FbGVtZW50SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3Vz
dG9tRWxlbWVudEhlbHBlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIlY4SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlY4SFRN
TFBhcmFncmFwaEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTcGFuRWxlbWVudC5oIgogCkBA
IC02MywxNyArNjQsMTMgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aW5pdGlhbGl6ZUNv
bnN0cnVjdG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8gU2VlIEZJWE1FIG9uIHRoZSBjYWxsZXIgc2lkZSBjb21tZW50Lgotc3RhdGlj
IGJvb2wgaGFzTm9CdWlsdGluc0luUHJvdG90eXBlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRt
bFByb3RvdHlwZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQorc3RhdGljIGJvb2wgaGFz
VmFsaWRQcm90b3R5cGVDaGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlcXVpcmVkQXNjZW5k
YW50LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pCiB7CiAgICAgd2hpbGUgKCFjaGFpbi5J
c0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGNoYWluID09IGh0bWxQcm90b3R5cGUpCisgICAgICAg
IGlmIChjaGFpbiA9PSByZXF1aXJlZEFzY2VuZGFudCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoIWNoYWluLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAvLyBUaGUgaW50ZXJuYWwgZmllbGQgY291bnQgaW5kaWNhdGVzIHRoZSBv
YmplY3QgbWlnaHQgYmUgYSBuYXRpdmUgYmFja2VkLCBidWlsdC1pbiBvYmplY3QuCi0gICAgICAg
IGlmICh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNoYWluKS0+SW50ZXJuYWxGaWVsZENv
dW50KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNoYWluID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbiktPkdldFByb3RvdHlwZSgpOwogICAgIH0KIApA
QCAtOTAsMjAgKzg3LDE0IEBAIGJvb2wgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90
b3R5cGVQYXJhbWV0ZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwCiAgICAgaWYgKHByb3Rv
dHlwZU9iamVjdC0+SGFzT3duUHJvcGVydHkodjhTdHJpbmcoImNvbnN0cnVjdG9yIiwgc3RhdGUt
PmNvbnRleHQoKS0+R2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBW
OFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20o
c3RhdGUtPmNvbnRleHQoKSk7Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQzNgotICAgIC8vICAgZG9jdW1lbnQucmVnaXN0
ZXIoKSBzaG91bGQgYWxsb3cgYXJiaXRyYXJ5IEhUTUxFbGVtZW50IHN1YmNsYXNzc2VzLgotICAg
IC8vICAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIGN1c3RvbSBlbGVtZW50cyB3aGljaCBhcmUKLSAg
ICAvLyAgIC0gZGlyZWN0IHN1YmNsYXNzZXMgb2YgSFRNTEVsZW1lbnQgb3IKLSAgICAvLyAgIC0g
c3ViY2xhc3NlcyBvZiBvdGhlciBjdXN0b20gZWxlbWVudHMKLSAgICAvLworICAgIC8vIEZJWE1F
OiBub24tSFRNTCBzdWJjbGFzc2VzIHNob3VsZCBiZSBhbHNvIHN1cHBvcnRlZDogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTY5MwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaHRtbENvbnN0cnVjdG9yID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChw
ZXJDb250ZXh0RGF0YS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOEhUTUxFbGVtZW50OjppbmZvKSk7
CiAgICAgaWYgKGh0bWxDb25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGh0bWxDb25zdHJ1Y3Rvci0+R2V0KHY4U3RyaW5nKCJwcm90b3R5
cGUiLCBzdGF0ZS0+Y29udGV4dCgpLT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGh0bWxQcm90
b3R5cGUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFoYXNOb0J1
aWx0aW5zSW5Qcm90b3R5cGUoaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKKyAgICBp
ZiAoIWhhc1ZhbGlkUHJvdG90eXBlQ2hhaW4oaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTIwLDYg
KzExMSwzNCBAQCBib29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Nv
bnN0IFF1YWxpZmllZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKGNv
bnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCit7CisgICAgaWYgKHByb3RvdHlwZS52OFZhbHVl
KCkuSXNFbXB0eSgpIHx8ICFwcm90b3R5cGUudjhWYWx1ZSgpLT5Jc09iamVjdCgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHByb3RvdHlwZS52OFZhbHVlKCkpKTsKK30KKworV3JhcHBlclR5cGVJbmZvKiBD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjaGFpbikKK3sKKyAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmpl
Y3QoKSkgeworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbik7CisgICAgICAgIC8vIE9ubHkgcHJvdG90
eXBlIG9iamVjdHMgb2YgbmF0aXZlLWJhY2tlZCB0eXBlcyBoYXZlIHRoZSBleHRyYSBpbnRlcm5h
bCBmaWVsZCBzdG9yaW5nIFdyYXBwZXJUeXBlSW5mby4KKyAgICAgICAgaWYgKHY4UHJvdG90eXBl
SW50ZXJuYWxGaWVsZGNvdW50ID09IGNoYWluT2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSkK
KyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KGNo
YWluT2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4UHJvdG90eXBl
VHlwZUluZGV4KSk7CisgICAgICAgIGNoYWluID0gY2hhaW5PYmplY3QtPkdldFByb3RvdHlwZSgp
OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLyBUaGlzIGNhbiByZXR1cm4gbnVsbC4g
SW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgdGFrZSB0aGUgZWxlbWVudCBuYW1lIGFzIGl0cyBsb2Nh
bCBuYW1lLgorY29uc3QgUXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRM
b2NhbE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbikKK3sKKyAgICBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKGNoYWlu
KTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmaW5kSFRN
TFRhZ05hbWVPZlY4VHlwZSh0eXBlKTsKK30KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVs
ZW1lbnRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50
SGVscGVycy5oCmluZGV4IDA4ZDFiY2JjMTg5NTY5NWRkYWFiZGFkMGZiZjNmOGI5ZDMxYWJiYTUu
LmYyOTBmNTQ4ODBkMDk3NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaApAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
IAogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgUXVhbGlmaWVkTmFtZTsK
IGNsYXNzIFNjcmlwdFN0YXRlOwogCiBjbGFzcyBDdXN0b21FbGVtZW50SGVscGVycyB7CkBAIC00
Niw4ICs0NywxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUNvbnN0cnVj
dG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3JpcHRWYWx1ZSYg
cHJvdG90eXBlLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5
cGVQYXJhbWV0ZXIoY29uc3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRp
YyBib29sIGlzRmVhdHVyZUFsbG93ZWQoU2NyaXB0U3RhdGUqKTsKKyAgICBzdGF0aWMgY29uc3Qg
UXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBl
KTsKIAogICAgIHN0YXRpYyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOworICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
KiBmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOwogfTsKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcAppbmRleCBlNWIzNGJlYjc4MDZiNTJmMjJlNjQyN2Zi
ZGUxYmFiYzkzOTU4OGU5Li5mMGExNWRkODlkZTM4ZmIxY2UxZTZjOTdkZDAzMDE4MjJkZGQ4NDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAK
QEAgLTQyLDI5ICs0MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXcmFw
cGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZU9mKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFp
bikKLXsKLSAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkg
ewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbik7Ci0gICAgICAgIGlmICh2OFByb3RvdHlwZUludGVy
bmFsRmllbGRjb3VudCA9PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9i
amVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJ
bmRleCkpOwotICAgICAgICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3Rv
bUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFJlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwuZ2V0KCkpOwotICAgIGlmICghY29uc3RydWN0b3IpIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRv
VjgodG9IVE1MVW5rbm93bkVsZW1lbnQodG9IVE1MRWxlbWVudChpbXBsLmdldCgpKSksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHko
KSAmJiB3cmFwcGVyVmFsdWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIH0KKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBwcm90ZWN0ZWRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7CiAKICAgICAvLyBU
aGUgY29uc3RydWN0b3IgYW5kIHJlZ2lzdGVyZWQgbGlmZWN5Y2xlIGNhbGxiYWNrcyBzaG91bGQg
YmUgdmlzaWJsZSBvbmx5IGZyb20gbWFpbiB3b3JsZC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBGdW5j
dGlvblRlbXBsYXRlCkBAIC03NiwxMiArNTcsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLAog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0b3JWYWx1ZSA9IFdlYkNvcmU6OnRvVjgoY29uc3RydWN0b3IuZ2V0KCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KHByb3RlY3RlZENvbnN0cnVjdG9yLmdldCgpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmIChjb25zdHJ1Y3RvclZhbHVlLklzRW1w
dHkoKSB8fCAhY29uc3RydWN0b3JWYWx1ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0
cnVjdG9yV2FwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZh
bHVlKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInByb3RvdHlwZSIpKSk7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IGZp
bmRXcmFwcGVyVHlwZU9mKHByb3RvdHlwZSk7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5m
byA9IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kV3JhcHBlclR5cGUocHJvdG90eXBlKTsKICAg
ICBpZiAoIXR5cGVJbmZvKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCmluZGV4
IDcwMGQ4YjUxOTlhYjQyYjZkY2FmYjk4MDgxNDQ3NjZkYTk2NmQwMzYuLmY3Nzc3YzVkYTQyOWJh
MGZkZmI1Y2YwNmI5YWJhOTgwYmE0YzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFY4Q3VzdG9t
RWxlbWVudF9oCiAjZGVmaW5lIFY4Q3VzdG9tRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKQEAgLTQwLDQ1ICs0
MywzMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAog
Y2xhc3MgVjhDdXN0b21FbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gY29uc3RydWN0b3JPZihFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50Piwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1
c3RvbUVsZW1lbnQ6OnRvVjgoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVy
KGltcGwsIGlzb2xhdGUpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB3cmFwcGVyOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
ICAgICBBU1NFUlQoaW1wbCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihp
bXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OmNy
ZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4g
VjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29u
c3RydWN0b3IsIGlzb2xhdGUpOwogfQogCi0jZWxzZSAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotCi1jbGFzcyBWOEN1c3RvbUVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAw
KTsKLX07Ci0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEhUTUxDdXN0b21FbGVtZW50
Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSBQYXNzUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gVjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVs
ZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHdyYXAodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSog
cmVnaXN0cnkgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICByZXR1
cm4gcmVnaXN0cnktPmZpbmRGb3IoZWxlbWVudCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhm
Nzk1MGFhMzU2Li45NWNlNzdhZjE1MDljOWRkMWQxNGUxOTBlMjE3NTQwYjk5ZDU3Y2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMTc4LDYg
KzE3OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdyYXBwZXJDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9OwogICAgICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbGVt
ZW50VHlwZT4KKyAgICBjbGFzcyBXcmFwcGVyVHlwZVRyYWl0cyB7CisgICAgICAgIC8vIHNwZWNp
YWxpemVkIGNsYXNzZXMgaGF2ZSB0aGllciBvd24gZnVuY3Rpb25zLCB3aGljaCBhcmUgZ2VuZXJh
dGVkIGJ5IGJpbmRpbmcgZ2VuZXJhdG9yLgorICAgIH07CiB9CiAKICNlbmRpZiAvLyBXcmFwcGVy
VHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAKaW5k
ZXggOGVkNzliODVlMDY4NWJlMTA0MDljNzVjNTNhNTAyMzhlZTgyZmM2OS4uNTVlMzhjZTk5NWY5
M2ZmZTZhNTJkMmVjZWY0ZGVmMDk2NGY5NTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3JDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25z
dCB2CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBpbXBsLT5jcmVhdGVFbGVtZW50KCk7
CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICBy
ZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp0b1Y4KGVsZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKGVs
ZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBjOTc1ZDZjNTMyMmY0NWYyNjVhYjJkN2I3YmM5
NTMyMTRjZTEwMTY4Li5hYThkYTM1NGZiNmYxNzdmY2E0ZTQzYTk1YmZjNTdjNDg0MDZkMzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcApA
QCAtMzcsMjEgKzM3LDI1IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90
b3R5cGUpCitQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCiB7Ci0gICAgUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5ldyBDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IoZG9jdW1lbnQsIG5hbWUpKTsKKyAgICBBU1NFUlQoQ3VzdG9tRWxl
bWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIocHJvdG90eXBlLCBzdGF0ZSkp
OworICAgIEFTU0VSVChsb2NhbE5hbWUgPT0gZWxlbWVudE5hbWUgfHwgbG9jYWxOYW1lID09ICpD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGUpKTsKKyAgICBSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGVkID0gYWRvcHRSZWYobmV3IEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcihkb2N1bWVudCwgZWxlbWVudE5hbWUsIGxvY2FsTmFtZSkpOwog
ICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBw
ZXIoY3JlYXRlZC5nZXQoKSwgcHJvdG90eXBlLCBzdGF0ZSkpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjcmVhdGVkLnJlbGVhc2UoKTsKIH0KIAotQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQorQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBl
bGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQpCi0gICAgLCBtX25hbWUobmFtZSkKKyAgICAs
IG1fZWxlbWVudE5hbWUoZWxlbWVudE5hbWUpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUp
CiB7CiB9CiAKQEAgLTYzLDcgKzY3LDE2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRl
KG1fbmFtZSwgZG9jdW1lbnQoKSk7CisgICAgaWYgKG1fbG9jYWxOYW1lICE9IG1fZWxlbWVudE5h
bWUpCisgICAgICAgIHJldHVybiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQo
KS0+Y3JlYXRlRWxlbWVudChtX2xvY2FsTmFtZSwgZG9jdW1lbnQoKSksIG1fZWxlbWVudE5hbWUu
bG9jYWxOYW1lKCkpOworICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fZWxlbWVudE5h
bWUsIGRvY3VtZW50KCkpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVuZGVk
Q3VzdG9tRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIXR5cGVFeHRlbnNpb24uaXNFbXB0eSgp
KQorICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIsIHR5cGVF
eHRlbnNpb24pOworICAgIHJldHVybiBlbGVtZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXggODQ0ZTBlOGIzZDk5ZjIyOWZj
YzJmMjMzNGQ0MDM1MjU0YjU2NDA4My4uNWY0Y2YzN2Q2MjdhMGU4Y2MzNjk2NjFmOTQyNjI2MzQy
ZjUyYjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaApAQCAtNDgsMjEgKzQ4LDI1IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBTY3JpcHRTdGF0
ZTsKIGNsYXNzIFNjcmlwdFZhbHVlOwogCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVu
ZGVkQ3VzdG9tRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGVFeHRlbnNpb24pOworCiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IgOiBwdWJs
aWMgUmVmQ291bnRlZDxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+ICwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIERvY3VtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5h
bWUsIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICB2aXJ0dWFsIH5DdXN0b21FbGVtZW50Q29u
c3RydWN0b3IoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQotICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dE5hbWU7IH0KKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2xvY2FsTmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KCkgY29uc3Q7Ci0gICAgCisKIHByaXZhdGU6Ci0gICAgQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBtX25h
bWU7CisgICAgUXVhbGlmaWVkTmFtZSBtX2VsZW1lbnROYW1lOworICAgIFF1YWxpZmllZE5hbWUg
bV9sb2NhbE5hbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuY3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2QzYjNhN2E2
ZmEuLmYwN2JkZGY0OWY0Yzc0MzQ1YmJmYzk0ZDQ5ZDRhMTY4N2IzYmQ5YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAK
QEAgLTYyLDE4ICs2MywxNSBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50
UmVnaXN0cnkoKQogewogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCitz
dGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKIHsKLSAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBzZWxmLT5maW5kKGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgIHNp
emVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOworICAgIHJldHVybiAoaHlwaGVu
UG9zaXRpb24gIT0gbm90Rm91bmQpOwogfQogCiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
aXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIHNpemVfdCBoeXBo
ZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9PSBu
b3RGb3VuZCkKKyAgICBpZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3RyaW5n
PiwgcmVzZXJ2ZWROYW1lcywgKCkpOwpAQCAtMTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRyPEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVs
ZW1lbnQoU2NyaQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIGlmIChm
aW5kKG5ld05hbWUpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQogICAgIFNjcmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwogICAg
IGlmICghb3B0aW9ucy5nZXQoInByb3RvdHlwZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAtMTMy
LDMzICsxMjUsNzEgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1fbmFt
ZXMuY29udGFpbnMobmV3TmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbG9j
YWxOYW1lRm91bmQgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5
cGVWYWx1ZSk7CisgICAgUXVhbGlmaWVkTmFtZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFtZUZv
dW5kID8gKmxvY2FsTmFtZUZvdW5kIDogbmV3TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1lLCBs
b2NhbE5hbWVUb1VzZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQogICAgIAotICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24gY291
bGQgaGFwcGVuIGluIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMgdGhl
IGRvY3VtZW50LgorICAgIC8vIEEgc2NyaXB0IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4gaXNW
YWxpZFByb3RvdHlwZVBhcmFtZXRlcigpLCB3aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAgICAg
aWYgKCFkb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUs
IGRvY3VtZW50KCksIG5ld05hbWUsIHByb3RvdHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHN0YXRlLCBkb2N1bWVudCgpLCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwgcHJv
dG90eXBlVmFsdWUpOwogICAgIGlmICghY29uc3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAgICBt
X2NvbnN0cnVjdG9ycy5hZGQoY29uc3RydWN0b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVjdG9y
KTsKKyAgICBtX2NvbnN0cnVjdG9ycy5hZGQoc3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3ItPmVs
ZW1lbnROYW1lKCksIGNvbnN0cnVjdG9yLT5sb2NhbE5hbWUoKSksIGNvbnN0cnVjdG9yKTsKKyAg
ICBtX25hbWVzLmFkZChjb25zdHJ1Y3Rvci0+ZWxlbWVudE5hbWUoKSk7CisKICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBD
dXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxl
bWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKKworICAgIC8vIE1vc3QgZWxl
bWVudHMgY2FuIGJlIHJlamVjdGVkIHRoaXMgcXVpY2sgc2NyZWVuaW5nLgorICAgIGlmICghbmFt
ZUluY2x1ZGVzSHlwaGVuKGVsZW1lbnQtPnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJp
YnV0ZShIVE1MTmFtZXM6OmlzQXR0cikpCisgICAgICAgIHJldHVybiAwOworCisgICAgUXVhbGlm
aWVkTmFtZSBpZFZhbHVlKG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVz
Ojppc0F0dHIpLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICByZXR1cm4gZmlu
ZChpZFZhbHVlLCBlbGVtZW50LT50YWdRTmFtZSgpKTsKK30KKworUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZChjb25zdCBRdWFs
aWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBj
b25zdAogewotICAgIENvbnN0cnVjdG9yTWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IG1fY29u
c3RydWN0b3JzLmZpbmQobmFtZS5pbXBsKCkpOwotICAgIHJldHVybiAoZm91bmQgIT0gbV9jb25z
dHJ1Y3RvcnMuZW5kKCkpID8gZm91bmQtPnZhbHVlIDogMDsKKyAgICBDb25zdHJ1Y3Rvck1hcDo6
Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5lbmQoKTsKKyAgICBpZiAoIWVs
ZW1lbnROYW1lLmxvY2FsTmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgZm91bmQgPSBtX2NvbnN0
cnVjdG9ycy5maW5kKHN0ZDo6bWFrZV9wYWlyKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKTsKKyAg
ICBpZiAoZm91bmQgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIGZvdW5kID0gbV9j
b25zdHJ1Y3RvcnMuZmluZChzdGQ6Om1ha2VfcGFpcihsb2NhbE5hbWUsIGxvY2FsTmFtZSkpOwor
ICAgIGlmIChmb3VuZCA9PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGZvdW5kLT52YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVh
dGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yPiBmb3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAgIHJldHVybiBmb3VuZC0+
Y3JlYXRlRWxlbWVudCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lID0g
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgdHlwZUV4dGVuc2lvbiwgbG9jYWxOYW1lLm5hbWVzcGFj
ZVVSSSgpKTsKKyAgICBpZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZm91bmQg
PSBmaW5kKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBjcmVhdGVkID0gZm91bmQtPmNyZWF0ZUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50
TmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkgJiYgbG9jYWxOYW1lICE9IGVsZW1lbnROYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudChjcmVhdGVkLCB0
eXBlRXh0ZW5zaW9uKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZWQucmVsZWFzZSgpOworICAgIH0K
KwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgKaW5kZXggMjA4MmNkNzYyMmNmNjJlYWJlMTM2ZDZhZmIyN2E0ZGFhNjJlNzI3YS4u
MTAyYWEzZGUzOGMyMTE2OGUwYzdiNzBjNjUyOGEyYTFhOTFkZTRlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTU5LDE4ICs2MCwyMCBAQCBwdWJsaWM6CiAgICAgfkN1c3RvbUVsZW1l
bnRSZWdpc3RyeSgpOwogCiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBmaW5kRm9yKEVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFt
ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0OworCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yT2YoRWxlbWVudCopOwotICAgIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIFJlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+ID5Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8c3RkOjpwYWlyPFF1YWxpZmllZE5hbWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiA+IENvbnN0cnVjdG9yTWFwOworICAgIHR5cGVkZWYgSGFz
aFNldDxRdWFsaWZpZWROYW1lPiBOYW1lU2V0OwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25z
dHJ1Y3RvcnM7CisgICAgTmFtZVNldCBtX25hbWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjZmMWNkYmRkODE4OTMyOWQ4MGI0MTNk
NDllYzc5Njk2MjA3NjQwZi4uNGE0OWQ0MmU2ZTg5YTQ3YzQyMjkxYmNjZWE2Y2E3OWI4ZGYyNzMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04MzMsNiArODMzLDQxIEBAIFBhc3NSZWZQ
dHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25DCiB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIWlzVmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGlmIChtX3JlZ2lzdHJ5KSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZWQgPSBtX3JlZ2lzdHJ5LT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpLCB0eXBlRXh0ZW5zaW9uKSkKKyAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVkOworICAgIH0KKworICAgIHJldHVybiBtYXJrQXNFeHRlbmRlZEN1
c3RvbUVsZW1lbnQoY3JlYXRlRWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7
IC8vICBGSVhNRTogdGFrZSBjYXJlIG9mIEBpcworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERv
Y3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0
ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5h
bWU7CisgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBs
b2NhbE5hbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBRdWFsaWZpZWROYW1lIHFO
YW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOworICAgIGlmICghaGFzVmFsaWRO
YW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobV9yZWdpc3RyeSkgeworICAg
ICAgICBpZiAoUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gbV9yZWdpc3RyeS0+Y3JlYXRl
RWxlbWVudChxTmFtZSwgdHlwZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRl
ZDsKKyAgICB9CisKKyAgICByZXR1cm4gbWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KGNyZWF0
ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lv
bik7Cit9CisKIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBEb2N1bWVudDo6
cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gcmVnaXN0ZXJF
bGVtZW50KHN0YXRlLCBuYW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsKQEAgLTg0OSwxMSArODg0LDYg
QEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3Rl
ckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3QKICAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVm
KG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnkodGhpcykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5
LT5yZWdpc3RlckVsZW1lbnQoc3RhdGUsIG5hbWUsIG9wdGlvbnMsIGVjKTsKIH0KLQotUGFzc1Jl
ZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IERvY3VtZW50OjpyZWdpc3RyeSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcmVnaXN0cnk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVN
RU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFlZjAzMzg1MDM3ZTgzMGI4
MDVhZDgwNDBiY2M2OGEzMDc5ZmEwYmYuLmE0MDNkYWEzNWE2OGUyMjY0OWU4OGJmMWQ4ODdlMzli
ODkxMmYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTQ2LDkgKzExNDYsMTEgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0
ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6
U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeT4gcmVnaXN0cnkoKSBjb25zdDsKKyAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJl
Z2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNj
YWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAppbmRleCAwZTA2ZmM3ZjJkODE5MTZmODUyNTUwMDhiMjc5YmNjNTVjZDNjMDhlLi43ZTI3
ODhkZWIwZWNjNGVmMmY2N2YwYTY5ODQ3Mzk1MDZmZjFhODFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwKQEAgLTM1OSw2ICszNTksOSBAQAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVN
RU5UUykgJiYgRU5BQkxFX0NVU1RPTV9FTEVNRU5UUwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
Y3VzdG9tRE9NRWxlbWVudHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50
ZWRBcz1yZWdpc3RlckVsZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlXQogICAgIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09w
dGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIFtS
ZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxO
YW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24p
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVz
cGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKaW5kZXggMDQzYTM4MjQwOGNjNDE3MDE2Y2Y0MDJmNjQ3MjE0OWZiOTVjY2Q5Ni4u
YjkxMDNlNTRmZTE3N2ZmM2MxNTg4YzIxM2QwYTMxOTdmZTM4ZjAwZiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwKQEAgLTgyMyw2ICs4MjMsMTEgQEAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
IAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjZW5kaWYK
KwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFZJREVPKQogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg5Niw2ICs5MDEsMTYg
QEAgRU5ECiB9CiAKIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQor
ICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnkoKS0+
ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNvbnN0cnVjdG9yLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgICAgICBBU1NF
UlQoZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50PihlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAg
IGlmICghZ0Z1bmN0aW9uTWFwKQogICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwogICAgIGlm
IChDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUu
bG9jYWxOYW1lKCkuaW1wbCgpKSkgewpAQCAtOTEyLDExICs5MjcsNyBAQCBpZiAoJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKIHByaW50IEYgPDxFTkQKICAgICB9CiAKLUVORAot
OwotcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9
OjpjcmVhdGUocU5hbWUsIGRvY3VtZW50KTtcbiI7Ci0KLXByaW50IEYgPDxFTkQKKyAgICByZXR1
cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1
bWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTExNzIsOSArMTE4MywxMiBA
QCBFTkQKIDsKICAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAg
ICAgICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1
ZGUgIlY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpCisjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2lu
Y2x1ZGUgPHY4Lmg+CiBFTkQKIDsKQEAgLTEyNDQsNiArMTI1OCwxOSBAQCBFTkQKIAogICAgIHBy
aW50IEYgPDxFTkQKICAgICB9CitFTkQKKzsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBl
cSAiVjgiKSB7CisgICAgICAgIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQorICAgIGlmIChQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3IgPSBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAg
IHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBj
b25zdHJ1Y3RvciwgaXNvbGF0ZSk7CisjZW5kaWYKK0VORAorOworICAgIH0KKworICAgIHByaW50
IEYgPDxFTkQKICAgICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJG
dW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFt
ZSgpLmltcGwoKSk7CiAgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3
NSwxMSArMTMwMiw2IEBAIEVORAogICAgIHJldHVybiBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBw
ZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwotICAgICAgICB9
IGVsc2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVORAotOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAogICAgIHJldHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFs
bGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
QEAgLTEyODksMTIgKzEzMTEsNDggQEAgRU5ECiAgICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0K
K0VORAorOworCisgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAg
ICBwcmludCBGIDw8RU5ECisKK2NvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlm
aWVkTmFtZSo+IFR5cGVOYW1lTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVN
YXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CitFTkQKKzsKKworICAgICAg
ICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAg
IGlmICghdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7CisgICAgICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25kaXRpb25hbH07Cisg
ICAgICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBz
cGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOworICAgICAgICAgICAgICAgICAgICBwcmlu
dCBGICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7CisgICAgICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFt
ZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgICAgbWFw
LnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3Rh
Z05hbWV9VGFnKTtcbiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludCBGIDw8RU5ECisgICAg
fQorCisgICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7CiB9CiAKIEVORAogOworICAgIH0KIAorICAg
IHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7
Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwpAQCAtMTM0NSw2ICsxNDAzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ7CiAKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVk
ZjJiYjk0ZWVhMzQ4MzdlZWM1Li42YzY3NTdkMTRhNzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2My
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2
LDYgKzEyNiw3IEBAIGh0dHBfZXF1aXYKIGlkCiBpbmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQor
aXMKIGlzbWFwCiBpdGVtaWQKIGl0ZW1wcm9wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzVhZTg5MmJiY2E3YWEyNTE1MThm
ZDg5MzhhYTIxNzEzZjkwYjNjZS4uNGYxMTM1Y2I1Mzk3ODQxZGVlN2Y4M2Y5MGEyZTgyYjFjMzlm
NWQ4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTEwICBIYWppbWUgTW9ycml0YSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXSBBbnkgSFRN
TEVsZW1lbnQgc3ViY2xhc3Mgc2hvdWxkIGJlY29tZSBhIHN1cGVyY2xhc3Mgb2YgY3VzdG9tIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25z
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0wNyAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgQ3VzdG9tIEVsZW1l
bnRzOiBDdXN0b21FbGVtZW50IGNvbnN0cnVjdG9yIHNob3VsZG4ndCBzaGFyZSBmdW5jdGlvbiBp
bnN0YW5jZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggZmZiNTI4M2RhYzJh
N2RlZmI2MWM1NzdlOGE0ZjFiOWNhZWI2ZjJjNy4uMWM0OTIyZjMwMDdkYzZkNDkxNWRlNWJlZWM3
ODVkOTQyODgyYmQ5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2Rv
Y3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0xNCw3
ICsxNCw2IEBAIFBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ1gtRk9PJywgY3JlYXRlUmVnaXN0ZXJQ
YXJhbXRlcnMoKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yCiBQQVNTIGRvY3VtZW50LnJlZ2lzdGVy
KCd4LWJhZC1hJywgeyBwcm90b3R5cGU6IEhUTUxFbGVtZW50LnByb3RvdHlwZSB9KSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFT
UyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYicsIHsgcHJvdG90eXBlOiB7fSB9KSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFT
UyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRl
KERvY3VtZW50LnByb3RvdHlwZSkgfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3Rh
dGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFk
LWQnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJvdG90eXBl
KSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0
aW9uIDExLgogUEFTUyBmb29Db25zdHJ1Y3RvcigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLi4K
IFBBU1MgY3JlYXRlZEZvby5fX3Byb3RvX18gaXMgZm9vQ29uc3RydWN0b3IucHJvdG90eXBlCiBQ
QVNTIGNyZWF0ZWRGb28uY29uc3RydWN0b3IgaXMgZm9vQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0
bWwKaW5kZXggZjViNzY5OWRmODNmNTBiYWZmOTU1MjI4M2YzOGVhM2Y5Y2E0ZDU3MC4uYjU4OGNm
ZTlmN2Y5MzE0MGYxN2JjYTJlNzk4MGRjMTM5NzZmMDYzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKQEAg
LTM5LDggKzM5LDYgQEAgc2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1hJywg
eyBwcm90b3R5cGU6IEhUTUxFbGVtZW50LnByb3RvdHlwZSB9KSIKIHNob3VsZFRocm93KCJkb2N1
bWVudC5yZWdpc3RlcigneC1iYWQtYicsIHsgcHJvdG90eXBlOiB7fSB9KSIsICInRXJyb3I6IElu
dmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwogLy8gQmFkIHByb3RvdHlwZTog
d3JvbmcgX19wcm90b19fCiBzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWMn
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5cGUpIH0pIiwgIidF
cnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEnIik7Ci0vLyBCdWcgMTEw
NDM2IC0gRWxlbWVudHMgb3RoZXIgdGhhbiBIVE1MRW1lbWVudCBzaG91bGQgYmUgYWxsb3dlZCBh
cyBhIHN1cGVyY2xhc3MuCi1zaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWQn
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJvdG90eXBlKSB9
KSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwogLy8g
Q2FsbCBhcyBmdW5jdGlvbgogc2hvdWxkVGhyb3coImZvb0NvbnN0cnVjdG9yKCkiLCAiJ1R5cGVF
cnJvcjogRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uJyIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVu
dC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTNhYTBiMzNhMDhhZDNhYmJkNDU3MzU5MTJkNGY5YzhlMWU4OTMzOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1y
ZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1Rl
c3RpbmcgZG9jdW1lbnQucmVnaXN0ZXIoKSB0eXBlIGV4dGVuc2lvbiBiZWhhdmlvdXJzIHRocm91
Z2ggY3JlYXRlRWxlbWVudCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkb2N1bWVudC5yZWdpc3RlcigneC1mb28nLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShI
VE1MRGl2RWxlbWVudC5wcm90b3R5cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxp
ZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGZvb05ld2VkLm91dGVySFRNTCBp
cyAnPHgtZm9vPjwveC1mb28+JworUEFTUyBmb29OZXdlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVj
dG9yICYmIGZvb05ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBmb29O
ZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBiYXJOZXdl
ZC5vdXRlckhUTUwgaXMgJzxpbnB1dCBpcz0ieC1iYXIiPicKK1BBU1MgYmFyTmV3ZWQgaW5zdGFu
Y2VvZiBiYXJDb25zdHJ1Y3RvciAmJiBiYXJOZXdlZCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1l
bnQgaXMgdHJ1ZQorUEFTUyBpc0Zvcm1Db250cm9sKGJhck5ld2VkKSBpcyB0cnVlCitQQVNTIGJh
ek5ld2VkLm91dGVySFRNTCBpcyAnPHgtYmF6PjwveC1iYXo+JworUEFTUyBiYXpOZXdlZCBpbnN0
YW5jZW9mIGJhekNvbnN0cnVjdG9yICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQg
aXMgdHJ1ZQorUEFTUyBiYXpOZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBm
YWxzZQorUEFTUyBxdXhOZXdlZCBpbnN0YW5jZW9mIHF1eENvbnN0cnVjdG9yICYmIHF1eE5ld2Vk
IGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5w
dXRFbGVtZW50IGlzIHRydWUKK1BBU1MgcXV4TmV3ZWQub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9
IngtcXV4Ij4nCitQQVNTIGlzRm9ybUNvbnRyb2wocXV4TmV3ZWQpIGlzIHRydWUKK1BBU1MgZm9v
Q3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZCBp
bnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFyQ3JlYXRlZC5vdXRlckhU
TUwgaXMgJzx4LWJhcj48L3gtYmFyPicKK1BBU1MgYmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNv
bnN0cnVjdG9yIGlzIGZhbHNlCitQQVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93
bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBiYXpDcmVhdGVkLm91dGVySFRNTCBpcyAnPHgtYmF6Pjwv
eC1iYXo+JworUEFTUyBiYXpDcmVhdGVkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3IgaXMgdHJ1
ZQorUEFTUyBiYXpDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIGZhbHNl
CitQQVNTIHF1eENyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1xdXg+PC94LXF1eD4nCitQQVNTIHF1
eENyZWF0ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBxdXhDcmVh
dGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZGl2Rm9vQ3Jl
YXRlZC5vdXRlckhUTUwgaXMgJzxkaXYgaXM9IngtZm9vIj48L2Rpdj4nCitQQVNTIGRpdkZvb0Ny
ZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZGb29DcmVh
dGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBpbnB1dEJhckNyZWF0
ZWQub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGlucHV0QmFyQ3JlYXRl
ZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgaW5wdXRCYXJDcmVhdGVk
IGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIGZhbHNlCitQQVNTIGlzRm9ybUNvbnRy
b2woaW5wdXRCYXJDcmVhdGVkKSBpcyB0cnVlCitQQVNTIGRpdkJhckNyZWF0ZWQub3V0ZXJIVE1M
IGlzICc8ZGl2IGlzPSJ4LWJhciI+PC9kaXY+JworUEFTUyBkaXZCYXJDcmVhdGVkIGluc3RhbmNl
b2YgYmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9m
IEhUTUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1MgZm9vQmFyQ3JlYXRlZC5vdXRlckhUTUwgaXMg
Jzx4LWZvbyBpcz0ieC1iYXIiPjwveC1mb28+JworUEFTUyBmb29CYXJDcmVhdGVkIGluc3RhbmNl
b2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBiYXJGb29DcmVhdGVkLm91dGVySFRNTCBp
cyAnPHgtYmFyIGlzPSJ4LWZvbyI+PC94LWJhcj4nCitQQVNTIGJhckZvb0NyZWF0ZWQgaW5zdGFu
Y2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkTnVsbC5vdXRl
ckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZE51bGwgaW5zdGFuY2Vv
ZiBmb29Db25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGZvb0NyZWF0ZWRFbXB0eS5vdXRlckhUTUwg
aXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZEVtcHR5IGluc3RhbmNlb2YgZm9v
Q29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdAaW52YWxp
ZCcsICd4LWJhcicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9y
OiBET00gRXhjZXB0aW9uIDUuCitQQVNTIGZvb0NyZWF0ZWROUy5vdXRlckhUTUwgaXMgJzx4LWZv
bz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ig
aXMgdHJ1ZQorUEFTUyBiYXJDcmVhdGVkTlMub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtYmFy
Ij4nCitQQVNTIGJhckNyZWF0ZWROUyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIHRydWUK
K1BBU1MgaXNGb3JtQ29udHJvbChiYXJDcmVhdGVkTlMpIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCdodHRwOi8vZXhhbXBsZS5jb20vMjAxMy9uby1zdWNoLW5hbWVzcGFj
ZScsICd4bWw6bGFuZycsICd4LWJhcicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNl
RXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGZvb1BhcnNlZCBpbnN0YW5jZW9mIGZvb0Nv
bnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0
b3IgaXMgdHJ1ZQorUEFTUyBpc0Zvcm1Db250cm9sKGJhclBhcnNlZCkgaXMgdHJ1ZQorUEFTUyBk
aXZGb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZG
b29QYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIG5hbWVkQmFy
UGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgbmFtZWRCYXJQ
YXJzZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBkaXZCYXJQ
YXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZCYXJQYXJz
ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5z
aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MzcwNjYyNmYwODA4NDIzNzFhN2Q4OGU1MDJlYzNiZDBi
ODE5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9j
dW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb250YWluZXIiPjwvZGl2PgorPGZvcm0gaWQ9InRlc3RGb3JtIj48L2Zvcm0+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RpbmcgZG9jdW1lbnQucmVnaXN0ZXIoKSB0eXBlIGV4dGVuc2lv
biBiZWhhdmlvdXJzIHRocm91Z2ggY3JlYXRlRWxlbWVudCgpLiIpOworCitmdW5jdGlvbiBpc0Zv
cm1Db250cm9sKGVsZW1lbnQpCit7CisgICAgdGVzdEZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudCk7
CisgICAgcmV0dXJuIGVsZW1lbnQuZm9ybSA9PSB0ZXN0Rm9ybTsKK30KKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQucmVnaXN0
ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKKworLy8K
Ky8vIEluaGVyaXRhbmNlIGhlcmUgaXMgc2hhcGVkIGxpa2UgdGhpczoKKy8vCisvLyBIVE1MRWxl
bWVudCA8LSBpbnB1dCA8LSB4LWJhciA8LSB4LXF1eAorLy8gICAgICAgICAgICAgPC0geC1mb28g
PC0geC1iYXoKKy8vCisKK2Zvb0NvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9v
JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlKSB9KTsK
K2JhckNvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFyJywgeyBwcm90b3R5cGU6
IE9iamVjdC5jcmVhdGUoSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGUpIH0pOworYmF6Q29uc3Ry
dWN0b3IgPSBkb2N1bWVudC5yZWdpc3RlcigneC1iYXonLCB7IHByb3RvdHlwZTogT2JqZWN0LmNy
ZWF0ZShmb29Db25zdHJ1Y3Rvci5wcm90b3R5cGUpIH0pOworcXV4Q29uc3RydWN0b3IgPSBkb2N1
bWVudC5yZWdpc3RlcigneC1xdXgnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShiYXJDb25z
dHJ1Y3Rvci5wcm90b3R5cGUpIH0pOworCisvLyBTYW1lIG5hbWUsIGRpZmZlcmVudCBsb2NhbCBu
YW1lCitzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6
IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJyb3I6IElu
dmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOworCisvLworLy8gR2VuZXJhdGVk
IGNvbnN0cnVjdG9ycworLy8KKworZm9vTmV3ZWQgPSBuZXcgZm9vQ29uc3RydWN0b3IoKTsKK2Zv
b091dGVySFRNTCA9ICInPHgtZm9vPjwveC1mb28+JyI7CitzaG91bGRCZSgiZm9vTmV3ZWQub3V0
ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vTmV3ZWQgaW5zdGFuY2Vv
ZiBmb29Db25zdHJ1Y3RvciAmJiBmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Iik7Citz
aG91bGRCZUZhbHNlKCJmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOwor
CitiYXJOZXdlZCA9IG5ldyBiYXJDb25zdHJ1Y3RvcigpOworYmFyT3V0ZXJIVE1MID0gIic8aW5w
dXQgaXM9XCJ4LWJhclwiPiciOworc2hvdWxkQmUoImJhck5ld2VkLm91dGVySFRNTCIsIGJhck91
dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhck5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0
b3IgJiYgYmFyTmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50Iik7CitzaG91bGRCZVRy
dWUoImlzRm9ybUNvbnRyb2woYmFyTmV3ZWQpIik7CisKK2Jhek5ld2VkID0gbmV3IGJhekNvbnN0
cnVjdG9yKCk7CitiYXpPdXRlckhUTUwgPSAiJzx4LWJhej48L3gtYmF6PiciOworc2hvdWxkQmUo
ImJhek5ld2VkLm91dGVySFRNTCIsIGJhek91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhek5l
d2VkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3IgJiYgYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1M
RWxlbWVudCIpOworc2hvdWxkQmVGYWxzZSgiYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93
bkVsZW1lbnQiKTsKKworcXV4TmV3ZWQgPSBuZXcgcXV4Q29uc3RydWN0b3IoKTsKK3F1eE91dGVy
SFRNTCA9ICInPGlucHV0IGlzPVwieC1xdXhcIj4nIjsKK3Nob3VsZEJlVHJ1ZSgicXV4TmV3ZWQg
aW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOworc2hvdWxk
QmUoInF1eE5ld2VkLm91dGVySFRNTCIsIHF1eE91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImlz
Rm9ybUNvbnRyb2wocXV4TmV3ZWQpIik7CisKKy8vCisvLyBTaW5nbGUgcGFyYW1ldGVyIGNyZWF0
ZUVsZW1lbnQoKQorLy8KKworZm9vQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngt
Zm9vIik7CitzaG91bGRCZSgiZm9vQ3JlYXRlZC5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOwor
c2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKwor
YmFyQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtYmFyIik7CitzaG91bGRCZSgi
YmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LWJhcj48L3gtYmFyPiciKTsKK3Nob3VsZEJlRmFs
c2UoImJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVl
KCJiYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2JhekNyZWF0
ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJheiIpOworc2hvdWxkQmUoImJhekNyZWF0
ZWQub3V0ZXJIVE1MIiwgIic8eC1iYXo+PC94LWJhej4nIik7CitzaG91bGRCZVRydWUoImJhekNy
ZWF0ZWQgaW5zdGFuY2VvZiBiYXpDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgiYmF6Q3Jl
YXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitxdXhDcmVhdGVkID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgieC1xdXgiKTsKK3Nob3VsZEJlKCJxdXhDcmVhdGVkLm91dGVy
SFRNTCIsICInPHgtcXV4PjwveC1xdXg+JyIpOworc2hvdWxkQmVGYWxzZSgicXV4Q3JlYXRlZCBp
bnN0YW5jZW9mIHF1eENvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoInF1eENyZWF0ZWQgaW5z
dGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1lbnQoKSB3
aXRoIHR5cGUgZXh0ZW5zaW9ucworLy8KKworZGl2Rm9vQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIsICJ4LWZvbyIpOworc2hvdWxkQmUoImRpdkZvb0NyZWF0ZWQub3V0ZXJI
VE1MIiwgIic8ZGl2IGlzPVwieC1mb29cIj48L2Rpdj4nIik7CitzaG91bGRCZUZhbHNlKCJkaXZG
b29DcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiZGl2
Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50Iik7CisKK2lucHV0QmFyQ3JlYXRl
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgIngtYmFyIik7CitzaG91bGRCZSgi
aW5wdXRCYXJDcmVhdGVkLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUo
ImlucHV0QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZUZh
bHNlKCJpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKK3No
b3VsZEJlVHJ1ZSgiaXNGb3JtQ29udHJvbChpbnB1dEJhckNyZWF0ZWQpIik7CisKK2RpdkJhckNy
ZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiLCAieC1iYXIiKTsKK3Nob3VsZEJl
KCJkaXZCYXJDcmVhdGVkLm91dGVySFRNTCIsICInPGRpdiBpcz1cIngtYmFyXCI+PC9kaXY+JyIp
Oworc2hvdWxkQmVGYWxzZSgiZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9y
Iik7CitzaG91bGRCZVRydWUoImRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVu
dCIpOworCitmb29CYXJDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iLCAi
eC1iYXIiKTsKK3Nob3VsZEJlKCJmb29CYXJDcmVhdGVkLm91dGVySFRNTCIsICInPHgtZm9vIGlz
PVwieC1iYXJcIj48L3gtZm9vPiciKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2JhckZvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ4LWJhciIsICJ4LWZvbyIpOworc2hvdWxkQmUoImJhckZvb0NyZWF0ZWQub3V0
ZXJIVE1MIiwgIic8eC1iYXIgaXM9XCJ4LWZvb1wiPjwveC1iYXI+JyIpOworc2hvdWxkQmVUcnVl
KCJiYXJGb29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2Zvb0Ny
ZWF0ZWROdWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iLCBudWxsKTsKK3Nob3Vs
ZEJlKCJmb29DcmVhdGVkTnVsbC5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVU
cnVlKCJmb29DcmVhdGVkTnVsbCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2Zvb0Ny
ZWF0ZWRFbXB0eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIiIpOworc2hvdWxk
QmUoImZvb0NyZWF0ZWRFbXB0eS5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVU
cnVlKCJmb29DcmVhdGVkRW1wdHkgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitzaG91
bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQGludmFsaWQnLCAneC1iYXInKSIsICIn
RXJyb3I6IEludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1JyIpOworCisvLwor
Ly8gY3JlYXRlRWxlbWVudE5TKCkgd2l0aCB0eXBlIGV4dGVuc2lvbnMKKy8vCisKK2Zvb0NyZWF0
ZWROUyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCIsICJ4LWZvbyIsIG51bGwpOworc2hvdWxkQmUoImZvb0NyZWF0ZWROUy5vdXRlckhUTUwi
LCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkTlMgaW5zdGFuY2VvZiBm
b29Db25zdHJ1Y3RvciIpOworCitiYXJDcmVhdGVkTlMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAiaW5wdXQiLCAieC1iYXIiKTsKK3No
b3VsZEJlKCJiYXJDcmVhdGVkTlMub3V0ZXJIVE1MIiwgYmFyT3V0ZXJIVE1MKTsKK3Nob3VsZEJl
VHJ1ZSgiYmFyQ3JlYXRlZE5TIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJl
VHJ1ZSgiaXNGb3JtQ29udHJvbChiYXJDcmVhdGVkTlMpIik7CisKK3Nob3VsZFRocm93KCJkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly9leGFtcGxlLmNvbS8yMDEzL25vLXN1Y2gtbmFt
ZXNwYWNlJywgJ3htbDpsYW5nJywgJ3gtYmFyJykiLCAiJ0Vycm9yOiBOYW1lc3BhY2VFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxNCciKTsKKworLy8gcGFyc2VyCitmdW5jdGlvbiBjcmVhdGVFbGVtZW50
RnJvbUhUTUwoaHRtbCkgeworICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgY29udGFpbmVyLmlubmVySFRNTCA9IGh0bWw7CisgICByZXR1cm4gY29u
dGFpbmVyLmZpcnN0Q2hpbGQ7Cit9CisKK2Zvb1BhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRN
TCgnPHgtZm9vPicpOworc2hvdWxkQmVUcnVlKCJmb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25z
dHJ1Y3RvciIpOworCitiYXJQYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzxpbnB1dCBp
cz14LWJhcj4nKQorc2hvdWxkQmVUcnVlKCJiYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1
Y3RvciIpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKGJhclBhcnNlZCkiKTsKKworZGl2
Rm9vUGFyc2VkID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKCc8ZGl2IGlzPXgtZm9vPicpCitzaG91
bGRCZUZhbHNlKCJkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworc2hv
dWxkQmVUcnVlKCJkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCitu
YW1lZEJhclBhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPHgtYmFyPicpCitzaG91bGRC
ZUZhbHNlKCJuYW1lZEJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91
bGRCZVRydWUoIm5hbWVkQmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7
CisKK2RpdkJhclBhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPGRpdiBpcz14LWJhcj4n
KQorc2hvdWxkQmVGYWxzZSgiZGl2QmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3Ii
KTsKK3Nob3VsZEJlVHJ1ZSgiZGl2QmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQi
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192615</attachid>
            <date>2013-03-11 18:27:05 -0700</date>
            <delta_ts>2013-03-14 19:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110436-20130312102304.patch</filename>
            <type>text/plain</type>
            <size>52916</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ2OGMxODEyZWU5NTll
ZDI5MjMxNzAzNjE5MmJlYjc4MDIwMDVhOC4uNjBiYTUxOTBhZDFmNTdjNTM2YzMzMzZiMDA1OGYx
ZjQ5NGY1ZjdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMy0xMCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUgYSBzdXBlcmNsYXNz
IG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2Vw
dCBvZiBjdXN0b20gZWxlbWVudHMuCisgICAgICAgIFdpdGggdGhlIHR5cGUgZXh0ZW5zaW9uLCBl
YWNoIGN1c3RvbSBlbGVtZW50cyBhcmUgYWJsZSB0byBpbmhlcml0CisgICAgICAgIGZyb20gbm90
IG9ubHkgSFRNTEVsZW1lbnQsIGJ1dCBhbHNvIGFueSBIVE1MIGVsZW1lbnQuIFRvIG1ha2UgaXQg
d29yaywKKyAgICAgICAgdGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcGx1bWJpbmcuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICA9IERhdGEg
c3RydWN0dXJlOgorCisgICAgICAgIC0gTGV0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBvYmpl
Y3RzIGJlaW5nIGtleWVkIGJ5IHBhaXIgb2YgKGVsZW1lbnQKKyAgICAgICAgICBuYW1lLCBsb2Nh
bCBuYW1lKSBhcyB0aGUgc3RhbmRhcmQgcmVxdXJpZXMsIGluc3RlYWQgb2YganVzdCB1c2luZwor
ICAgICAgICAgIHNpbmdsZSBuYW1lLiBTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDb25zdHJ1
Y3Rvck1hcCBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKCkuCisKKyAgICAgICAgLSBD
cmVhdGVzIG1hcHBpbmcgZnJvbSBXcmFwcGVyVHlwZUluZm8gdG8gZWxlbWVudCBuYW1lLiAgVGhp
cyBtYXAKKyAgICAgICAgICBjYW4gYmUgbG9va2VkLXVwIGJ5IGdlbmVyYXRlZCBmdW5jdGlvbnMg
bGlrZQorICAgICAgICAgIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKCkuICBXaXRoIHRoaXMgdGFi
bGUsIFdlYktpdCBjYW4gZGV0ZXJtaW5lCisgICAgICAgICAgdGhlIGN1c3RvbSBlbGVtZW50IGxv
Y2FsIG5hbWUgb2YgZ2l2ZW4gcHJvdG90eXBlIG9iamVjdC4gU2VlICBtYWtlX25hbWVzLnBsLgor
ICAgICAgICAgIE5vdGUgdGhhdCBWOCBwcm90b3R5cGUgb2JqZWN0IGtub3dzIGFzc29jaWF0ZWQg
V3JhcHBlclR5cGVJbmZvLiBTZWUgcjE0NDg2NS4KKworICAgICAgICA9IEhvb2tpbmcgdXAgZWxl
bWVudCBsaWZlY3lsZToKKworICAgICAgICAtIENyZWF0ZSBhcHByb3ByaWF0ZSBDKysgaW5zdGFu
Y2UgZm9yIGVhY2ggY3VzdG9tIGVsZW1lbnQuICBCZWZvcmUKKyAgICAgICAgICB0aGlzIGNoYW5n
ZSwgdGhlIEMrKyBiYWNrZW5kIG9mIGN1c3RvbSBlbGVtZW50cyB3ZXJlIGFsd2FzeQorICAgICAg
ICAgIEhUTUxVbmtub3duRWxlbWVudHMgb3IgSFRNTEVsZW1lbnQuICBTZWUKKyAgICAgICAgICBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBhbmQgRWxlbWVudEZhY3Rv
cmllcyBpbgorICAgICAgICAgIG1ha2VfbmFtZXMucGwuCisKKyAgICAgICAgLSBIb29rcyB1cCBl
bGVtZW50IGNvbnN0cnVjdGlvbiBhbmQgZWxlbWVudCB3cmFwcGVyIGNyZWF0aW9uIGZvcgorICAg
ICAgICAgIGN1c3RvbSBlbGVtZW50ICJiZWZvcmUiIG5vbi1jdXN0b20gY2FzZSBpbnN0ZWFkIG9m
ICJhZnRlciIKKyAgICAgICAgICB0aGF0LiBXZSBkbyB0aGlzIGJlY2F1c2UgY3VzdG9tIGVsZW1l
bnQgbmVlZHMgdG8KKyAgICAgICAgICBvdmVycmlkZSBub24tY3VzdG9tIGNhc2Ugd2hlbiBAaXMg
YXR0cmlidXRlIGlzIGdpdmVuIGZvcgorICAgICAgICAgIG90aGVyd2lzZS1ub24tY3VzdG9tIGVs
ZW1lbnRzIGxpa2UgPGRpdiBpcz14LWJhcj4uCisgICAgICAgICAgU2VlIG1ha2VfbmFtZXMucGwu
CisKKyAgICAgICAgLSBHaXZlcyBAaXMgYXR0cmlidXRlcyB0byBlbGVtZW50cyBpZiBuZWVkZWQu
IFNlZSBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoKSBjYWxsIHNpdGVzCisgICAgICAgICAg
bGlrZSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCgpLCBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudHRO
UygpIGFuZCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnR0KCkKKworICAg
ICAgICBUZXN0OiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNp
b25zLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0N1c3Rv
bUVsZW1lbnRIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1ZhbGlkUHJvdG90eXBl
Q2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQ
cm90b3R5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBl
cnM6OmZpbmRMb2NhbE5hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChDdXN0b21FbGVtZW50SGVscGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDdXN0
b21FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRl
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4Q3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpWOEN1c3RvbUVsZW1lbnQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21F
bGVtZW50Ojpjb25zdHJ1Y3Rvck9mKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlw
ZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV3JhcHBlclR5cGVUcmFpdHMp
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I6OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6bWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmVsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6bG9jYWxOYW1lKToKKyAgICAgICAgKiBkb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVJbmNsdWRlc0h5
cGhlbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmlzVmFsaWRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZv
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6
OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZWdpc3RyeSk6IE1vdmVkIGZyb20gRG9jdW1lbnQuY3BwIHRvIGJlIGlu
bGluZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vbWFrZV9u
YW1lcy5wbDoKKyAgICAgICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRX
cmFwcGVyRmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRl
ckZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBBZGRlZCBAaXMg
YXR0cmlidXRlCisKIDIwMTMtMDMtMTEgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUg
dG8gRGVmaW5pdGVseVByb2Nlc3NpbmdOZXdVc2VyR2VzdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBlMzhhZjRkMTU2
NWRkOWJlNWRmNGJmNTA3ZjNmMjhmNmRmYzAxNDNjLi4xNWU5N2EwOWFmNjFiZDgyMDViODE2NDE4
MmFkNjE2Y2Y3MTEzZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTE1LDYgKzUxNSwxMiBAQCBFTkQKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwogCit0ZW1wbGF0ZTw+CitjbGFzcyBXcmFwcGVy
VHlwZVRyYWl0czwke25hdGl2ZVR5cGV9ID4geworcHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVy
VHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmJHt2OEludGVyZmFjZU5hbWV9OjppbmZvOyB9Cit9
OworCiBFTkQKIAogICAgIG15ICRjdXN0b21XcmFwID0gISEoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVRvSlNPYmplY3QifSBvciAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21Ub0pTT2JqZWN0In0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCmluZGV4IDU0OGE2NDdhMTll
NTJjMzM4N2U2NDk1YmNmYjRmNDhkYTUyY2Y4NGUuLmI1YjZmZjM1MzM1YTdhOWRiYTI5MTIwYzJk
OWI3NmE0NThhMThhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1
c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9D
dXN0b21FbGVtZW50SGVscGVycy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiVjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiVjhI
VE1MUGFyYWdyYXBoRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFNwYW5FbGVtZW50LmgiCiAK
QEAgLTYzLDE3ICs2NCwxMyBAQCBib29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbml0aWFsaXpl
Q29uc3RydWN0b3JXcmFwcGVyKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcgogICAgIHJldHVybiB0
cnVlOwogfQogCi0vLyBTZWUgRklYTUUgb24gdGhlIGNhbGxlciBzaWRlIGNvbW1lbnQuCi1zdGF0
aWMgYm9vbCBoYXNOb0J1aWx0aW5zSW5Qcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
dG1sUHJvdG90eXBlLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pCitzdGF0aWMgYm9vbCBo
YXNWYWxpZFByb3RvdHlwZUNoYWluKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVxdWlyZWRBbmNl
c3Rvciwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQogewogICAgIHdoaWxlICghY2hhaW4u
SXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChjaGFpbiA9PSBodG1sUHJvdG90eXBlKQorICAgICAg
ICBpZiAoY2hhaW4gPT0gcmVxdWlyZWRBbmNlc3RvcikKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoIWNoYWluLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAvLyBUaGUgaW50ZXJuYWwgZmllbGQgY291bnQgaW5kaWNhdGVzIHRoZSBv
YmplY3QgbWlnaHQgYmUgYSBuYXRpdmUgYmFja2VkLCBidWlsdC1pbiBvYmplY3QuCi0gICAgICAg
IGlmICh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNoYWluKS0+SW50ZXJuYWxGaWVsZENv
dW50KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNoYWluID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbiktPkdldFByb3RvdHlwZSgpOwogICAgIH0KIApA
QCAtOTAsMjAgKzg3LDE0IEBAIGJvb2wgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90
b3R5cGVQYXJhbWV0ZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwCiAgICAgaWYgKHByb3Rv
dHlwZU9iamVjdC0+SGFzT3duUHJvcGVydHkodjhTdHJpbmcoImNvbnN0cnVjdG9yIiwgc3RhdGUt
PmNvbnRleHQoKS0+R2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBW
OFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20o
c3RhdGUtPmNvbnRleHQoKSk7Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQzNgotICAgIC8vICAgZG9jdW1lbnQucmVnaXN0
ZXIoKSBzaG91bGQgYWxsb3cgYXJiaXRyYXJ5IEhUTUxFbGVtZW50IHN1YmNsYXNzc2VzLgotICAg
IC8vICAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIGN1c3RvbSBlbGVtZW50cyB3aGljaCBhcmUKLSAg
ICAvLyAgIC0gZGlyZWN0IHN1YmNsYXNzZXMgb2YgSFRNTEVsZW1lbnQgb3IKLSAgICAvLyAgIC0g
c3ViY2xhc3NlcyBvZiBvdGhlciBjdXN0b20gZWxlbWVudHMKLSAgICAvLworICAgIC8vIEZJWE1F
OiBub24tSFRNTCBzdWJjbGFzc2VzIHNob3VsZCBiZSBhbHNvIHN1cHBvcnRlZDogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTY5MwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaHRtbENvbnN0cnVjdG9yID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChw
ZXJDb250ZXh0RGF0YS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOEhUTUxFbGVtZW50OjppbmZvKSk7
CiAgICAgaWYgKGh0bWxDb25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGh0bWxDb25zdHJ1Y3Rvci0+R2V0KHY4U3RyaW5nKCJwcm90b3R5
cGUiLCBzdGF0ZS0+Y29udGV4dCgpLT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGh0bWxQcm90
b3R5cGUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFoYXNOb0J1
aWx0aW5zSW5Qcm90b3R5cGUoaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKKyAgICBp
ZiAoIWhhc1ZhbGlkUHJvdG90eXBlQ2hhaW4oaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTIwLDYg
KzExMSwzNCBAQCBib29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Nv
bnN0IFF1YWxpZmllZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKGNv
bnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCit7CisgICAgaWYgKHByb3RvdHlwZS52OFZhbHVl
KCkuSXNFbXB0eSgpIHx8ICFwcm90b3R5cGUudjhWYWx1ZSgpLT5Jc09iamVjdCgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHByb3RvdHlwZS52OFZhbHVlKCkpKTsKK30KKworV3JhcHBlclR5cGVJbmZvKiBD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjaGFpbikKK3sKKyAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmpl
Y3QoKSkgeworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbik7CisgICAgICAgIC8vIE9ubHkgcHJvdG90
eXBlIG9iamVjdHMgb2YgbmF0aXZlLWJhY2tlZCB0eXBlcyBoYXZlIHRoZSBleHRyYSBpbnRlcm5h
bCBmaWVsZCBzdG9yaW5nIFdyYXBwZXJUeXBlSW5mby4KKyAgICAgICAgaWYgKHY4UHJvdG90eXBl
SW50ZXJuYWxGaWVsZGNvdW50ID09IGNoYWluT2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSkK
KyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KGNo
YWluT2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4UHJvdG90eXBl
VHlwZUluZGV4KSk7CisgICAgICAgIGNoYWluID0gY2hhaW5PYmplY3QtPkdldFByb3RvdHlwZSgp
OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLyBUaGlzIGNhbiByZXR1cm4gbnVsbC4g
SW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgdGFrZSB0aGUgZWxlbWVudCBuYW1lIGFzIGl0cyBsb2Nh
bCBuYW1lLgorY29uc3QgUXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRM
b2NhbE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbikKK3sKKyAgICBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKGNoYWlu
KTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmaW5kSFRN
TFRhZ05hbWVPZlY4VHlwZSh0eXBlKTsKK30KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVs
ZW1lbnRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50
SGVscGVycy5oCmluZGV4IDA4ZDFiY2JjMTg5NTY5NWRkYWFiZGFkMGZiZjNmOGI5ZDMxYWJiYTUu
LmYyOTBmNTQ4ODBkMDk3NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaApAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
IAogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgUXVhbGlmaWVkTmFtZTsK
IGNsYXNzIFNjcmlwdFN0YXRlOwogCiBjbGFzcyBDdXN0b21FbGVtZW50SGVscGVycyB7CkBAIC00
Niw4ICs0NywxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUNvbnN0cnVj
dG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3JpcHRWYWx1ZSYg
cHJvdG90eXBlLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5
cGVQYXJhbWV0ZXIoY29uc3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRp
YyBib29sIGlzRmVhdHVyZUFsbG93ZWQoU2NyaXB0U3RhdGUqKTsKKyAgICBzdGF0aWMgY29uc3Qg
UXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBl
KTsKIAogICAgIHN0YXRpYyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOworICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2hhaW4pOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
KiBmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOwogfTsKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcAppbmRleCBlNWIzNGJlYjc4MDZiNTJmMjJlNjQyN2Zi
ZGUxYmFiYzkzOTU4OGU5Li5mMGExNWRkODlkZTM4ZmIxY2UxZTZjOTdkZDAzMDE4MjJkZGQ4NDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAK
QEAgLTQyLDI5ICs0MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXcmFw
cGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZU9mKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFp
bikKLXsKLSAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkg
ewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbik7Ci0gICAgICAgIGlmICh2OFByb3RvdHlwZUludGVy
bmFsRmllbGRjb3VudCA9PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9i
amVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJ
bmRleCkpOwotICAgICAgICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3Rv
bUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFJlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwuZ2V0KCkpOwotICAgIGlmICghY29uc3RydWN0b3IpIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRv
VjgodG9IVE1MVW5rbm93bkVsZW1lbnQodG9IVE1MRWxlbWVudChpbXBsLmdldCgpKSksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHko
KSAmJiB3cmFwcGVyVmFsdWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIH0KKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBwcm90ZWN0ZWRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7CiAKICAgICAvLyBU
aGUgY29uc3RydWN0b3IgYW5kIHJlZ2lzdGVyZWQgbGlmZWN5Y2xlIGNhbGxiYWNrcyBzaG91bGQg
YmUgdmlzaWJsZSBvbmx5IGZyb20gbWFpbiB3b3JsZC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBGdW5j
dGlvblRlbXBsYXRlCkBAIC03NiwxMiArNTcsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLAog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29uc3RydWN0b3JWYWx1ZSA9IFdlYkNvcmU6OnRvVjgoY29uc3RydWN0b3IuZ2V0KCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KHByb3RlY3RlZENvbnN0cnVjdG9yLmdldCgpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmIChjb25zdHJ1Y3RvclZhbHVlLklzRW1w
dHkoKSB8fCAhY29uc3RydWN0b3JWYWx1ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0
cnVjdG9yV2FwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZh
bHVlKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInByb3RvdHlwZSIpKSk7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IGZp
bmRXcmFwcGVyVHlwZU9mKHByb3RvdHlwZSk7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5m
byA9IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kV3JhcHBlclR5cGUocHJvdG90eXBlKTsKICAg
ICBpZiAoIXR5cGVJbmZvKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCmluZGV4
IDcwMGQ4YjUxOTlhYjQyYjZkY2FmYjk4MDgxNDQ3NjZkYTk2NmQwMzYuLmY3Nzc3YzVkYTQyOWJh
MGZkZmI1Y2YwNmI5YWJhOTgwYmE0YzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFY4Q3VzdG9t
RWxlbWVudF9oCiAjZGVmaW5lIFY4Q3VzdG9tRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKQEAgLTQwLDQ1ICs0
MywzMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAog
Y2xhc3MgVjhDdXN0b21FbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gY29uc3RydWN0b3JPZihFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50Piwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1
c3RvbUVsZW1lbnQ6OnRvVjgoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVy
KGltcGwsIGlzb2xhdGUpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB3cmFwcGVyOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
ICAgICBBU1NFUlQoaW1wbCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihp
bXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OmNy
ZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4g
VjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29u
c3RydWN0b3IsIGlzb2xhdGUpOwogfQogCi0jZWxzZSAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotCi1jbGFzcyBWOEN1c3RvbUVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAw
KTsKLX07Ci0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEhUTUxDdXN0b21FbGVtZW50
Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSBQYXNzUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gVjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVs
ZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHdyYXAodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSog
cmVnaXN0cnkgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICByZXR1
cm4gcmVnaXN0cnktPmZpbmRGb3IoZWxlbWVudCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhm
Nzk1MGFhMzU2Li45NWNlNzdhZjE1MDljOWRkMWQxNGUxOTBlMjE3NTQwYjk5ZDU3Y2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMTc4LDYg
KzE3OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdyYXBwZXJDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9OwogICAgICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbGVt
ZW50VHlwZT4KKyAgICBjbGFzcyBXcmFwcGVyVHlwZVRyYWl0cyB7CisgICAgICAgIC8vIHNwZWNp
YWxpemVkIGNsYXNzZXMgaGF2ZSB0aGllciBvd24gZnVuY3Rpb25zLCB3aGljaCBhcmUgZ2VuZXJh
dGVkIGJ5IGJpbmRpbmcgZ2VuZXJhdG9yLgorICAgIH07CiB9CiAKICNlbmRpZiAvLyBXcmFwcGVy
VHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAKaW5k
ZXggOGVkNzliODVlMDY4NWJlMTA0MDljNzVjNTNhNTAyMzhlZTgyZmM2OS4uNTVlMzhjZTk5NWY5
M2ZmZTZhNTJkMmVjZWY0ZGVmMDk2NGY5NTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29u
c3RydWN0b3JDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25z
dCB2CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBpbXBsLT5jcmVhdGVFbGVtZW50KCk7
CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICBy
ZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp0b1Y4KGVsZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKGVs
ZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBjOTc1ZDZjNTMyMmY0NWYyNjVhYjJkN2I3YmM5
NTMyMTRjZTEwMTY4Li5hYThkYTM1NGZiNmYxNzdmY2E0ZTQzYTk1YmZjNTdjNDg0MDZkMzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcApA
QCAtMzcsMjEgKzM3LDI1IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90
b3R5cGUpCitQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCiB7Ci0gICAgUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5ldyBDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IoZG9jdW1lbnQsIG5hbWUpKTsKKyAgICBBU1NFUlQoQ3VzdG9tRWxl
bWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIocHJvdG90eXBlLCBzdGF0ZSkp
OworICAgIEFTU0VSVChsb2NhbE5hbWUgPT0gZWxlbWVudE5hbWUgfHwgbG9jYWxOYW1lID09ICpD
dXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGUpKTsKKyAgICBSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGVkID0gYWRvcHRSZWYobmV3IEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcihkb2N1bWVudCwgZWxlbWVudE5hbWUsIGxvY2FsTmFtZSkpOwog
ICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBw
ZXIoY3JlYXRlZC5nZXQoKSwgcHJvdG90eXBlLCBzdGF0ZSkpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjcmVhdGVkLnJlbGVhc2UoKTsKIH0KIAotQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQorQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBl
bGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQpCi0gICAgLCBtX25hbWUobmFtZSkKKyAgICAs
IG1fZWxlbWVudE5hbWUoZWxlbWVudE5hbWUpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUp
CiB7CiB9CiAKQEAgLTYzLDcgKzY3LDE2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRl
KG1fbmFtZSwgZG9jdW1lbnQoKSk7CisgICAgaWYgKG1fbG9jYWxOYW1lICE9IG1fZWxlbWVudE5h
bWUpCisgICAgICAgIHJldHVybiBtYXJrQXNFeHRlbmRlZEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQo
KS0+Y3JlYXRlRWxlbWVudChtX2xvY2FsTmFtZSwgZG9jdW1lbnQoKSksIG1fZWxlbWVudE5hbWUu
bG9jYWxOYW1lKCkpOworICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fZWxlbWVudE5h
bWUsIGRvY3VtZW50KCkpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVuZGVk
Q3VzdG9tRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIXR5cGVFeHRlbnNpb24uaXNFbXB0eSgp
KQorICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIsIHR5cGVF
eHRlbnNpb24pOworICAgIHJldHVybiBlbGVtZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXggODQ0ZTBlOGIzZDk5ZjIyOWZj
YzJmMjMzNGQ0MDM1MjU0YjU2NDA4My4uNWY0Y2YzN2Q2MjdhMGU4Y2MzNjk2NjFmOTQyNjI2MzQy
ZjUyYjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaApAQCAtNDgsMjEgKzQ4LDI1IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBTY3JpcHRTdGF0
ZTsKIGNsYXNzIFNjcmlwdFZhbHVlOwogCitQYXNzUmVmUHRyPEVsZW1lbnQ+IG1hcmtBc0V4dGVu
ZGVkQ3VzdG9tRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGVFeHRlbnNpb24pOworCiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IgOiBwdWJs
aWMgUmVmQ291bnRlZDxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+ICwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIERvY3VtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5h
bWUsIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICB2aXJ0dWFsIH5DdXN0b21FbGVtZW50Q29u
c3RydWN0b3IoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQotICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dE5hbWU7IH0KKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2xvY2FsTmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KCkgY29uc3Q7Ci0gICAgCisKIHByaXZhdGU6Ci0gICAgQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBtX25h
bWU7CisgICAgUXVhbGlmaWVkTmFtZSBtX2VsZW1lbnROYW1lOworICAgIFF1YWxpZmllZE5hbWUg
bV9sb2NhbE5hbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuY3BwCmluZGV4IGQ4YjBjZDkwNTUwNjVmMzc4ZGE2NzgxYWViMjAxN2QzYjNhN2E2
ZmEuLmYwN2JkZGY0OWY0Yzc0MzQ1YmJmYzk0ZDQ5ZDRhMTY4N2IzYmQ5YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAK
QEAgLTYyLDE4ICs2MywxNSBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50
UmVnaXN0cnkoKQogewogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCitz
dGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKIHsKLSAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBzZWxmLT5maW5kKGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgIHNp
emVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOworICAgIHJldHVybiAoaHlwaGVu
UG9zaXRpb24gIT0gbm90Rm91bmQpOwogfQogCiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
aXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIHNpemVfdCBoeXBo
ZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9PSBu
b3RGb3VuZCkKKyAgICBpZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3RyaW5n
PiwgcmVzZXJ2ZWROYW1lcywgKCkpOwpAQCAtMTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRyPEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVs
ZW1lbnQoU2NyaQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIGlmIChm
aW5kKG5ld05hbWUpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQogICAgIFNjcmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwogICAg
IGlmICghb3B0aW9ucy5nZXQoInByb3RvdHlwZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAtMTMy
LDMzICsxMjUsNzEgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1fbmFt
ZXMuY29udGFpbnMobmV3TmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbG9j
YWxOYW1lRm91bmQgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5
cGVWYWx1ZSk7CisgICAgUXVhbGlmaWVkTmFtZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFtZUZv
dW5kID8gKmxvY2FsTmFtZUZvdW5kIDogbmV3TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1lLCBs
b2NhbE5hbWVUb1VzZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQogICAgIAotICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24gY291
bGQgaGFwcGVuIGluIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMgdGhl
IGRvY3VtZW50LgorICAgIC8vIEEgc2NyaXB0IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4gaXNW
YWxpZFByb3RvdHlwZVBhcmFtZXRlcigpLCB3aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAgICAg
aWYgKCFkb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUs
IGRvY3VtZW50KCksIG5ld05hbWUsIHByb3RvdHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHN0YXRlLCBkb2N1bWVudCgpLCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwgcHJv
dG90eXBlVmFsdWUpOwogICAgIGlmICghY29uc3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAgICBt
X2NvbnN0cnVjdG9ycy5hZGQoY29uc3RydWN0b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVjdG9y
KTsKKyAgICBtX2NvbnN0cnVjdG9ycy5hZGQoc3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3ItPmVs
ZW1lbnROYW1lKCksIGNvbnN0cnVjdG9yLT5sb2NhbE5hbWUoKSksIGNvbnN0cnVjdG9yKTsKKyAg
ICBtX25hbWVzLmFkZChjb25zdHJ1Y3Rvci0+ZWxlbWVudE5hbWUoKSk7CisKICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBD
dXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxl
bWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKKworICAgIC8vIE1vc3QgZWxl
bWVudHMgY2FuIGJlIHJlamVjdGVkIHRoaXMgcXVpY2sgc2NyZWVuaW5nLgorICAgIGlmICghbmFt
ZUluY2x1ZGVzSHlwaGVuKGVsZW1lbnQtPnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJp
YnV0ZShIVE1MTmFtZXM6OmlzQXR0cikpCisgICAgICAgIHJldHVybiAwOworCisgICAgUXVhbGlm
aWVkTmFtZSBpZFZhbHVlKG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVz
Ojppc0F0dHIpLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICByZXR1cm4gZmlu
ZChpZFZhbHVlLCBlbGVtZW50LT50YWdRTmFtZSgpKTsKK30KKworUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZChjb25zdCBRdWFs
aWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBj
b25zdAogewotICAgIENvbnN0cnVjdG9yTWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IG1fY29u
c3RydWN0b3JzLmZpbmQobmFtZS5pbXBsKCkpOwotICAgIHJldHVybiAoZm91bmQgIT0gbV9jb25z
dHJ1Y3RvcnMuZW5kKCkpID8gZm91bmQtPnZhbHVlIDogMDsKKyAgICBDb25zdHJ1Y3Rvck1hcDo6
Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5lbmQoKTsKKyAgICBpZiAoIWVs
ZW1lbnROYW1lLmxvY2FsTmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgZm91bmQgPSBtX2NvbnN0
cnVjdG9ycy5maW5kKHN0ZDo6bWFrZV9wYWlyKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKTsKKyAg
ICBpZiAoZm91bmQgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIGZvdW5kID0gbV9j
b25zdHJ1Y3RvcnMuZmluZChzdGQ6Om1ha2VfcGFpcihsb2NhbE5hbWUsIGxvY2FsTmFtZSkpOwor
ICAgIGlmIChmb3VuZCA9PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGZvdW5kLT52YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVh
dGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yPiBmb3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAgIHJldHVybiBmb3VuZC0+
Y3JlYXRlRWxlbWVudCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lID0g
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgdHlwZUV4dGVuc2lvbiwgbG9jYWxOYW1lLm5hbWVzcGFj
ZVVSSSgpKTsKKyAgICBpZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZm91bmQg
PSBmaW5kKGVsZW1lbnROYW1lLCBsb2NhbE5hbWUpKSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBjcmVhdGVkID0gZm91bmQtPmNyZWF0ZUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50
TmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkgJiYgbG9jYWxOYW1lICE9IGVsZW1lbnROYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIG1hcmtBc0V4dGVuZGVkQ3VzdG9tRWxlbWVudChjcmVhdGVkLCB0
eXBlRXh0ZW5zaW9uKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZWQucmVsZWFzZSgpOworICAgIH0K
KwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgKaW5kZXggMjA4MmNkNzYyMmNmNjJlYWJlMTM2ZDZhZmIyN2E0ZGFhNjJlNzI3YS4u
MTAyYWEzZGUzOGMyMTE2OGUwYzdiNzBjNjUyOGEyYTFhOTFkZTRlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTU5LDE4ICs2MCwyMCBAQCBwdWJsaWM6CiAgICAgfkN1c3RvbUVsZW1l
bnRSZWdpc3RyeSgpOwogCiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBmaW5kRm9yKEVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFt
ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0OworCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yT2YoRWxlbWVudCopOwotICAgIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIFJlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+ID5Db25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8c3RkOjpwYWlyPFF1YWxpZmllZE5hbWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiA+IENvbnN0cnVjdG9yTWFwOworICAgIHR5cGVkZWYgSGFz
aFNldDxRdWFsaWZpZWROYW1lPiBOYW1lU2V0OwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25z
dHJ1Y3RvcnM7CisgICAgTmFtZVNldCBtX25hbWVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzU4NDdhZmQ4MjBhMjE3ZDQ4MTE0MDk5
OTA0MGFiZTk3YjBmN2VlNi4uMmRiODRhMjBjYzA5ODczMDI1MDdlNGFmMmRmNGEzNGEzNTZjMWVi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04MzQsNiArODM0LDQxIEBAIFBhc3NSZWZQ
dHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25DCiB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIWlzVmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGlmIChtX3JlZ2lzdHJ5KSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZWQgPSBtX3JlZ2lzdHJ5LT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpLCB0eXBlRXh0ZW5zaW9uKSkKKyAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVkOworICAgIH0KKworICAgIHJldHVybiBtYXJrQXNFeHRlbmRlZEN1
c3RvbUVsZW1lbnQoY3JlYXRlRWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7
IC8vICBGSVhNRTogdGFrZSBjYXJlIG9mIEBpcworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERv
Y3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0
ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5h
bWU7CisgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBs
b2NhbE5hbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBRdWFsaWZpZWROYW1lIHFO
YW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOworICAgIGlmICghaGFzVmFsaWRO
YW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobV9yZWdpc3RyeSkgeworICAg
ICAgICBpZiAoUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gbV9yZWdpc3RyeS0+Y3JlYXRl
RWxlbWVudChxTmFtZSwgdHlwZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRl
ZDsKKyAgICB9CisKKyAgICByZXR1cm4gbWFya0FzRXh0ZW5kZWRDdXN0b21FbGVtZW50KGNyZWF0
ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lv
bik7Cit9CisKIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBEb2N1bWVudDo6
cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gcmVnaXN0ZXJF
bGVtZW50KHN0YXRlLCBuYW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsKQEAgLTg1MCwxMSArODg1LDYg
QEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3Rl
ckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3QKICAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVm
KG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnkodGhpcykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5
LT5yZWdpc3RlckVsZW1lbnQoc3RhdGUsIG5hbWUsIG9wdGlvbnMsIGVjKTsKIH0KLQotUGFzc1Jl
ZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IERvY3VtZW50OjpyZWdpc3RyeSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcmVnaXN0cnk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVN
RU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEwNWRlMTM0ODEyYTg1
M2RjZjUwYWEyMDlhZjNhZWRhMDdmZWIuLjE1YzY2NmNlODdlMTIyMjQ1MGJjZjJmMWQ0NmI3YzNl
NzlmMTAwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTQ5LDkgKzExNDksMTEgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0
ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6
U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeT4gcmVnaXN0cnkoKSBjb25zdDsKKyAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJl
Z2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNj
YWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAppbmRleCAwZTA2ZmM3ZjJkODE5MTZmODUyNTUwMDhiMjc5YmNjNTVjZDNjMDhlLi43ZTI3
ODhkZWIwZWNjNGVmMmY2N2YwYTY5ODQ3Mzk1MDZmZjFhODFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwKQEAgLTM1OSw2ICszNTksOSBAQAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVN
RU5UUykgJiYgRU5BQkxFX0NVU1RPTV9FTEVNRU5UUwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
Y3VzdG9tRE9NRWxlbWVudHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50
ZWRBcz1yZWdpc3RlckVsZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlXQogICAgIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09w
dGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIFtS
ZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxO
YW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24p
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVz
cGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKaW5kZXggMDQzYTM4MjQwOGNjNDE3MDE2Y2Y0MDJmNjQ3MjE0OWZiOTVjY2Q5Ni4u
YjkxMDNlNTRmZTE3N2ZmM2MxNTg4YzIxM2QwYTMxOTdmZTM4ZjAwZiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwKQEAgLTgyMyw2ICs4MjMsMTEgQEAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
IAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjZW5kaWYK
KwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFZJREVPKQogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg5Niw2ICs5MDEsMTYg
QEAgRU5ECiB9CiAKIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQor
ICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnkoKS0+
ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNvbnN0cnVjdG9yLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgICAgICBBU1NF
UlQoZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50PihlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAg
IGlmICghZ0Z1bmN0aW9uTWFwKQogICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwogICAgIGlm
IChDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUu
bG9jYWxOYW1lKCkuaW1wbCgpKSkgewpAQCAtOTEyLDExICs5MjcsNyBAQCBpZiAoJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKIHByaW50IEYgPDxFTkQKICAgICB9CiAKLUVORAot
OwotcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9
OjpjcmVhdGUocU5hbWUsIGRvY3VtZW50KTtcbiI7Ci0KLXByaW50IEYgPDxFTkQKKyAgICByZXR1
cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1
bWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTExNzIsOSArMTE4MywxMiBA
QCBFTkQKIDsKICAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAg
ICAgICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1
ZGUgIlY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpCisjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2lu
Y2x1ZGUgPHY4Lmg+CiBFTkQKIDsKQEAgLTEyNDQsNiArMTI1OCwxOSBAQCBFTkQKIAogICAgIHBy
aW50IEYgPDxFTkQKICAgICB9CitFTkQKKzsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBl
cSAiVjgiKSB7CisgICAgICAgIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQorICAgIGlmIChQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3IgPSBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAg
IHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBj
b25zdHJ1Y3RvciwgaXNvbGF0ZSk7CisjZW5kaWYKK0VORAorOworICAgIH0KKworICAgIHByaW50
IEYgPDxFTkQKICAgICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJG
dW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFt
ZSgpLmltcGwoKSk7CiAgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3
NSwxMSArMTMwMiw2IEBAIEVORAogICAgIHJldHVybiBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBw
ZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwotICAgICAgICB9
IGVsc2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVORAotOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAogICAgIHJldHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFs
bGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
QEAgLTEyODksMTIgKzEzMTEsNDggQEAgRU5ECiAgICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0K
K0VORAorOworCisgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAg
ICBwcmludCBGIDw8RU5ECisKK2NvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlm
aWVkTmFtZSo+IFR5cGVOYW1lTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVN
YXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CitFTkQKKzsKKworICAgICAg
ICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAg
IGlmICghdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7CisgICAgICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25kaXRpb25hbH07Cisg
ICAgICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBz
cGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOworICAgICAgICAgICAgICAgICAgICBwcmlu
dCBGICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7CisgICAgICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFt
ZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgICAgbWFw
LnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3Rh
Z05hbWV9VGFnKTtcbiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludCBGIDw8RU5ECisgICAg
fQorCisgICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7CiB9CiAKIEVORAogOworICAgIH0KIAorICAg
IHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7
Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwpAQCAtMTM0NSw2ICsxNDAzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ7CiAKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVk
ZjJiYjk0ZWVhMzQ4MzdlZWM1Li42YzY3NTdkMTRhNzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2My
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2
LDYgKzEyNiw3IEBAIGh0dHBfZXF1aXYKIGlkCiBpbmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQor
aXMKIGlzbWFwCiBpdGVtaWQKIGl0ZW1wcm9wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTUwZTE3MjAwMDk2MWQ0NzkxMWU0
MjdmNzMwZGM0ZGJmMTFlMzA4MC4uMGIwNjQ4ZTA3ZjllY2ZlYTk4ZGIwOThkY2NjNWQyZjU5NjMx
M2M3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTEwICBIYWppbWUgTW9ycml0YSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXSBBbnkgSFRN
TEVsZW1lbnQgc3ViY2xhc3Mgc2hvdWxkIGJlY29tZSBhIHN1cGVyY2xhc3Mgb2YgY3VzdG9tIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25z
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xMSAgWXVr
aSBTZWtpZ3VjaGkgIDx5dWtpLnNla2lndWNoaUBhY2Nlc3MtY29tcGFueS5jb20+CiAKICAgICAg
ICAgUnVieSB0ZXh0IGlzIGluY29ycmVjdGx5IHBvc2l0aW9uZWQgd2hlbiBpdHMgd3JpdGluZy1t
b2RlIGlzIGNoYW5nZWQgdG8gdmVydGljYWwgYWZ0ZXIgbGF5b3V0IGlzIGRvbmUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0
ZXItYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IGZmYjUyODNkYWMyYTdkZWZiNjFjNTc3ZThhNGYx
YjljYWViNmYyYzcuLjFjNDkyMmYzMDA3ZGM2ZDQ5MTVkZTViZWVjNzg1ZDk0Mjg4MmJkOTYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1i
YXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3Vt
ZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMTQsNyArMTQsNiBAQCBQQVNTIGRv
Y3VtZW50LnJlZ2lzdGVyKCdYLUZPTycsIGNyZWF0ZVJlZ2lzdGVyUGFyYW10ZXJzKCkpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcgogUEFTUyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYScsIHsgcHJv
dG90eXBlOiBIVE1MRWxlbWVudC5wcm90b3R5cGUgfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
bnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtYmFkLWInLCB7IHByb3RvdHlwZToge30gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
bnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtYmFkLWMnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5
cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTEuCi1QQVNTIGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1kJywgeyBwcm90b3R5cGU6
IE9iamVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZSkgfSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1MgZm9v
Q29uc3RydWN0b3IoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBET00gb2JqZWN0IGNvbnN0
cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4uCiBQQVNTIGNyZWF0ZWRGb28u
X19wcm90b19fIGlzIGZvb0NvbnN0cnVjdG9yLnByb3RvdHlwZQogUEFTUyBjcmVhdGVkRm9vLmNv
bnN0cnVjdG9yIGlzIGZvb0NvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCmluZGV4IGY1Yjc2OTlk
ZjgzZjUwYmFmZjk1NTIyODNmMzhlYTNmOWNhNGQ1NzAuLmI1ODhjZmU5ZjdmOTMxNDBmMTdiY2Ey
ZTc5ODBkYzEzOTc2ZjA2MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCkBAIC0zOSw4ICszOSw2IEBAIHNo
b3VsZFRocm93KCJkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYScsIHsgcHJvdG90eXBlOiBIVE1M
RWxlbWVudC5wcm90b3R5cGUgfSkiCiBzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
YmFkLWInLCB7IHByb3RvdHlwZToge30gfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMSciKTsKIC8vIEJhZCBwcm90b3R5cGU6IHdyb25nIF9fcHJvdG9fXwog
c2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1jJywgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoRG9jdW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJyb3I6IEludmFsaWRTdGF0
ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwotLy8gQnVnIDExMDQzNiAtIEVsZW1lbnRzIG90
aGVyIHRoYW4gSFRNTEVtZW1lbnQgc2hvdWxkIGJlIGFsbG93ZWQgYXMgYSBzdXBlcmNsYXNzLgot
c2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1kJywgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9yOiBJbnZh
bGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSciKTsKIC8vIENhbGwgYXMgZnVuY3Rpb24K
IHNob3VsZFRocm93KCJmb29Db25zdHJ1Y3RvcigpIiwgIidUeXBlRXJyb3I6IERPTSBvYmplY3Qg
Y29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiciKQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1l
eHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1
bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUz
YWEwYjMzYTA4YWQzYWJiZDQ1NzM1OTEyZDRmOWM4ZTFlODkzMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRl
bnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY3IEBACitUZXN0aW5nIGRvY3VtZW50LnJl
Z2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQo
KS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQucmVnaXN0
ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJv
dG90eXBlKSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExLgorUEFTUyBmb29OZXdlZC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9v
PicKK1BBU1MgZm9vTmV3ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciAmJiBmb29OZXdlZCBp
bnN0YW5jZW9mIEhUTUxFbGVtZW50IGlzIHRydWUKK1BBU1MgZm9vTmV3ZWQgaW5zdGFuY2VvZiBI
VE1MVW5rbm93bkVsZW1lbnQgaXMgZmFsc2UKK1BBU1MgYmFyTmV3ZWQub3V0ZXJIVE1MIGlzICc8
aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGJhck5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0
b3IgJiYgYmFyTmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IGlzIHRydWUKK1BBU1Mg
aXNGb3JtQ29udHJvbChiYXJOZXdlZCkgaXMgdHJ1ZQorUEFTUyBiYXpOZXdlZC5vdXRlckhUTUwg
aXMgJzx4LWJhej48L3gtYmF6PicKK1BBU1MgYmF6TmV3ZWQgaW5zdGFuY2VvZiBiYXpDb25zdHJ1
Y3RvciAmJiBiYXpOZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IGlzIHRydWUKK1BBU1MgYmF6
TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgZmFsc2UKK1BBU1MgcXV4TmV3
ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIGJhckNv
bnN0cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCBpcyB0cnVl
CitQQVNTIHF1eE5ld2VkLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4LXF1eCI+JworUEFTUyBp
c0Zvcm1Db250cm9sKHF1eE5ld2VkKSBpcyB0cnVlCitQQVNTIGZvb0NyZWF0ZWQub3V0ZXJIVE1M
IGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25z
dHJ1Y3RvciBpcyB0cnVlCitQQVNTIGJhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1iYXI+PC94
LWJhcj4nCitQQVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyBmYWxz
ZQorUEFTUyBiYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUK
K1BBU1MgYmF6Q3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJhej48L3gtYmF6PicKK1BBU1MgYmF6
Q3JlYXRlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmF6Q3JlYXRl
ZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBxdXhDcmVhdGVk
Lm91dGVySFRNTCBpcyAnPHgtcXV4PjwveC1xdXg+JworUEFTUyBxdXhDcmVhdGVkIGluc3RhbmNl
b2YgcXV4Q29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgcXV4Q3JlYXRlZCBpbnN0YW5jZW9mIEhU
TUxVbmtub3duRWxlbWVudCBpcyB0cnVlCitQQVNTIGRpdkZvb0NyZWF0ZWQub3V0ZXJIVE1MIGlz
ICc8ZGl2IGlzPSJ4LWZvbyI+PC9kaXY+JworUEFTUyBkaXZGb29DcmVhdGVkIGluc3RhbmNlb2Yg
Zm9vQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhU
TUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1MgaW5wdXRCYXJDcmVhdGVkLm91dGVySFRNTCBpcyAn
PGlucHV0IGlzPSJ4LWJhciI+JworUEFTUyBpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJD
b25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGlucHV0QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxV
bmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBpc0Zvcm1Db250cm9sKGlucHV0QmFyQ3JlYXRl
ZCkgaXMgdHJ1ZQorUEFTUyBkaXZCYXJDcmVhdGVkLm91dGVySFRNTCBpcyAnPGRpdiBpcz0ieC1i
YXIiPjwvZGl2PicKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9y
IGlzIGZhbHNlCitQQVNTIGRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBp
cyB0cnVlCitQQVNTIGZvb0JhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1mb28gaXM9IngtYmFy
Ij48L3gtZm9vPicKK1BBU1MgZm9vQmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9y
IGlzIHRydWUKK1BBU1MgYmFyRm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJhciBpcz0ieC1m
b28iPjwveC1iYXI+JworUEFTUyBiYXJGb29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25F
bGVtZW50IGlzIHRydWUKK1BBU1MgZm9vQ3JlYXRlZE51bGwub3V0ZXJIVE1MIGlzICc8eC1mb28+
PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWROdWxsIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ig
aXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkRW1wdHkub3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZv
bz4nCitQQVNTIGZvb0NyZWF0ZWRFbXB0eSBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRy
dWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQGludmFsaWQnLCAneC1iYXInKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1
LgorUEFTUyBmb29DcmVhdGVkTlMub3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNT
IGZvb0NyZWF0ZWROUyBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFy
Q3JlYXRlZE5TLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4LWJhciI+JworUEFTUyBiYXJDcmVh
dGVkTlMgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGlzRm9ybUNvbnRy
b2woYmFyQ3JlYXRlZE5TKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygn
aHR0cDovL2V4YW1wbGUuY29tLzIwMTMvbm8tc3VjaC1uYW1lc3BhY2UnLCAneG1sOmxhbmcnLCAn
eC1iYXInKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0
aW9uIDE0LgorUEFTUyBmb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyB0cnVl
CitQQVNTIGJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1Mg
aXNGb3JtQ29udHJvbChiYXJQYXJzZWQpIGlzIHRydWUKK1BBU1MgZGl2Rm9vUGFyc2VkIGluc3Rh
bmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2Rm9vUGFyc2VkIGluc3RhbmNl
b2YgSFRNTERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBuYW1lZEJhclBhcnNlZCBpbnN0YW5jZW9m
IGJhckNvbnN0cnVjdG9yIGlzIGZhbHNlCitQQVNTIG5hbWVkQmFyUGFyc2VkIGluc3RhbmNlb2Yg
SFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZGl2QmFyUGFyc2VkIGluc3RhbmNlb2Yg
YmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2QmFyUGFyc2VkIGluc3RhbmNlb2YgSFRN
TERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9k
b2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDM3MDY2MjZmMDgwODQyMzcxYTdkODhlNTAyZWMzYmQwYjgxOTY5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5
cGUtZXh0ZW5zaW9ucy5odG1sCkBAIC0wLDAgKzEsMTcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rp
dj4KKzxmb3JtIGlkPSJ0ZXN0Rm9ybSI+PC9mb3JtPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJv
dWdoIGNyZWF0ZUVsZW1lbnQoKS4iKTsKKworZnVuY3Rpb24gaXNGb3JtQ29udHJvbChlbGVtZW50
KQoreworICAgIHRlc3RGb3JtLmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVt
ZW50LmZvcm0gPT0gdGVzdEZvcm07Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVn
aXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7CisKKy8vCisvLyBJbmhlcml0YW5jZSBo
ZXJlIGlzIHNoYXBlZCBsaWtlIHRoaXM6CisvLworLy8gSFRNTEVsZW1lbnQgPC0gaW5wdXQgPC0g
eC1iYXIgPC0geC1xdXgKKy8vICAgICAgICAgICAgIDwtIHgtZm9vIDwtIHgtYmF6CisvLworCitm
b29Db25zdHJ1Y3RvciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBlOiBP
YmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSkgfSk7CitiYXJDb25zdHJ1Y3RvciA9
IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhcicsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhU
TUxJbnB1dEVsZW1lbnQucHJvdG90eXBlKSB9KTsKK2JhekNvbnN0cnVjdG9yID0gZG9jdW1lbnQu
cmVnaXN0ZXIoJ3gtYmF6JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoZm9vQ29uc3RydWN0
b3IucHJvdG90eXBlKSB9KTsKK3F1eENvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
cXV4JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoYmFyQ29uc3RydWN0b3IucHJvdG90eXBl
KSB9KTsKKworLy8gU2FtZSBuYW1lLCBkaWZmZXJlbnQgbG9jYWwgbmFtZQorc2hvdWxkVGhyb3co
ImRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhU
TUxEaXZFbGVtZW50LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMSciKTsKKworLy8KKy8vIEdlbmVyYXRlZCBjb25zdHJ1Y3RvcnMKKy8v
CisKK2Zvb05ld2VkID0gbmV3IGZvb0NvbnN0cnVjdG9yKCk7Citmb29PdXRlckhUTUwgPSAiJzx4
LWZvbz48L3gtZm9vPiciOworc2hvdWxkQmUoImZvb05ld2VkLm91dGVySFRNTCIsIGZvb091dGVy
SFRNTCk7CitzaG91bGRCZVRydWUoImZvb05ld2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ig
JiYgZm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCIpOworc2hvdWxkQmVGYWxzZSgiZm9v
TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworYmFyTmV3ZWQgPSBuZXcg
YmFyQ29uc3RydWN0b3IoKTsKK2Jhck91dGVySFRNTCA9ICInPGlucHV0IGlzPVwieC1iYXJcIj4n
IjsKK3Nob3VsZEJlKCJiYXJOZXdlZC5vdXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hvdWxk
QmVUcnVlKCJiYXJOZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yICYmIGJhck5ld2VkIGlu
c3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9s
KGJhck5ld2VkKSIpOworCitiYXpOZXdlZCA9IG5ldyBiYXpDb25zdHJ1Y3RvcigpOworYmF6T3V0
ZXJIVE1MID0gIic8eC1iYXo+PC94LWJhej4nIjsKK3Nob3VsZEJlKCJiYXpOZXdlZC5vdXRlckhU
TUwiLCBiYXpPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJiYXpOZXdlZCBpbnN0YW5jZW9mIGJh
ekNvbnN0cnVjdG9yICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQiKTsKK3Nob3Vs
ZEJlRmFsc2UoImJhek5ld2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK3F1
eE5ld2VkID0gbmV3IHF1eENvbnN0cnVjdG9yKCk7CitxdXhPdXRlckhUTUwgPSAiJzxpbnB1dCBp
cz1cIngtcXV4XCI+JyI7CitzaG91bGRCZVRydWUoInF1eE5ld2VkIGluc3RhbmNlb2YgcXV4Q29u
c3RydWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciAmJiBxdXhOZXdl
ZCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQiKTsKK3Nob3VsZEJlKCJxdXhOZXdlZC5vdXRl
ckhUTUwiLCBxdXhPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKHF1eE5l
d2VkKSIpOworCisvLworLy8gU2luZ2xlIHBhcmFtZXRlciBjcmVhdGVFbGVtZW50KCkKKy8vCisK
K2Zvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworc2hvdWxkQmUo
ImZvb0NyZWF0ZWQub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9v
Q3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2JhckNyZWF0ZWQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJhciIpOworc2hvdWxkQmUoImJhckNyZWF0ZWQub3V0ZXJI
VE1MIiwgIic8eC1iYXI+PC94LWJhcj4nIik7CitzaG91bGRCZUZhbHNlKCJiYXJDcmVhdGVkIGlu
c3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitiYXpDcmVhdGVkID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgieC1iYXoiKTsKK3Nob3VsZEJlKCJiYXpDcmVhdGVkLm91dGVySFRNTCIsICIn
PHgtYmF6PjwveC1iYXo+JyIpOworc2hvdWxkQmVUcnVlKCJiYXpDcmVhdGVkIGluc3RhbmNlb2Yg
YmF6Q29uc3RydWN0b3IiKTsKK3Nob3VsZEJlRmFsc2UoImJhekNyZWF0ZWQgaW5zdGFuY2VvZiBI
VE1MVW5rbm93bkVsZW1lbnQiKTsKKworcXV4Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIngtcXV4Iik7CitzaG91bGRCZSgicXV4Q3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LXF1eD48
L3gtcXV4PiciKTsKK3Nob3VsZEJlRmFsc2UoInF1eENyZWF0ZWQgaW5zdGFuY2VvZiBxdXhDb25z
dHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJxdXhDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25v
d25FbGVtZW50Iik7CisKKy8vCisvLyBjcmVhdGVFbGVtZW50KCkgd2l0aCB0eXBlIGV4dGVuc2lv
bnMKKy8vCisKK2RpdkZvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiLCAi
eC1mb28iKTsKK3Nob3VsZEJlKCJkaXZGb29DcmVhdGVkLm91dGVySFRNTCIsICInPGRpdiBpcz1c
IngtZm9vXCI+PC9kaXY+JyIpOworc2hvdWxkQmVGYWxzZSgiZGl2Rm9vQ3JlYXRlZCBpbnN0YW5j
ZW9mIGZvb0NvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImRpdkZvb0NyZWF0ZWQgaW5zdGFu
Y2VvZiBIVE1MRGl2RWxlbWVudCIpOworCitpbnB1dEJhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIsICJ4LWJhciIpOworc2hvdWxkQmUoImlucHV0QmFyQ3JlYXRlZC5v
dXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJpbnB1dEJhckNyZWF0ZWQg
aW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgiaW5wdXRCYXJDcmVh
dGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CitzaG91bGRCZVRydWUoImlzRm9y
bUNvbnRyb2woaW5wdXRCYXJDcmVhdGVkKSIpOworCitkaXZCYXJDcmVhdGVkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFyIik7CitzaG91bGRCZSgiZGl2QmFyQ3JlYXRlZC5v
dXRlckhUTUwiLCAiJzxkaXYgaXM9XCJ4LWJhclwiPjwvZGl2PiciKTsKK3Nob3VsZEJlRmFsc2Uo
ImRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVl
KCJkaXZCYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKworZm9vQmFyQ3Jl
YXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIngtYmFyIik7CitzaG91bGRC
ZSgiZm9vQmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LWZvbyBpcz1cIngtYmFyXCI+PC94LWZv
bz4nIik7CitzaG91bGRCZVRydWUoImZvb0JhckNyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1
Y3RvciIpOworCitiYXJGb29DcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1iYXIi
LCAieC1mb28iKTsKK3Nob3VsZEJlKCJiYXJGb29DcmVhdGVkLm91dGVySFRNTCIsICInPHgtYmFy
IGlzPVwieC1mb29cIj48L3gtYmFyPiciKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyRm9vQ3JlYXRlZCBp
bnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitmb29DcmVhdGVkTnVsbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgbnVsbCk7CitzaG91bGRCZSgiZm9vQ3JlYXRlZE51
bGwub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZE51
bGwgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitmb29DcmVhdGVkRW1wdHkgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIsICIiKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkRW1w
dHkub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZEVt
cHR5IGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKworc2hvdWxkVGhyb3coImRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ0BpbnZhbGlkJywgJ3gtYmFyJykiLCAiJ0Vycm9yOiBJbnZhbGlkQ2hh
cmFjdGVyRXJyb3I6IERPTSBFeGNlcHRpb24gNSciKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1lbnRO
UygpIHdpdGggdHlwZSBleHRlbnNpb25zCisvLworCitmb29DcmVhdGVkTlMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAieC1mb28iLCBu
dWxsKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkTlMub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsK
K3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsK
KworYmFyQ3JlYXRlZE5TID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIiwgImlucHV0IiwgIngtYmFyIik7CitzaG91bGRCZSgiYmFyQ3JlYXRl
ZE5TLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhckNyZWF0ZWRO
UyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRy
b2woYmFyQ3JlYXRlZE5TKSIpOworCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCdodHRwOi8vZXhhbXBsZS5jb20vMjAxMy9uby1zdWNoLW5hbWVzcGFjZScsICd4bWw6bGFu
ZycsICd4LWJhcicpIiwgIidFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQn
Iik7CisKKy8vIHBhcnNlcgorZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZyb21IVE1MKGh0bWwpIHsK
KyAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgIGNv
bnRhaW5lci5pbm5lckhUTUwgPSBodG1sOworICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxk
OworfQorCitmb29QYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzx4LWZvbz4nKTsKK3No
b3VsZEJlVHJ1ZSgiZm9vUGFyc2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKworYmFy
UGFyc2VkID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKCc8aW5wdXQgaXM9eC1iYXI+JykKK3Nob3Vs
ZEJlVHJ1ZSgiYmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJl
VHJ1ZSgiaXNGb3JtQ29udHJvbChiYXJQYXJzZWQpIik7CisKK2RpdkZvb1BhcnNlZCA9IGNyZWF0
ZUVsZW1lbnRGcm9tSFRNTCgnPGRpdiBpcz14LWZvbz4nKQorc2hvdWxkQmVGYWxzZSgiZGl2Rm9v
UGFyc2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiZGl2Rm9v
UGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKworbmFtZWRCYXJQYXJzZWQgPSBj
cmVhdGVFbGVtZW50RnJvbUhUTUwoJzx4LWJhcj4nKQorc2hvdWxkQmVGYWxzZSgibmFtZWRCYXJQ
YXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJuYW1lZEJh
clBhcnNlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitkaXZCYXJQYXJzZWQg
PSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzxkaXYgaXM9eC1iYXI+JykKK3Nob3VsZEJlRmFsc2Uo
ImRpdkJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUo
ImRpdkJhclBhcnNlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50Iik7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193219</attachid>
            <date>2013-03-14 19:06:07 -0700</date>
            <delta_ts>2013-03-14 19:54:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110436-20130315110202.patch</filename>
            <type>text/plain</type>
            <size>52766</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI5N2Y0N2FjN2IzMTQ0
OWUyN2QyZmYzOTdlNmIzYWQ1MjU3MmQ3YS4uODc1ZmI5YWE0MzI3YTJjODg2MTM3ZjFlOWU2MDI5
ZTE4MTM0ZDBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMy0xMCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUgYSBzdXBlcmNsYXNz
IG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2Vw
dCBvZiBjdXN0b20gZWxlbWVudHMuCisgICAgICAgIFdpdGggdGhlIHR5cGUgZXh0ZW5zaW9uLCBl
YWNoIGN1c3RvbSBlbGVtZW50cyBhcmUgYWJsZSB0byBpbmhlcml0CisgICAgICAgIGZyb20gbm90
IG9ubHkgSFRNTEVsZW1lbnQsIGJ1dCBhbHNvIGFueSBIVE1MIGVsZW1lbnQuIFRvIG1ha2UgaXQg
d29yaywKKyAgICAgICAgdGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcGx1bWJpbmcuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICA9IERhdGEg
c3RydWN0dXJlOgorCisgICAgICAgIC0gTGV0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBvYmpl
Y3RzIGJlaW5nIGtleWVkIGJ5IHBhaXIgb2YgKGVsZW1lbnQKKyAgICAgICAgICBuYW1lLCBsb2Nh
bCBuYW1lKSBhcyB0aGUgc3RhbmRhcmQgcmVxdXJpZXMsIGluc3RlYWQgb2YganVzdCB1c2luZwor
ICAgICAgICAgIHNpbmdsZSBuYW1lLiBTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDb25zdHJ1
Y3Rvck1hcCBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKCkuCisKKyAgICAgICAgLSBD
cmVhdGVzIG1hcHBpbmcgZnJvbSBXcmFwcGVyVHlwZUluZm8gdG8gZWxlbWVudCBuYW1lLiAgVGhp
cyBtYXAKKyAgICAgICAgICBjYW4gYmUgbG9va2VkLXVwIGJ5IGdlbmVyYXRlZCBmdW5jdGlvbnMg
bGlrZQorICAgICAgICAgIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKCkuICBXaXRoIHRoaXMgdGFi
bGUsIFdlYktpdCBjYW4gZGV0ZXJtaW5lCisgICAgICAgICAgdGhlIGN1c3RvbSBlbGVtZW50IGxv
Y2FsIG5hbWUgb2YgZ2l2ZW4gcHJvdG90eXBlIG9iamVjdC4gU2VlICBtYWtlX25hbWVzLnBsLgor
ICAgICAgICAgIE5vdGUgdGhhdCBWOCBwcm90b3R5cGUgb2JqZWN0IGtub3dzIGFzc29jaWF0ZWQg
V3JhcHBlclR5cGVJbmZvLiBTZWUgcjE0NDg2NS4KKworICAgICAgICA9IEhvb2tpbmcgdXAgZWxl
bWVudCBsaWZlY3lsZToKKworICAgICAgICAtIENyZWF0ZSBhcHByb3ByaWF0ZSBDKysgaW5zdGFu
Y2UgZm9yIGVhY2ggY3VzdG9tIGVsZW1lbnQuICBCZWZvcmUKKyAgICAgICAgICB0aGlzIGNoYW5n
ZSwgdGhlIEMrKyBiYWNrZW5kIG9mIGN1c3RvbSBlbGVtZW50cyB3ZXJlIGFsd2F5cworICAgICAg
ICAgIEhUTUxVbmtub3duRWxlbWVudHMgb3IgSFRNTEVsZW1lbnQuICBTZWUKKyAgICAgICAgICBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBhbmQgRWxlbWVudEZhY3Rv
cmllcyBpbgorICAgICAgICAgIG1ha2VfbmFtZXMucGwuCisKKyAgICAgICAgLSBIb29rcyB1cCBl
bGVtZW50IGNvbnN0cnVjdGlvbiBhbmQgZWxlbWVudCB3cmFwcGVyIGNyZWF0aW9uIGZvcgorICAg
ICAgICAgIGN1c3RvbSBlbGVtZW50ICJiZWZvcmUiIG5vbi1jdXN0b20gY2FzZSBpbnN0ZWFkIG9m
ICJhZnRlciIKKyAgICAgICAgICB0aGF0LiBXZSBkbyB0aGlzIGJlY2F1c2UgY3VzdG9tIGVsZW1l
bnQgbmVlZHMgdG8KKyAgICAgICAgICBvdmVycmlkZSBub24tY3VzdG9tIGNhc2Ugd2hlbiBAaXMg
YXR0cmlidXRlIGlzIGdpdmVuIGZvcgorICAgICAgICAgIG90aGVyd2lzZS1ub24tY3VzdG9tIGVs
ZW1lbnRzIGxpa2UgPGRpdiBpcz14LWJhcj4uCisgICAgICAgICAgU2VlIG1ha2VfbmFtZXMucGwu
CisKKyAgICAgICAgLSBHaXZlcyBAaXMgYXR0cmlidXRlcyB0byBlbGVtZW50cyBpZiBuZWVkZWQu
IFNlZSBzZXRUeXBlRXh0ZW5zaW9uKCkgY2FsbCBzaXRlcworICAgICAgICAgIGxpa2UgRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoKSwgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnR0TlMoKSBhbmQgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50dCgpCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVs
cGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWYWxpZFByb3RvdHlwZUNoYWluKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9j
YWxOYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudEhlbHBlcnM6OmZpbmRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvQ3Vz
dG9tRWxlbWVudEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9t
RWxlbWVudEhlbHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChWOEN1c3RvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0
b21FbGVtZW50Ojp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudDo6Y29u
c3RydWN0b3JPZik6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdyYXBwZXJUeXBlVHJhaXRzKTogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpj
YWxsQXNGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldFR5cGVFeHRlbnNpb24pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6dHlwZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
Ojpsb2NhbE5hbWUpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bmFtZUluY2x1ZGVzSHlwaGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6aXNWYWxpZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kRm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Y3JlYXRlRWxlbWVudCk6CisgICAgICAg
ICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdHJ5KTog
TW92ZWQgZnJvbSBEb2N1bWVudC5jcHAgdG8gYmUgaW5saW5lZC4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRG
YWN0b3J5Q3BwRmlsZSk6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZSk6Cisg
ICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSk6CisgICAgICAgICogaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVkIEBpcyBhdHRyaWJ1dGUKKwogMjAxMy0wMy0xNCAg
QnJhbmRvbiBKb25lcyAgPGJham9uZXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBDaGVjayB0byBl
bnN1cmUgTXVsdGlzYW1wbGVSZW5kZXJidWZmZXIgY3JlYXRpb24gc3VjY2VlZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
YzVhYjM2MDA1NDczNTVmNzMwOTc4NjRlYjNjODNiOTNmYjBjYjA3ZC4uMjAyNWM2NDBmMWRmZjlk
ODFhMjFlYjAwMmU2YWNmNWQ0MDA0Y2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUxNCw2ICs1MTQsMTIgQEAgRU5E
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAordGVtcGxhdGU8PgorY2xh
c3MgV3JhcHBlclR5cGVUcmFpdHM8JHtuYXRpdmVUeXBlfSA+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJiR7djhJbnRlcmZhY2VOYW1lfTo6
aW5mbzsgfQorfTsKKwogRU5ECiAKICAgICBteSAkY3VzdG9tV3JhcCA9ICEhKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0gb3IgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCA1
NDhhNjQ3YTE5ZTUyYzMzODdlNjQ5NWJjZmI0ZjQ4ZGE1MmNmODRlLi5iNWI2ZmYzNTMzNWE3YTlk
YmEyOTEyMGMyZDliNzZhNDU4YTE4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIlY4SFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTcGFuRWxl
bWVudC5oIgogCkBAIC02MywxNyArNjQsMTMgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6
aW5pdGlhbGl6ZUNvbnN0cnVjdG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gU2VlIEZJWE1FIG9uIHRoZSBjYWxsZXIgc2lkZSBjb21t
ZW50Lgotc3RhdGljIGJvb2wgaGFzTm9CdWlsdGluc0luUHJvdG90eXBlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaHRtbFByb3RvdHlwZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQorc3Rh
dGljIGJvb2wgaGFzVmFsaWRQcm90b3R5cGVDaGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJl
cXVpcmVkQW5jZXN0b3IsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKIHsKICAgICB3aGls
ZSAoIWNoYWluLklzRW1wdHkoKSkgewotICAgICAgICBpZiAoY2hhaW4gPT0gaHRtbFByb3RvdHlw
ZSkKKyAgICAgICAgaWYgKGNoYWluID09IHJlcXVpcmVkQW5jZXN0b3IpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFjaGFpbi0+SXNPYmplY3QoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgLy8gVGhlIGludGVybmFsIGZpZWxkIGNvdW50IGluZGlj
YXRlcyB0aGUgb2JqZWN0IG1pZ2h0IGJlIGEgbmF0aXZlIGJhY2tlZCwgYnVpbHQtaW4gb2JqZWN0
LgotICAgICAgICBpZiAodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjaGFpbiktPkludGVy
bmFsRmllbGRDb3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjaGFp
biA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4pLT5HZXRQcm90b3R5cGUoKTsK
ICAgICB9CiAKQEAgLTkwLDIwICs4NywxNCBAQCBib29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpp
c1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cAogICAg
IGlmIChwcm90b3R5cGVPYmplY3QtPkhhc093blByb3BlcnR5KHY4U3RyaW5nKCJjb25zdHJ1Y3Rv
ciIsIHN0YXRlLT5jb250ZXh0KCktPkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHRE
YXRhOjpmcm9tKHN0YXRlLT5jb250ZXh0KCkpOwotICAgIC8vCi0gICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA0MzYKLSAgICAvLyAgIGRvY3Vt
ZW50LnJlZ2lzdGVyKCkgc2hvdWxkIGFsbG93IGFyYml0cmFyeSBIVE1MRWxlbWVudCBzdWJjbGFz
c3Nlcy4KLSAgICAvLyAgIEN1cnJlbnRseSBpdCBzdXBwb3J0cyBjdXN0b20gZWxlbWVudHMgd2hp
Y2ggYXJlCi0gICAgLy8gICAtIGRpcmVjdCBzdWJjbGFzc2VzIG9mIEhUTUxFbGVtZW50IG9yCi0g
ICAgLy8gICAtIHN1YmNsYXNzZXMgb2Ygb3RoZXIgY3VzdG9tIGVsZW1lbnRzCi0gICAgLy8KKyAg
ICAvLyBGSVhNRTogbm9uLUhUTUwgc3ViY2xhc3NlcyBzaG91bGQgYmUgYWxzbyBzdXBwb3J0ZWQ6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTMKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxDb25zdHJ1Y3RvciA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QocGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZSgmVjhIVE1MRWxlbWVu
dDo6aW5mbykpOwogICAgIGlmIChodG1sQ29uc3RydWN0b3IuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBodG1sUHJvdG90eXBlID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChodG1sQ29uc3RydWN0b3ItPkdldCh2OFN0cmlu
ZygicHJvdG90eXBlIiwgc3RhdGUtPmNvbnRleHQoKS0+R2V0SXNvbGF0ZSgpKSkpOwogICAgIGlm
IChodG1sUHJvdG90eXBlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghaGFzTm9CdWlsdGluc0luUHJvdG90eXBlKGh0bWxQcm90b3R5cGUsIHByb3RvdHlwZU9iamVj
dCkpCisgICAgaWYgKCFoYXNWYWxpZFByb3RvdHlwZUNoYWluKGh0bWxQcm90b3R5cGUsIHByb3Rv
dHlwZU9iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTEyMCw2ICsxMTEsMzQgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aXNGZWF0dXJl
QWxsb3dlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHJldHVybiB0cnVl
OwogfQogCitjb25zdCBRdWFsaWZpZWROYW1lKiBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExv
Y2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKQoreworICAgIGlmIChwcm90b3R5
cGUudjhWYWx1ZSgpLklzRW1wdHkoKSB8fCAhcHJvdG90eXBlLnY4VmFsdWUoKS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZpbmRMb2NhbE5hbWUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGUudjhWYWx1ZSgpKSk7Cit9CisKK1dyYXBwZXJU
eXBlSW5mbyogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRXcmFwcGVyVHlwZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2hhaW4pCit7CisgICAgd2hpbGUgKCFjaGFpbi5Jc0VtcHR5KCkgJiYgY2hh
aW4tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbk9i
amVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4pOworICAgICAgICAvLyBP
bmx5IHByb3RvdHlwZSBvYmplY3RzIG9mIG5hdGl2ZS1iYWNrZWQgdHlwZXMgaGF2ZSB0aGUgZXh0
cmEgaW50ZXJuYWwgZmllbGQgc3RvcmluZyBXcmFwcGVyVHlwZUluZm8uCisgICAgICAgIGlmICh2
OFByb3RvdHlwZUludGVybmFsRmllbGRjb3VudCA9PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVs
ZENvdW50KCkpCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlw
ZUluZm8qPihjaGFpbk9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2
OFByb3RvdHlwZVR5cGVJbmRleCkpOworICAgICAgICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQ
cm90b3R5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gVGhpcyBjYW4gcmV0
dXJuIG51bGwuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIHRha2UgdGhlIGVsZW1lbnQgbmFtZSBh
cyBpdHMgbG9jYWwgbmFtZS4KK2NvbnN0IFF1YWxpZmllZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxw
ZXJzOjpmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pCit7CisgICAg
V3JhcHBlclR5cGVJbmZvKiB0eXBlID0gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRXcmFwcGVy
VHlwZShjaGFpbik7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gZmluZEhUTUxUYWdOYW1lT2ZWOFR5cGUodHlwZSk7Cit9CiAKICNlbmRpZiAvLyBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9DdXN0b21FbGVtZW50SGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3Vz
dG9tRWxlbWVudEhlbHBlcnMuaAppbmRleCAwOGQxYmNiYzE4OTU2OTVkZGFhYmRhZDBmYmYzZjhi
OWQzMWFiYmE1Li5mMjkwZjU0ODgwZDA5NzQyNTcyYTlkZDRmODQyOTcwZWMwYmI1MTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgK
QEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShDVVNUT01f
RUxFTUVOVFMpCiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcjsKK2NsYXNzIFF1YWxp
ZmllZE5hbWU7CiBjbGFzcyBTY3JpcHRTdGF0ZTsKIAogY2xhc3MgQ3VzdG9tRWxlbWVudEhlbHBl
cnMgewpAQCAtNDYsOCArNDcsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVDb25zdHJ1Y3RvcldyYXBwZXIoQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiwgY29uc3QgU2Ny
aXB0VmFsdWUmIHByb3RvdHlwZSwgU2NyaXB0U3RhdGUqKTsKICAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkUHJvdG90eXBlUGFyYW1ldGVyKGNvbnN0IFNjcmlwdFZhbHVlJiwgU2NyaXB0U3RhdGUqKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0ZlYXR1cmVBbGxvd2VkKFNjcmlwdFN0YXRlKik7CisgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmRMb2NhbE5hbWUoY29uc3QgU2NyaXB0VmFsdWUm
IHByb3RvdHlwZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0ZlYXR1cmVBbGxvd2VkKHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+KTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBmaW5kV3JhcHBl
clR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKTsKKyAgICBzdGF0aWMgY29uc3QgUXVh
bGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluKTsK
IH07CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAKaW5kZXggZTViMzRiZWI3ODA2YjUy
ZjIyZTY0MjdmYmRlMWJhYmM5Mzk1ODhlOS4uZjBhMTVkZDg5ZGUzOGZiMWNlMWU2Yzk3ZGQwMzAx
ODIyZGRkODQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0
b21FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVs
ZW1lbnQuY3BwCkBAIC00MiwyOSArNDIsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgV3JhcHBlclR5cGVJbmZvKiBmaW5kV3JhcHBlclR5cGVPZih2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY2hhaW4pCi17Ci0gICAgd2hpbGUgKCFjaGFpbi5Jc0VtcHR5KCkgJiYgY2hhaW4tPklz
T2JqZWN0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbk9iamVjdCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY2hhaW4pOwotICAgICAgICBpZiAodjhQcm90
b3R5cGVJbnRlcm5hbEZpZWxkY291bnQgPT0gY2hhaW5PYmplY3QtPkludGVybmFsRmllbGRDb3Vu
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V3JhcHBlclR5cGVJbmZv
Kj4oY2hhaW5PYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhQcm90
b3R5cGVUeXBlSW5kZXgpKTsKLSAgICAgICAgY2hhaW4gPSBjaGFpbk9iamVjdC0+R2V0UHJvdG90
eXBlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxlbWVudD4gaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdy
YXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7Ci0KLSAg
ICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6Y29uc3RydWN0b3JPZihpbXBsLmdldCgpKTsKLSAgICBpZiAoIWNvbnN0
cnVjdG9yKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFsdWUgPSBX
ZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KHRvSFRNTEVsZW1lbnQoaW1wbC5nZXQo
KSkpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgICAgICBpZiAoIXdyYXBwZXJWYWx1
ZS5Jc0VtcHR5KCkgJiYgd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB9CisgICAgUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcHJvdGVjdGVkQ29uc3RydWN0b3IoY29uc3RydWN0b3IpOwog
CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIGFuZCByZWdpc3RlcmVkIGxpZmVjeWNsZSBjYWxsYmFj
a3Mgc2hvdWxkIGJlIHZpc2libGUgb25seSBmcm9tIG1haW4gd29ybGQuCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZCBvbmNlIGVhY2ggY3VzdG9tIGVsZW1lbnQgaGFzIGl0
cyBvd24gRnVuY3Rpb25UZW1wbGF0ZQpAQCAtNzYsMTIgKzU3LDEyIEBAIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxlbWVu
dD4gaW1wbCwKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KGNvbnN0cnVjdG9y
LmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25zdHJ1Y3RvclZhbHVlID0gV2ViQ29yZTo6dG9WOChwcm90ZWN0ZWRDb25zdHJ1Y3Rv
ci5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAoY29uc3RydWN0b3JW
YWx1ZS5Jc0VtcHR5KCkgfHwgIWNvbnN0cnVjdG9yVmFsdWUtPklzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjb25zdHJ1Y3RvcldhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29u
c3RydWN0b3JWYWx1ZSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90b3R5cGUgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yV2FwcGVyLT5HZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKSkpOwotICAgIFdyYXBwZXJUeXBlSW5mbyogdHlw
ZUluZm8gPSBmaW5kV3JhcHBlclR5cGVPZihwcm90b3R5cGUpOworICAgIFdyYXBwZXJUeXBlSW5m
byogdHlwZUluZm8gPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHByb3Rv
dHlwZSk7CiAgICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhD
dXN0b21FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1l
bnQuaAppbmRleCA3MDBkOGI1MTk5YWI0MmI2ZGNhZmI5ODA4MTQ0NzY2ZGE5NjZkMDM2Li5mNzc3
N2M1ZGE0MjliYTBmZGZiNWNmMDZiOWFiYTk4MGJhNGM3MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaApAQCAtMzEsNiArMzEsOSBAQAogI2lmbmRl
ZiBWOEN1c3RvbUVsZW1lbnRfaAogI2RlZmluZSBWOEN1c3RvbUVsZW1lbnRfaAogCisjaW5jbHVk
ZSAiQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEhUTUxFbGVtZW50LmgiCkBA
IC00MCw0NSArNDMsMzEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsK
K2NsYXNzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcjsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCiAKIGNsYXNzIFY4Q3VzdG9tRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUq
ID0gMCk7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChFbGVtZW50Kiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Cisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChFbGVtZW50Kiwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yT2YoRWxlbWVudCopOwogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxl
bWVudD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiwgdjg6Oklzb2xhdGUqKTsKIH07CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhDdXN0b21FbGVtZW50Ojp0b1Y4KEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0KLWlubGluZSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoRWxlbWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFBhc3NSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvciwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6Omdl
dFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKLSAgICByZXR1cm4gVjhDdXN0b21F
bGVtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgcmV0dXJuIFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGNvbnN0cnVjdG9yLCBpc29sYXRlKTsKIH0KIAotI2Vsc2UgLy8gRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKLQotY2xhc3MgVjhDdXN0b21FbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklz
b2xhdGUqID0gMCk7Ci19OwotCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBIVE1MQ3Vz
dG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitpbmxpbmUgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IFY4Q3VzdG9tRWxlbWVudDo6Y29uc3RydWN0b3JPZihF
bGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVybiB3cmFwKHRvSFRNTFVua25vd25FbGVtZW50
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGlmIChDdXN0b21FbGVtZW50
UmVnaXN0cnkqIHJlZ2lzdHJ5ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSkKKyAg
ICAgICAgcmV0dXJuIHJlZ2lzdHJ5LT5maW5kRm9yKGVsZW1lbnQpOworICAgIHJldHVybiAwOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggNDU2ZTAwMjAxOWZmYWI1NDJmZGVi
NWZjYWU3Njg4Zjc5NTBhYTM1Ni4uOTVjZTc3YWYxNTA5YzlkZDFkMTRlMTkwZTIxNzU0MGI5OWQ1
N2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgK
QEAgLTE3OCw2ICsxNzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXcmFwcGVy
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0ge3Y4RE9NTm9kZUNsYXNzSWQsIGxpZmV0aW1l
fTsKICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiAgICAgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRWxlbWVudFR5cGU+CisgICAgY2xhc3MgV3JhcHBlclR5cGVUcmFpdHMgeworICAgICAg
ICAvLyBzcGVjaWFsaXplZCBjbGFzc2VzIGhhdmUgdGhpZXIgb3duIGZ1bmN0aW9ucywgd2hpY2gg
YXJlIGdlbmVyYXRlZCBieSBiaW5kaW5nIGdlbmVyYXRvci4KKyAgICB9OwogfQogCiAjZW5kaWYg
Ly8gV3JhcHBlclR5cGVJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0
b20uY3BwCmluZGV4IDhlZDc5Yjg1ZTA2ODViZTEwNDA5Yzc1YzUzYTUwMjM4ZWU4MmZjNjkuLjU1
ZTM4Y2U5OTVmOTNmZmU2YTUyZDJlY2VmNGRlZjA5NjRmOTU2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNhbGxBc0Z1bmN0aW9uQ2Fs
bGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gaW1wbC0+Y3JlYXRl
RWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7Ci0gICAgcmV0dXJuIFY4Q3VzdG9tRWxlbWVudDo6dG9WOChlbGVtZW50LmdldCgpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIFY4Q3VzdG9tRWxlbWVu
dDo6d3JhcChlbGVtZW50LmdldCgpLCBhcmdzLkhvbGRlcigpLCBpbXBsLCBhcmdzLkdldElzb2xh
dGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYzk3NWQ2YzUzMjJmNDVmMjY1
YWIyZDdiN2JjOTUzMjE0Y2UxMDE2OC4uMzQzMTk3MThlN2FjNDlmMGY1OGE3ZmZjOTNmZWFkOTU2
YzVlMDNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTM3LDIxICszNywyNSBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBTY3JpcHRW
YWx1ZSYgcHJvdG90eXBlKQorUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKQogewotICAg
IFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNyZWF0ZWQgPSBhZG9wdFJlZihuZXcg
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKGRvY3VtZW50LCBuYW1lKSk7CisgICAgQVNTRVJUKEN1
c3RvbUVsZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKHByb3RvdHlwZSwg
c3RhdGUpKTsKKyAgICBBU1NFUlQobG9jYWxOYW1lID09IHR5cGVOYW1lIHx8IGxvY2FsTmFtZSA9
PSAqQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5hbWUocHJvdG90eXBlKSk7CisgICAg
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5ldyBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3IoZG9jdW1lbnQsIHR5cGVOYW1lLCBsb2NhbE5hbWUpKTsK
ICAgICBpZiAoIUN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbml0aWFsaXplQ29uc3RydWN0b3JXcmFw
cGVyKGNyZWF0ZWQuZ2V0KCksIHByb3RvdHlwZSwgc3RhdGUpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7CiB9CiAKLUN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcjo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKK0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
dHlwZU5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSkKICAgICA6IENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50KQotICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBt
X3R5cGVOYW1lKHR5cGVOYW1lKQorICAgICwgbV9sb2NhbE5hbWUobG9jYWxOYW1lKQogewogfQog
CkBAIC02Myw3ICs2NywxNiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZShtX25hbWUs
IGRvY3VtZW50KCkpOworICAgIGlmIChtX2xvY2FsTmFtZSAhPSBtX3R5cGVOYW1lKQorICAgICAg
ICByZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KG1fbG9j
YWxOYW1lLCBkb2N1bWVudCgpKSwgbV90eXBlTmFtZS5sb2NhbE5hbWUoKSk7CisgICAgcmV0dXJu
IEhUTUxFbGVtZW50OjpjcmVhdGUobV90eXBlTmFtZSwgZG9jdW1lbnQoKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8RWxlbWVudD4gc2V0VHlwZUV4dGVuc2lvbihQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbikKK3sKKyAgICBpZiAoIXR5cGVF
eHRlbnNpb24uaXNFbXB0eSgpKQorICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjppc0F0dHIsIHR5cGVFeHRlbnNpb24pOworICAgIHJldHVybiBlbGVtZW50OwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXgg
Y2UxYmVlMmMyYzgxYmE2M2U0YzQ1NzgwYmM3NGE4NmYxMzYxOTE4YS4uMGVlZDc5YWU1ODM5YjNj
OGQzZDQ2YzJlMTFjMjg4ZTJmZmE4ODhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50Q29uc3RydWN0b3IuaApAQCAtNDgsMjEgKzQ4LDI1IEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBTY3JpcHRTdGF0ZTsKIGNsYXNzIFNjcmlwdFZhbHVlOwogCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IHNldFR5cGVFeHRlbnNpb24oUGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlRXh0ZW5zaW9uKTsKKwogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiAsIHB1YmxpYyBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1bWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlKFNjcmlwdFN0YXRl
KiwgRG9jdW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBTY3JpcHRWYWx1ZSYpOwogCiAgICAgdmlydHVhbCB+
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KLSAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Cisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CisgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdHlwZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGVOYW1lOyB9CisgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbE5hbWU7IH0KIAog
ICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpIGNvbnN0OwotICAgIAorCiBw
cml2YXRlOgotICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqLCBj
b25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxO
YW1lKTsKIAotICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOworICAgIFF1YWxpZmllZE5hbWUgbV90
eXBlTmFtZTsKKyAgICBRdWFsaWZpZWROYW1lIG1fbG9jYWxOYW1lOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCA0ODg2M2JiMTVh
MDA4ZmVlNDUwODE5YzhkNmVlMjIxOGFiYTdiZDc3Li42YzI4ZjI4MTkyM2I4YmZmNzM0ZDJjMjc2
ODA5M2U5MWUyMzMxOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxV
bmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCkBAIC02MiwxOCArNjMsMTUgQEAgQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Ojp+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCkKIHsKIH0KIAotUGFzc1JlZlB0
cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Y29uc3Ry
dWN0b3JPZihFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIGlubGluZSBib29sIG5hbWVJbmNsdWRl
c0h5cGhlbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeT4gc2VsZiA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lzdHJ5KCk7Ci0g
ICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2VsZi0+ZmluZChl
bGVtZW50LT50YWdRTmFtZSgpKTsKKyAgICBzaXplX3QgaHlwaGVuUG9zaXRpb24gPSBuYW1lLmZp
bmQoJy0nKTsKKyAgICByZXR1cm4gKGh5cGhlblBvc2l0aW9uICE9IG5vdEZvdW5kKTsKIH0KIAog
Ym9vbCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmlzVmFsaWROYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIHsKLSAgICBzaXplX3QgaHlwaGVuUG9zaXRpb24gPSBuYW1lLmZpbmQoJy0nKTsK
LSAgICBpZiAoaHlwaGVuUG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgaWYgKCFuYW1lSW5jbHVk
ZXNIeXBoZW4obmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoVmVjdG9yPEF0b21pY1N0cmluZz4sIHJlc2VydmVkTmFtZXMsICgpKTsKQEAgLTEx
MiwxMSArMTEwLDYgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgICAgICAKLSAgICBpZiAoZmluZChuZXdOYW1lKSkgewotICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBTY3Jp
cHRWYWx1ZSBwcm90b3R5cGVWYWx1ZTsKICAgICBpZiAoIW9wdGlvbnMuZ2V0KCJwcm90b3R5cGUi
LCBwcm90b3R5cGVWYWx1ZSkpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGUgZGVm
YXVsdCB2YWx1ZSBoYW5kbGluZy4KQEAgLTEzMiwzMyArMTI1LDcxIEBAIFBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnJlZ2lzdGVyRWxl
bWVudChTY3JpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KKworICAgIGlmIChtX25hbWVzLmNvbnRhaW5zKG5ld05hbWUpKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGxvY2FsTmFtZUZvdW5kID0gQ3VzdG9tRWxlbWVudEhl
bHBlcnM6OmZpbmRMb2NhbE5hbWUocHJvdG90eXBlVmFsdWUpOworICAgIFF1YWxpZmllZE5hbWUg
bG9jYWxOYW1lVG9Vc2UgPSBsb2NhbE5hbWVGb3VuZCA/ICpsb2NhbE5hbWVGb3VuZCA6IG5ld05h
bWU7CisgICAgaWYgKGZpbmQobmV3TmFtZSwgbG9jYWxOYW1lVG9Vc2UpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAKLSAg
ICAvLyBBbiBzY3JpcHQgZXhlY3V0aW9uIGNvdWxkIGhhcHBlbiBpbiBpc1ZhbGlkUHJvdG90eXBl
UGFyYW1ldGVyKCksIHdoaWNoIGtpbGxzIHRoZSBkb2N1bWVudC4KKyAgICAvLyBBIHNjcmlwdCBl
eGVjdXRpb24gY291bGQgaGFwcGVuIGluIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hp
Y2gga2lsbHMgdGhlIGRvY3VtZW50LgogICAgIGlmICghZG9jdW1lbnQoKSkgewogICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLCBkb2N1bWVudCgpLCBuZXdOYW1lLCBwcm90b3R5
cGVWYWx1ZSk7CisgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0
b3IgPSBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZShzdGF0ZSwgZG9jdW1lbnQoKSwg
bmV3TmFtZSwgbG9jYWxOYW1lVG9Vc2UsIHByb3RvdHlwZVZhbHVlKTsKICAgICBpZiAoIWNvbnN0
cnVjdG9yKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICAgICAgCi0gICAgbV9jb25zdHJ1Y3RvcnMuYWRkKGNvbnN0cnVjdG9y
LT5uYW1lKCkuaW1wbCgpLCBjb25zdHJ1Y3Rvcik7CisgICAgbV9jb25zdHJ1Y3RvcnMuYWRkKHN0
ZDo6bWFrZV9wYWlyKGNvbnN0cnVjdG9yLT50eXBlTmFtZSgpLCBjb25zdHJ1Y3Rvci0+bG9jYWxO
YW1lKCkpLCBjb25zdHJ1Y3Rvcik7CisgICAgbV9uYW1lcy5hZGQoY29uc3RydWN0b3ItPnR5cGVO
YW1lKCkpOworCiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCi1QYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kRm9yKEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lzdHJ5KCkgPT0gdGhp
cyk7CisKKyAgICAvLyBNb3N0IGVsZW1lbnRzIGNhbiBiZSByZWplY3RlZCB0aGlzIHF1aWNrIHNj
cmVlbmluZy4KKyAgICBpZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihlbGVtZW50LT50YWdOYW1lKCkp
ICYmICFlbGVtZW50LT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFF1YWxpZmllZE5hbWUgaWRWYWx1ZShudWxsQXRvbSwgZWxlbWVudC0+
Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSSk7CisgICAgcmV0dXJuIGZpbmQoaWRWYWx1ZSwgZWxlbWVudC0+dGFnUU5hbWUoKSk7Cit9
CisKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZU5hbWUsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGxvY2FsTmFtZSkgY29uc3QKIHsKLSAgICBDb25zdHJ1Y3Rvck1hcDo6Y29uc3RfaXRl
cmF0b3IgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5maW5kKG5hbWUuaW1wbCgpKTsKLSAgICByZXR1
cm4gKGZvdW5kICE9IG1fY29uc3RydWN0b3JzLmVuZCgpKSA/IGZvdW5kLT52YWx1ZSA6IDA7Cisg
ICAgQ29uc3RydWN0b3JNYXA6OmNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMu
ZW5kKCk7CisgICAgaWYgKCF0eXBlTmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkpCisgICAgICAg
IGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGQ6Om1ha2VfcGFpcih0eXBlTmFtZSwgbG9j
YWxOYW1lKSk7CisgICAgaWYgKGZvdW5kID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQorICAgICAg
ICBmb3VuZCA9IG1fY29uc3RydWN0b3JzLmZpbmQoc3RkOjptYWtlX3BhaXIobG9jYWxOYW1lLCBs
b2NhbE5hbWUpKTsKKyAgICBpZiAoZm91bmQgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBmb3VuZC0+dmFsdWU7CiB9CiAKLVBhc3NSZWZQdHI8
RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbikgY29uc3QKIHsKLSAgICBpZiAoUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZm91bmQgPSBmaW5kKG5hbWUpKQotICAgICAgICBy
ZXR1cm4gZm91bmQtPmNyZWF0ZUVsZW1lbnQoKTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0
eXBlTmFtZSA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHR5cGVFeHRlbnNpb24sIGxvY2FsTmFt
ZS5uYW1lc3BhY2VVUkkoKSk7CisgICAgaWYgKFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGZvdW5kID0gZmluZCh0eXBlTmFtZSwgbG9jYWxOYW1lKSkgeworICAgICAgICBSZWZQdHI8
RWxlbWVudD4gY3JlYXRlZCA9IGZvdW5kLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgIGlmICgh
dHlwZU5hbWUubG9jYWxOYW1lKCkuaXNFbXB0eSgpICYmIGxvY2FsTmFtZSAhPSB0eXBlTmFtZSkK
KyAgICAgICAgICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9uKGNyZWF0ZWQsIHR5cGVFeHRlbnNp
b24pOworICAgICAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgcmV0
dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApp
bmRleCAyMDgyY2Q3NjIyY2Y2MmVhYmUxMzZkNmFmYjI3YTRkYWE2MmU3MjdhLi4xMDJhYTNkZTM4
YzIxMTY4ZTBjN2I3MGM2NTI4YTJhMWE5MWRlNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNTksMTggKzYwLDIwIEBAIHB1YmxpYzoKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KCk7CiAKICAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJF
bGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IGZpbmRGb3IoRWxlbWVudCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBmaW5kKGNvbnN0IFF1YWxpZmllZE5hbWUmIGVsZW1lbnROYW1lLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4g
Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZUV4dGVuc2lvbikgY29uc3Q7CisKICAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gY29uc3RydWN0b3JPZihFbGVtZW50Kik7Ci0gICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIGlzVmFsaWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiwgUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gPkNvbnN0cnVjdG9yTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6
OnBhaXI8UXVhbGlmaWVkTmFtZSwgUXVhbGlmaWVkTmFtZT4sIFJlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+ID4gQ29uc3RydWN0b3JNYXA7CisgICAgdHlwZWRlZiBIYXNoU2V0PFF1YWxp
ZmllZE5hbWU+IE5hbWVTZXQ7CiAKICAgICBDb25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9yczsK
KyAgICBOYW1lU2V0IG1fbmFtZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAzMDE4M2MyNmE1MzQ1YWE5Nzk2ODk4Nzg4NGNmZWM1NDlk
Y2Q0YzRmLi5lMWJkN2E4OTEzNjBkODBmYTYwZDZmODVjZGM0M2IzNmIzOWQwMTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0Miw2ICs4NDIsNDEgQEAgUGFzc1JlZlB0cjxFbGVtZW50
PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkMKIH0KIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCitQYXNzUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghaXNWYWxpZE5hbWUobG9jYWxOYW1lKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQ0hBUkFDVEVSX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG1f
cmVnaXN0cnkpIHsKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlZCA9IG1f
cmVnaXN0cnktPmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1l
LCB4aHRtbE5hbWVzcGFjZVVSSSksIHR5cGVFeHRlbnNpb24pKQorICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIHNldFR5cGVFeHRlbnNpb24oY3JlYXRlRWxl
bWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7IC8vICBGSVhNRTogdGFrZSBjYXJl
IG9mIEBpcworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50
TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlm
aWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CisgICAgaWYgKCFwYXJzZVF1
YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1l
LCBuYW1lc3BhY2VVUkkpOworICAgIGlmICghaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhx
TmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBpZiAobV9yZWdpc3RyeSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxF
bGVtZW50PiBjcmVhdGVkID0gbV9yZWdpc3RyeS0+Y3JlYXRlRWxlbWVudChxTmFtZSwgdHlwZUV4
dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlZDsKKyAgICB9CisKKyAgICByZXR1
cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZp
ZWROYW1lLCBlYyksIHR5cGVFeHRlbnNpb24pOworfQorCiBQYXNzUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRT
dGF0ZSogc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgcmV0dXJuIHJlZ2lzdGVyRWxlbWVudChzdGF0ZSwgbmFtZSwgRGljdGlvbmFyeSgp
LCBlYyk7CkBAIC04NTgsMTEgKzg5Myw2IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0CiAgICAg
ICAgIG1fcmVnaXN0cnkgPSBhZG9wdFJlZihuZXcgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KHRoaXMp
KTsKICAgICByZXR1cm4gbV9yZWdpc3RyeS0+cmVnaXN0ZXJFbGVtZW50KHN0YXRlLCBuYW1lLCBv
cHRpb25zLCBlYyk7CiB9Ci0KLVBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBEb2N1
bWVudDo6cmVnaXN0cnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlZ2lzdHJ5OwotfQogI2Vu
ZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA0OGE1YTIxYmViZjA1MzcxODE2MzBlMzc3ZmNhNTdiODQzMzMxOWRkLi5mYmNhMGMy
YjQ5YmYzZTBiZjE2MTRmZmJlN2E5MzQ2YWZhYTFlZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTE2MCw5ICsxMTYwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lv
biwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVu
dE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVs
ZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IHJlZ2lzdHJ5KCkgY29uc3Q7CisgICAg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiByZWdpc3RyeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cnkuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBhZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xs
QW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShWZWN0b3I8RmxvYXRRdWFkPiYsIFJlbmRlck9i
amVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggY2FhNThjZjMwMGJjMzljOGQ1MDE3
NjE4MTRiYzRlNzJjY2IwNWNlOS4uYTRmMDUzYzkwMTYyYzRjZDEwMTdmYTZlNTY0NzFkN2VkMzNh
M2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0zNjMsNiArMzYzLDkgQEAKICNpZiBk
ZWZpbmVkKEVOQUJMRV9DVVNUT01fRUxFTUVOVFMpICYmIEVOQUJMRV9DVVNUT01fRUxFTUVOVFMK
ICAgICBbVjhFbmFibGVkQXRSdW50aW1lPWN1c3RvbURPTUVsZW1lbnRzLCBDb25kaXRpb25hbD1D
VVNUT01fRUxFTUVOVFMsIEltcGxlbWVudGVkQXM9cmVnaXN0ZXJFbGVtZW50LCBDYWxsV2l0aD1T
Y3JpcHRTdGF0ZV0KICAgICBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Igd2Via2l0UmVnaXN0ZXIo
aW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVs
ZW1lbnQoaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmdd
IERPTVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1Jl
dHVybk5ld09iamVjdF0gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51
bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0NQUCkgJiYgTEFO
R1VBR0VfQ1BQCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDA0M2EzODI0MDhjYzQxNzAx
NmNmNDAyZjY0NzIxNDlmYjk1Y2NkOTYuLmI5MTAzZTU0ZmUxNzdmZjNjMTU4OGMyMTNkMGEzMTk3
ZmUzOGYwMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC04MjMsNiArODIzLDExIEBA
IHByaW50IEYgPDxFTkQKICNpbmNsdWRlICJDb250ZXh0RmVhdHVyZXMuaCIKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQor
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeS5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
IHx8IEVOQUJMRShWSURFTykKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCkBAIC04OTYsNiArOTAxLDE2IEBAIEVORAogfQogCiBwcmludCBGIDw8RU5ECisjaWYg
RU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBpZiAoZG9jdW1lbnQtPnJlZ2lzdHJ5KCkpIHsK
KyAgICAgICAgaWYgKFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9y
ID0gZG9jdW1lbnQtPnJlZ2lzdHJ5KCktPmZpbmQobnVsbFFOYW1lKCksIHFOYW1lKSkgeworICAg
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjb25zdHJ1Y3Rvci0+Y3JlYXRlRWxl
bWVudCgpOworICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmlzJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4oZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoIWdGdW5jdGlvbk1hcCkKICAgICAgICAgY3Jl
YXRlRnVuY3Rpb25NYXAoKTsKICAgICBpZiAoQ29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbiA9
IGdGdW5jdGlvbk1hcC0+Z2V0KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpIHsKQEAgLTkxMiwx
MSArOTI3LDcgQEAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7CiBwcmlu
dCBGIDw8RU5ECiAgICAgfQogCi1FTkQKLTsKLXByaW50IEYgIiAgICByZXR1cm4gJHBhcmFtZXRl
cnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1bWVudCk7XG4iOwot
Ci1wcmludCBGIDw8RU5ECisgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNl
TmFtZX06OmNyZWF0ZShxTmFtZSwgZG9jdW1lbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkBAIC0xMTcyLDkgKzExODMsMTIgQEAgRU5ECiA7CiAgICAgfSBlbHNpZiAoJHdyYXBwZXJG
YWN0b3J5VHlwZSBlcSAiVjgiKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKLSNpbmNsdWRlICJW
OEN1c3RvbUVsZW1lbnQuaCIKICNpbmNsdWRlICJWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50LmgiCiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorI2luY2x1ZGUgIlY4Q3VzdG9t
RWxlbWVudC5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx2OC5oPgogRU5ECiA7CkBAIC0xMjQ0LDYg
KzEyNTgsMTkgQEAgRU5ECiAKICAgICBwcmludCBGIDw8RU5ECiAgICAgfQorRU5ECis7CisgICAg
aWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAgICBwcmludCBGIDw8RU5E
CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBpZiAoUGFzc1JlZlB0cjxDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gVjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1
Y3Rvck9mKGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKGVs
ZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xhdGUpOworI2VuZGlmCitF
TkQKKzsKKyAgICB9CisKKyAgICBwcmludCBGIDw8RU5ECiAgICAgQ3JlYXRlJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRlV3JhcHBlckZ1bmN0aW9uID0g
bWFwLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgIGlmIChjcmVhdGVXcmFw
cGVyRnVuY3Rpb24pCiBFTkQKQEAgLTEyNzUsMTEgKzEzMDIsNiBAQCBFTkQKICAgICByZXR1cm4g
VjhTVkdFbGVtZW50OjpjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiBFTkQKIDsKLSAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCIpIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICByZXR1cm4gVjhDdXN0
b21FbGVtZW50Ojp3cmFwKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci1FTkQK
LTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKICAgICByZXR1
cm4gd3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC0xMjg5LDEyICsxMzExLDQ4IEBAIEVORAogICAg
IH0KICAgICBwcmludCBGIDw8RU5ECiB9CitFTkQKKzsKKworICAgIGlmICgkd3JhcHBlckZhY3Rv
cnlUeXBlIGVxICJWOCIpIHsKKyAgICAgICAgcHJpbnQgRiA8PEVORAorCitjb25zdCBRdWFsaWZp
ZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUpCit7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFdyYXBw
ZXJUeXBlSW5mbyosIGNvbnN0IFF1YWxpZmllZE5hbWUqPiBUeXBlTmFtZU1hcDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFR5cGVOYW1lTWFwLCBtYXAsICgpKTsKKyAgICBpZiAobWFwLmlzRW1w
dHkoKSkgeworRU5ECis7CisKKyAgICAgICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJWVu
YWJsZWRUYWdzKSB7CisgICAgICAgICAgICBpZiAoIXVzZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWdO
YW1lKSkgeworICAgICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3sk
dGFnTmFtZX17Y29uZGl0aW9uYWx9OworICAgICAgICAgICAgICAgIGlmICgkY29uZGl0aW9uYWwp
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgi
IC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsK
KyAgICAgICAgICAgICAgICAgICAgcHJpbnQgRiAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
OworICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIG15ICRKU0ludGVyZmFjZU5h
bWUgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e0pTSW50ZXJmYWNlTmFtZX07CisgICAgICAgICAg
ICAgICAgcHJpbnQgRiAiICAgICAgIG1hcC5zZXQoV3JhcHBlclR5cGVUcmFpdHM8JHtKU0ludGVy
ZmFjZU5hbWV9Pjo6aW5mbygpLCAmJHt0YWdOYW1lfVRhZyk7XG4iOworCisgICAgICAgICAgICAg
ICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBGICIjZW5k
aWZcbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcHJpbnQgRiA8PEVORAorICAgIH0KKworICAgIHJldHVybiBtYXAuZ2V0KHR5cGUpOwog
fQogCiBFTkQKIDsKKyAgICB9CiAKKyAgICBwcmludCBGICJ9XG5cbiI7CiAgICAgcHJpbnQgRiAi
I2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCiAgICAgY2xvc2Ug
RjsKQEAgLTEzNDUsNiArMTQwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50OwogCisgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSogZmluZCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdOYW1lT2ZWOFR5cGUoY29uc3QgV3JhcHBl
clR5cGVJbmZvKik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAg
aW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RGlyZWN0V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5k
ZXggMTU0YzAzMzQ5ZmE2NDVjY2IyNjE1ZGYyYmI5NGVlYTM0ODM3ZWVjNS4uNmM2NzU3ZDE0YTc4
ODJkMWY5ZTA5ZjNkOWNiNzA3MDU5MjNjMjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KQEAgLTEyNiw2ICsxMjYsNyBAQCBodHRwX2VxdWl2CiBpZAogaW5j
cmVtZW50YWwKIGluZGV0ZXJtaW5hdGUKK2lzCiBpc21hcAogaXRlbWlkCiBpdGVtcHJvcApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGIxYjliMTg4MTg0NDczOTM4ZTYwMzMxNDg5OWE1YzFhMWM3ZTkyYmQuLjVjZTg4M2MzYzkx
Nzc4OTFhYTU1MTA3OGI3MTY4MmQ5MzBkYTNiNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
My0wMy0xMCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
W0N1c3RvbSBFbGVtZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUg
YSBzdXBlcmNsYXNzIG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rl
ci1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLWJhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRtbDog
QWRkZWQuCisKIDIwMTMtMDMtMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLiBFeHBhbmRlZCBz
dXBwcmVzc2lvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1
bWVudC1yZWdpc3Rlci1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
dXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IGZmYjUyODNk
YWMyYTdkZWZiNjFjNTc3ZThhNGYxYjljYWViNmYyYzcuLjFjNDkyMmYzMDA3ZGM2ZDQ5MTVkZTVi
ZWVjNzg1ZDk0Mjg4MmJkOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAt
MTQsNyArMTQsNiBAQCBQQVNTIGRvY3VtZW50LnJlZ2lzdGVyKCdYLUZPTycsIGNyZWF0ZVJlZ2lz
dGVyUGFyYW10ZXJzKCkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcgogUEFTUyBkb2N1bWVudC5yZWdp
c3RlcigneC1iYWQtYScsIHsgcHJvdG90eXBlOiBIVE1MRWxlbWVudC5wcm90b3R5cGUgfSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4K
IFBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWInLCB7IHByb3RvdHlwZToge30gfSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4K
IFBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWMnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNy
ZWF0ZShEb2N1bWVudC5wcm90b3R5cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxp
ZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGRvY3VtZW50LnJlZ2lzdGVyKCd4
LWJhZC1kJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3Rv
dHlwZSkgfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4
Y2VwdGlvbiAxMS4KIFBBU1MgZm9vQ29uc3RydWN0b3IoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlv
bi4uCiBQQVNTIGNyZWF0ZWRGb28uX19wcm90b19fIGlzIGZvb0NvbnN0cnVjdG9yLnByb3RvdHlw
ZQogUEFTUyBjcmVhdGVkRm9vLmNvbnN0cnVjdG9yIGlzIGZvb0NvbnN0cnVjdG9yCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNp
Yy5odG1sCmluZGV4IGY1Yjc2OTlkZjgzZjUwYmFmZjk1NTIyODNmMzhlYTNmOWNhNGQ1NzAuLmI1
ODhjZmU5ZjdmOTMxNDBmMTdiY2EyZTc5ODBkYzEzOTc2ZjA2MzIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1s
CkBAIC0zOSw4ICszOSw2IEBAIHNob3VsZFRocm93KCJkb2N1bWVudC5yZWdpc3RlcigneC1iYWQt
YScsIHsgcHJvdG90eXBlOiBIVE1MRWxlbWVudC5wcm90b3R5cGUgfSkiCiBzaG91bGRUaHJvdygi
ZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWInLCB7IHByb3RvdHlwZToge30gfSkiLCAiJ0Vycm9y
OiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSciKTsKIC8vIEJhZCBwcm90b3R5
cGU6IHdyb25nIF9fcHJvdG9fXwogc2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJh
ZC1jJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoRG9jdW1lbnQucHJvdG90eXBlKSB9KSIs
ICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwotLy8gQnVn
IDExMDQzNiAtIEVsZW1lbnRzIG90aGVyIHRoYW4gSFRNTEVtZW1lbnQgc2hvdWxkIGJlIGFsbG93
ZWQgYXMgYSBzdXBlcmNsYXNzLgotc2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJh
ZC1kJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlw
ZSkgfSkiLCAiJ0Vycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSciKTsK
IC8vIENhbGwgYXMgZnVuY3Rpb24KIHNob3VsZFRocm93KCJmb29Db25zdHJ1Y3RvcigpIiwgIidU
eXBlRXJyb3I6IERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiciKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9j
dW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUzYWEwYjMzYTA4YWQzYWJiZDQ1NzM1OTEyZDRmOWM4ZTFlODkz
MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1l
bnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY3IEBA
CitUZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0
aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVh
dGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlKSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElu
dmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBmb29OZXdlZC5vdXRlckhU
TUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vTmV3ZWQgaW5zdGFuY2VvZiBmb29Db25z
dHJ1Y3RvciAmJiBmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IGlzIHRydWUKK1BBU1Mg
Zm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgZmFsc2UKK1BBU1MgYmFy
TmV3ZWQub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGJhck5ld2VkIGlu
c3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgJiYgYmFyTmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRF
bGVtZW50IGlzIHRydWUKK1BBU1MgaXNGb3JtQ29udHJvbChiYXJOZXdlZCkgaXMgdHJ1ZQorUEFT
UyBiYXpOZXdlZC5vdXRlckhUTUwgaXMgJzx4LWJhej48L3gtYmF6PicKK1BBU1MgYmF6TmV3ZWQg
aW5zdGFuY2VvZiBiYXpDb25zdHJ1Y3RvciAmJiBiYXpOZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVt
ZW50IGlzIHRydWUKK1BBU1MgYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQg
aXMgZmFsc2UKK1BBU1MgcXV4TmV3ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciAmJiBxdXhO
ZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgSFRN
TElucHV0RWxlbWVudCBpcyB0cnVlCitQQVNTIHF1eE5ld2VkLm91dGVySFRNTCBpcyAnPGlucHV0
IGlzPSJ4LXF1eCI+JworUEFTUyBpc0Zvcm1Db250cm9sKHF1eE5ld2VkKSBpcyB0cnVlCitQQVNT
IGZvb0NyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0
ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGJhckNyZWF0ZWQub3V0
ZXJIVE1MIGlzICc8eC1iYXI+PC94LWJhcj4nCitQQVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBi
YXJDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBiYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgYmF6Q3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJh
ej48L3gtYmF6PicKK1BBU1MgYmF6Q3JlYXRlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9yIGlz
IHRydWUKK1BBU1MgYmF6Q3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBm
YWxzZQorUEFTUyBxdXhDcmVhdGVkLm91dGVySFRNTCBpcyAnPHgtcXV4PjwveC1xdXg+JworUEFT
UyBxdXhDcmVhdGVkIGluc3RhbmNlb2YgcXV4Q29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgcXV4
Q3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyB0cnVlCitQQVNTIGRpdkZv
b0NyZWF0ZWQub3V0ZXJIVE1MIGlzICc8ZGl2IGlzPSJ4LWZvbyI+PC9kaXY+JworUEFTUyBkaXZG
b29DcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2Rm9v
Q3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1MgaW5wdXRCYXJD
cmVhdGVkLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4LWJhciI+JworUEFTUyBpbnB1dEJhckNy
ZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGlucHV0QmFyQ3Jl
YXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBpc0Zvcm1D
b250cm9sKGlucHV0QmFyQ3JlYXRlZCkgaXMgdHJ1ZQorUEFTUyBkaXZCYXJDcmVhdGVkLm91dGVy
SFRNTCBpcyAnPGRpdiBpcz0ieC1iYXIiPjwvZGl2PicKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIGZhbHNlCitQQVNTIGRpdkJhckNyZWF0ZWQgaW5zdGFu
Y2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIGZvb0JhckNyZWF0ZWQub3V0ZXJIVE1M
IGlzICc8eC1mb28gaXM9IngtYmFyIj48L3gtZm9vPicKK1BBU1MgZm9vQmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFyRm9vQ3JlYXRlZC5vdXRlckhU
TUwgaXMgJzx4LWJhciBpcz0ieC1mb28iPjwveC1iYXI+JworUEFTUyBiYXJGb29DcmVhdGVkIGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZm9vQ3JlYXRlZE51bGwu
b3V0ZXJIVE1MIGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWROdWxsIGluc3Rh
bmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkRW1wdHkub3V0ZXJI
VE1MIGlzICc8eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWRFbXB0eSBpbnN0YW5jZW9m
IGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQGlu
dmFsaWQnLCAneC1iYXInKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRDaGFyYWN0ZXJF
cnJvcjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBmb29DcmVhdGVkTlMub3V0ZXJIVE1MIGlzICc8
eC1mb28+PC94LWZvbz4nCitQQVNTIGZvb0NyZWF0ZWROUyBpbnN0YW5jZW9mIGZvb0NvbnN0cnVj
dG9yIGlzIHRydWUKK1BBU1MgYmFyQ3JlYXRlZE5TLm91dGVySFRNTCBpcyAnPGlucHV0IGlzPSJ4
LWJhciI+JworUEFTUyBiYXJDcmVhdGVkTlMgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyB0
cnVlCitQQVNTIGlzRm9ybUNvbnRyb2woYmFyQ3JlYXRlZE5TKSBpcyB0cnVlCitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL2V4YW1wbGUuY29tLzIwMTMvbm8tc3VjaC1uYW1l
c3BhY2UnLCAneG1sOmxhbmcnLCAneC1iYXInKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVz
cGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBmb29QYXJzZWQgaW5zdGFuY2VvZiBm
b29Db25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yIGlzIHRydWUKK1BBU1MgaXNGb3JtQ29udHJvbChiYXJQYXJzZWQpIGlzIHRydWUKK1BB
U1MgZGl2Rm9vUGFyc2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1Mg
ZGl2Rm9vUGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBuYW1l
ZEJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIGZhbHNlCitQQVNTIG5hbWVk
QmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZGl2
QmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2QmFy
UGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4
dGVuc2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDM3MDY2MjZmMDgwODQyMzcxYTdkODhlNTAyZWMz
YmQwYjgxOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9t
L2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCkBAIC0wLDAgKzEsMTcwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxmb3JtIGlkPSJ0ZXN0Rm9ybSI+PC9mb3JtPgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRl
bnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4iKTsKKworZnVuY3Rpb24g
aXNGb3JtQ29udHJvbChlbGVtZW50KQoreworICAgIHRlc3RGb3JtLmFwcGVuZENoaWxkKGVsZW1l
bnQpOworICAgIHJldHVybiBlbGVtZW50LmZvcm0gPT0gdGVzdEZvcm07Cit9CisKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LnJl
Z2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7CisK
Ky8vCisvLyBJbmhlcml0YW5jZSBoZXJlIGlzIHNoYXBlZCBsaWtlIHRoaXM6CisvLworLy8gSFRN
TEVsZW1lbnQgPC0gaW5wdXQgPC0geC1iYXIgPC0geC1xdXgKKy8vICAgICAgICAgICAgIDwtIHgt
Zm9vIDwtIHgtYmF6CisvLworCitmb29Db25zdHJ1Y3RvciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4
LWZvbycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSkg
fSk7CitiYXJDb25zdHJ1Y3RvciA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhcicsIHsgcHJvdG90
eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlKSB9KTsKK2JhekNv
bnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmF6JywgeyBwcm90b3R5cGU6IE9iamVj
dC5jcmVhdGUoZm9vQ29uc3RydWN0b3IucHJvdG90eXBlKSB9KTsKK3F1eENvbnN0cnVjdG9yID0g
ZG9jdW1lbnQucmVnaXN0ZXIoJ3gtcXV4JywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoYmFy
Q29uc3RydWN0b3IucHJvdG90eXBlKSB9KTsKKworLy8gU2FtZSBuYW1lLCBkaWZmZXJlbnQgbG9j
YWwgbmFtZQorc2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycsIHsgcHJvdG90
eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSkgfSkiLCAiJ0Vycm9y
OiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSciKTsKKworLy8KKy8vIEdlbmVy
YXRlZCBjb25zdHJ1Y3RvcnMKKy8vCisKK2Zvb05ld2VkID0gbmV3IGZvb0NvbnN0cnVjdG9yKCk7
Citmb29PdXRlckhUTUwgPSAiJzx4LWZvbz48L3gtZm9vPiciOworc2hvdWxkQmUoImZvb05ld2Vk
Lm91dGVySFRNTCIsIGZvb091dGVySFRNTCk7CitzaG91bGRCZVRydWUoImZvb05ld2VkIGluc3Rh
bmNlb2YgZm9vQ29uc3RydWN0b3IgJiYgZm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCIp
Oworc2hvdWxkQmVGYWxzZSgiZm9vTmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQi
KTsKKworYmFyTmV3ZWQgPSBuZXcgYmFyQ29uc3RydWN0b3IoKTsKK2Jhck91dGVySFRNTCA9ICIn
PGlucHV0IGlzPVwieC1iYXJcIj4nIjsKK3Nob3VsZEJlKCJiYXJOZXdlZC5vdXRlckhUTUwiLCBi
YXJPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJiYXJOZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yICYmIGJhck5ld2VkIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOworc2hvdWxk
QmVUcnVlKCJpc0Zvcm1Db250cm9sKGJhck5ld2VkKSIpOworCitiYXpOZXdlZCA9IG5ldyBiYXpD
b25zdHJ1Y3RvcigpOworYmF6T3V0ZXJIVE1MID0gIic8eC1iYXo+PC94LWJhej4nIjsKK3Nob3Vs
ZEJlKCJiYXpOZXdlZC5vdXRlckhUTUwiLCBiYXpPdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJi
YXpOZXdlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9yICYmIGJhek5ld2VkIGluc3RhbmNlb2Yg
SFRNTEVsZW1lbnQiKTsKK3Nob3VsZEJlRmFsc2UoImJhek5ld2VkIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50Iik7CisKK3F1eE5ld2VkID0gbmV3IHF1eENvbnN0cnVjdG9yKCk7CitxdXhP
dXRlckhUTUwgPSAiJzxpbnB1dCBpcz1cIngtcXV4XCI+JyI7CitzaG91bGRCZVRydWUoInF1eE5l
d2VkIGluc3RhbmNlb2YgcXV4Q29uc3RydWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBiYXJD
b25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQiKTsKK3No
b3VsZEJlKCJxdXhOZXdlZC5vdXRlckhUTUwiLCBxdXhPdXRlckhUTUwpOworc2hvdWxkQmVUcnVl
KCJpc0Zvcm1Db250cm9sKHF1eE5ld2VkKSIpOworCisvLworLy8gU2luZ2xlIHBhcmFtZXRlciBj
cmVhdGVFbGVtZW50KCkKKy8vCisKK2Zvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ4LWZvbyIpOworc2hvdWxkQmUoImZvb0NyZWF0ZWQub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1M
KTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7
CisKK2JhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJhciIpOworc2hvdWxk
QmUoImJhckNyZWF0ZWQub3V0ZXJIVE1MIiwgIic8eC1iYXI+PC94LWJhcj4nIik7CitzaG91bGRC
ZUZhbHNlKCJiYXJDcmVhdGVkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJl
VHJ1ZSgiYmFyQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitiYXpD
cmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1iYXoiKTsKK3Nob3VsZEJlKCJiYXpD
cmVhdGVkLm91dGVySFRNTCIsICInPHgtYmF6PjwveC1iYXo+JyIpOworc2hvdWxkQmVUcnVlKCJi
YXpDcmVhdGVkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3IiKTsKK3Nob3VsZEJlRmFsc2UoImJh
ekNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworcXV4Q3JlYXRlZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtcXV4Iik7CitzaG91bGRCZSgicXV4Q3JlYXRlZC5v
dXRlckhUTUwiLCAiJzx4LXF1eD48L3gtcXV4PiciKTsKK3Nob3VsZEJlRmFsc2UoInF1eENyZWF0
ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJxdXhDcmVhdGVk
IGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKKy8vCisvLyBjcmVhdGVFbGVtZW50
KCkgd2l0aCB0eXBlIGV4dGVuc2lvbnMKKy8vCisKK2RpdkZvb0NyZWF0ZWQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiLCAieC1mb28iKTsKK3Nob3VsZEJlKCJkaXZGb29DcmVhdGVkLm91
dGVySFRNTCIsICInPGRpdiBpcz1cIngtZm9vXCI+PC9kaXY+JyIpOworc2hvdWxkQmVGYWxzZSgi
ZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUo
ImRpdkZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCitpbnB1dEJhckNy
ZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIsICJ4LWJhciIpOworc2hvdWxk
QmUoImlucHV0QmFyQ3JlYXRlZC5vdXRlckhUTUwiLCBiYXJPdXRlckhUTUwpOworc2hvdWxkQmVU
cnVlKCJpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxk
QmVGYWxzZSgiaW5wdXRCYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7
CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRyb2woaW5wdXRCYXJDcmVhdGVkKSIpOworCitkaXZC
YXJDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFyIik7CitzaG91
bGRCZSgiZGl2QmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzxkaXYgaXM9XCJ4LWJhclwiPjwvZGl2
PiciKTsKK3Nob3VsZEJlRmFsc2UoImRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1
Y3RvciIpOworc2hvdWxkQmVUcnVlKCJkaXZCYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTERpdkVs
ZW1lbnQiKTsKKworZm9vQmFyQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9v
IiwgIngtYmFyIik7CitzaG91bGRCZSgiZm9vQmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LWZv
byBpcz1cIngtYmFyXCI+PC94LWZvbz4nIik7CitzaG91bGRCZVRydWUoImZvb0JhckNyZWF0ZWQg
aW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitiYXJGb29DcmVhdGVkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgieC1iYXIiLCAieC1mb28iKTsKK3Nob3VsZEJlKCJiYXJGb29DcmVhdGVk
Lm91dGVySFRNTCIsICInPHgtYmFyIGlzPVwieC1mb29cIj48L3gtYmFyPiciKTsKK3Nob3VsZEJl
VHJ1ZSgiYmFyRm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitm
b29DcmVhdGVkTnVsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgbnVsbCk7Citz
aG91bGRCZSgiZm9vQ3JlYXRlZE51bGwub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3Vs
ZEJlVHJ1ZSgiZm9vQ3JlYXRlZE51bGwgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitm
b29DcmVhdGVkRW1wdHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIsICIiKTsKK3No
b3VsZEJlKCJmb29DcmVhdGVkRW1wdHkub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3Vs
ZEJlVHJ1ZSgiZm9vQ3JlYXRlZEVtcHR5IGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKwor
c2hvdWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0BpbnZhbGlkJywgJ3gtYmFyJyki
LCAiJ0Vycm9yOiBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IERPTSBFeGNlcHRpb24gNSciKTsKKwor
Ly8KKy8vIGNyZWF0ZUVsZW1lbnROUygpIHdpdGggdHlwZSBleHRlbnNpb25zCisvLworCitmb29D
cmVhdGVkTlMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiLCAieC1mb28iLCBudWxsKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkTlMub3V0ZXJI
VE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQ3JlYXRlZE5TIGluc3RhbmNl
b2YgZm9vQ29uc3RydWN0b3IiKTsKKworYmFyQ3JlYXRlZE5TID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgImlucHV0IiwgIngtYmFyIik7
CitzaG91bGRCZSgiYmFyQ3JlYXRlZE5TLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91
bGRCZVRydWUoImJhckNyZWF0ZWROUyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91
bGRCZVRydWUoImlzRm9ybUNvbnRyb2woYmFyQ3JlYXRlZE5TKSIpOworCitzaG91bGRUaHJvdygi
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vZXhhbXBsZS5jb20vMjAxMy9uby1zdWNo
LW5hbWVzcGFjZScsICd4bWw6bGFuZycsICd4LWJhcicpIiwgIidFcnJvcjogTmFtZXNwYWNlRXJy
b3I6IERPTSBFeGNlcHRpb24gMTQnIik7CisKKy8vIHBhcnNlcgorZnVuY3Rpb24gY3JlYXRlRWxl
bWVudEZyb21IVE1MKGh0bWwpIHsKKyAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sOworICAgcmV0dXJu
IGNvbnRhaW5lci5maXJzdENoaWxkOworfQorCitmb29QYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJv
bUhUTUwoJzx4LWZvbz4nKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vUGFyc2VkIGluc3RhbmNlb2YgZm9v
Q29uc3RydWN0b3IiKTsKKworYmFyUGFyc2VkID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKCc8aW5w
dXQgaXM9eC1iYXI+JykKK3Nob3VsZEJlVHJ1ZSgiYmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29u
c3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNGb3JtQ29udHJvbChiYXJQYXJzZWQpIik7CisK
K2RpdkZvb1BhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPGRpdiBpcz14LWZvbz4nKQor
c2hvdWxkQmVGYWxzZSgiZGl2Rm9vUGFyc2VkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsK
K3Nob3VsZEJlVHJ1ZSgiZGl2Rm9vUGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsK
KworbmFtZWRCYXJQYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzx4LWJhcj4nKQorc2hv
dWxkQmVGYWxzZSgibmFtZWRCYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOwor
c2hvdWxkQmVUcnVlKCJuYW1lZEJhclBhcnNlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVu
dCIpOworCitkaXZCYXJQYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzxkaXYgaXM9eC1i
YXI+JykKK3Nob3VsZEJlRmFsc2UoImRpdkJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVj
dG9yIik7CitzaG91bGRCZVRydWUoImRpdkJhclBhcnNlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVt
ZW50Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193222</attachid>
            <date>2013-03-14 19:54:52 -0700</date>
            <delta_ts>2013-03-14 21:41:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110436-20130315115047.patch</filename>
            <type>text/plain</type>
            <size>64711</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI5N2Y0N2FjN2IzMTQ0
OWUyN2QyZmYzOTdlNmIzYWQ1MjU3MmQ3YS4uNjA2NzcxMThkN2ZmZTNlODFkYmVjNzZlNGE1OTM3
ZmNjYjUyMTNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxMy0wMy0xNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUgYSBzdXBlcmNsYXNz
IG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2Vw
dCBvZiBjdXN0b20gZWxlbWVudHMuCisgICAgICAgIFdpdGggdGhlIHR5cGUgZXh0ZW5zaW9uLCBl
YWNoIGN1c3RvbSBlbGVtZW50cyBhcmUgYWJsZSB0byBpbmhlcml0CisgICAgICAgIGZyb20gbm90
IG9ubHkgSFRNTEVsZW1lbnQsIGJ1dCBhbHNvIGFueSBIVE1MIGVsZW1lbnQuIFRvIG1ha2UgaXQg
d29yaywKKyAgICAgICAgdGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcGx1bWJpbmcuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICA9IERhdGEg
c3RydWN0dXJlOgorCisgICAgICAgIC0gTGV0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBvYmpl
Y3RzIGJlaW5nIGtleWVkIGJ5IHBhaXIgb2YgKGVsZW1lbnQKKyAgICAgICAgICBuYW1lLCBsb2Nh
bCBuYW1lKSBhcyB0aGUgc3RhbmRhcmQgcmVxdXJpZXMsIGluc3RlYWQgb2YganVzdCB1c2luZwor
ICAgICAgICAgIHNpbmdsZSBuYW1lLiBTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDb25zdHJ1
Y3Rvck1hcCBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKCkuCisKKyAgICAgICAgLSBD
cmVhdGVzIG1hcHBpbmcgZnJvbSBXcmFwcGVyVHlwZUluZm8gdG8gZWxlbWVudCBuYW1lLiAgVGhp
cyBtYXAKKyAgICAgICAgICBjYW4gYmUgbG9va2VkLXVwIGJ5IGdlbmVyYXRlZCBmdW5jdGlvbnMg
bGlrZQorICAgICAgICAgIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKCkuICBXaXRoIHRoaXMgdGFi
bGUsIFdlYktpdCBjYW4gZGV0ZXJtaW5lCisgICAgICAgICAgdGhlIGN1c3RvbSBlbGVtZW50IGxv
Y2FsIG5hbWUgb2YgZ2l2ZW4gcHJvdG90eXBlIG9iamVjdC4gU2VlICBtYWtlX25hbWVzLnBsLgor
ICAgICAgICAgIE5vdGUgdGhhdCBWOCBwcm90b3R5cGUgb2JqZWN0IGtub3dzIGFzc29jaWF0ZWQg
V3JhcHBlclR5cGVJbmZvLiBTZWUgcjE0NDg2NS4KKworICAgICAgICA9IEhvb2tpbmcgdXAgZWxl
bWVudCBsaWZlY3lsZToKKworICAgICAgICAtIENyZWF0ZSBhcHByb3ByaWF0ZSBDKysgaW5zdGFu
Y2UgZm9yIGVhY2ggY3VzdG9tIGVsZW1lbnQuICBCZWZvcmUKKyAgICAgICAgICB0aGlzIGNoYW5n
ZSwgdGhlIEMrKyBiYWNrZW5kIG9mIGN1c3RvbSBlbGVtZW50cyB3ZXJlIGFsd2F5cworICAgICAg
ICAgIEhUTUxVbmtub3duRWxlbWVudHMgb3IgSFRNTEVsZW1lbnQuICBTZWUKKyAgICAgICAgICBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBhbmQgRWxlbWVudEZhY3Rv
cmllcyBpbgorICAgICAgICAgIG1ha2VfbmFtZXMucGwuCisKKyAgICAgICAgLSBIb29rcyB1cCBl
bGVtZW50IGNvbnN0cnVjdGlvbiBhbmQgZWxlbWVudCB3cmFwcGVyIGNyZWF0aW9uIGZvcgorICAg
ICAgICAgIGN1c3RvbSBlbGVtZW50ICJiZWZvcmUiIG5vbi1jdXN0b20gY2FzZSBpbnN0ZWFkIG9m
ICJhZnRlciIKKyAgICAgICAgICB0aGF0LiBXZSBkbyB0aGlzIGJlY2F1c2UgY3VzdG9tIGVsZW1l
bnQgbmVlZHMgdG8KKyAgICAgICAgICBvdmVycmlkZSBub24tY3VzdG9tIGNhc2Ugd2hlbiBAaXMg
YXR0cmlidXRlIGlzIGdpdmVuIGZvcgorICAgICAgICAgIG90aGVyd2lzZS1ub24tY3VzdG9tIGVs
ZW1lbnRzIGxpa2UgPGRpdiBpcz14LWJhcj4uCisgICAgICAgICAgU2VlIG1ha2VfbmFtZXMucGwu
CisKKyAgICAgICAgLSBHaXZlcyBAaXMgYXR0cmlidXRlcyB0byBlbGVtZW50cyBpZiBuZWVkZWQu
IFNlZSBzZXRUeXBlRXh0ZW5zaW9uKCkgY2FsbCBzaXRlcworICAgICAgICAgIGxpa2UgRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoKSwgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnR0TlMoKSBhbmQgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50dCgpCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXNWYWxpZFByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRXcmFw
cGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaDoK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRIZWxwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEN1c3RvbUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojpj
cmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaDoK
KyAgICAgICAgKFY4Q3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbUVs
ZW1lbnQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1
Y3Rvck9mKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAg
ICAgKFdyYXBwZXJUeXBlVHJhaXRzKTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRUeXBlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpkb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OnR5cGVO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6bG9jYWxO
YW1lKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5hbWVJbmNsdWRlc0h5cGhlbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmlzVmFsaWROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Lmg6CisgICAgICAgIChDdXN0b21FbGVtZW50UmVnaXN0cnkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJl
Z2lzdHJ5KTogTW92ZWQgZnJvbSBEb2N1bWVudC5jcHAgdG8gYmUgaW5saW5lZC4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAg
ICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3Bw
RmlsZSk6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVkIEBpcyBhdHRyaWJ1dGUKKwogMjAx
My0wMy0xNCAgQnJhbmRvbiBKb25lcyAgPGJham9uZXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBD
aGVjayB0byBlbnN1cmUgTXVsdGlzYW1wbGVSZW5kZXJidWZmZXIgY3JlYXRpb24gc3VjY2VlZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggYzVhYjM2MDA1NDczNTVmNzMwOTc4NjRlYjNjODNiOTNmYjBjYjA3ZC4uMjAyNWM2
NDBmMWRmZjlkODFhMjFlYjAwMmU2YWNmNWQ0MDA0Y2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUxNCw2ICs1MTQs
MTIgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8JHtuYXRpdmVUeXBlfSA+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJiR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5mbzsgfQorfTsKKwogRU5ECiAKICAgICBteSAkY3VzdG9tV3JhcCA9ICEhKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0gb3IgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4Rmxv
YXQ2NEFycmF5LmgKaW5kZXggNDMzN2RkMjZkYjFiZWJlYjI0OWUzZGEzMDAyY2I0ZTMwMmFkZDFi
My4uYTM5NGNlNjhiZDVmY2VjM2VmYWVkNWRlODgwN2RjNmVlZTRjZThlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmgKQEAgLTUyLDYgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4sIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAor
dGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8RmxvYXQ2NEFycmF5ID4geworcHVi
bGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhGbG9h
dDY0QXJyYXk6OmluZm87IH0KK307CisKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEZs
b2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCBjODBl
ZmE2OWYzMmQ5NDIxNTlkZjNlMmY3Mzc1MjY2YjM0NDQ3ZmE0Li45MTkyOWY2ZmVjMjJlNTEyZmJm
OTM3M2NhMGU0NjkzNjE0NjA3OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBA
IC01MCw2ICs1MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0QWN0aXZlRE9NT2JqZWN0Piwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0
ZW1wbGF0ZTw+CitjbGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0QWN0aXZlRE9NT2JqZWN0ID4g
eworcHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAm
VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCAyYTUxY2RlZDlhZTc5NmM3NWM5OTIx
ZTA4ZGFhODQwMmM0YTIzYTNiLi4zNmU1Y2YwOGY1ZjlmZDJmZDVkOTlkYjdkOWMzNGFmMDBhYTBh
ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNTEsNiArNTEsMTIg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+Citj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RDdXN0
b21OYW1lZEdldHRlcjo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZWNkMTU5YmFjZDhjZTRjYTk5MWI1ZjUwNzUzZDJi
MmUzNjRiZGEwOS4uNzc5ZTkzODBiZDU2MDBkYTNiYzMyN2ZkY2VjMmU1YzVlNTVhZThjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC01Miw2ICs1MiwxMiBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1Jl
ZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBl
clR5cGVUcmFpdHM8VGVzdEV2ZW50Q29uc3RydWN0b3IgPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFdyYXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjppbmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVz
dEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5k
ZXggM2QzNjYyYTBiNjM0MjQ3ZDEwZmE3NjhkNGZmNTNiN2RlNzYxYzU0YS4uNDViYjk1Y2E5NWJl
ZWRjNmM2ZWQ0ODU5M2I1ZTBlZjliOWFjN2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAg
LTU0LDYgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudFRhcmdldD4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdEV2ZW50VGFyZ2V0ID4geworcHVibGlj
OgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0RXZl
bnRUYXJnZXQ6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRl
eCA5Y2Y4MzE5NTAyMGY2MGUwMjRiNjYwYjQ0ZDJiMGFlMzdiMWU0MDcwLi5kZWJhZjkxN2YwNzJj
YWVmOTcxNjYzMTczN2U3Y2RjOTgxZDlmODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC01MCw2
ICs1MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+Citj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0RXhjZXB0aW9uID4geworcHVibGljOgorICAgIHN0
YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0RXhjZXB0aW9uOjpp
bmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDA2MTk2Mjg2YzYx
MzNmYzY0MzVjYzA5ZmI3MmQ5NzQ3NjlhYjRjOWIuLmExNmUwYTkwOWUwNTdkYzkxNTdhMTRkNmYz
ZDFmMzBhMDdlZGM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKK3RlbXBsYXRlPD4KK2NsYXNzIFdyYXBwZXJU
eXBlVHJhaXRzPFRlc3RJbnRlcmZhY2UgPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdyYXBwZXJU
eXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RJbnRlcmZhY2U6OmluZm87IH0KK307CisK
IAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0SW50ZXJmYWNlKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRl
eCAzMGI1ZGUwNGQ2OWZkYzI4NGUyNzgyYzdhNzg3NzkzY2I5NTkxN2ZlLi4xZDZkOTAzNTlmNTdm
MDBiODQ4NDdmYTQ1YzMxNTRjMzkzNmVmZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTUwLDYgKzUwLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+CitjbGFzcyBXcmFwcGVyVHlwZVRy
YWl0czxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmgKaW5kZXggMzk0MzY0YTU3ZGJjZGJjMTJlYjYyNThlODY4NDMxNDgz
ZTQxZWFlOS4uMDY1NjFmYWVmOTRlY2M2ODhmODg3ZTZhNTNlODUyOWU2YmU5ZWY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC01Nyw2ICs1NywxMiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5
cGVUcmFpdHM8VGVzdE5hbWVkQ29uc3RydWN0b3IgPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdy
YXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpp
bmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE5h
bWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCmluZGV4IDU4NjBlOTExNWMwYjAz
NGJjNTFjYTUwOTM1NjU3NzgwY2MzY2JhNTguLmRmODhkYjRhN2Y4ZjdiNzRjMzE1Y2JjYTYyZWE3
MWZlN2NmYTQ4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApAQCAtNTIsNiArNTIsMTIgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqKTsKIH07CiAKK3RlbXBsYXRlPD4KK2NsYXNzIFdyYXBwZXJUeXBlVHJhaXRzPFRlc3ROb2Rl
ID4geworcHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVy
biAmVjhUZXN0Tm9kZTo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKFRlc3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggODc3YWMyNTBjNzRk
NGUxNjhjZDIxMDMzYmRjNDI5N2JhNDAyZjJkOC4uMmUxNmVmM2EyOTAxNDE1OGIwYjRlYjZhZGE5
YzQ5MmU1NjM0NjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNTYsNiArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dE9iaj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdE9iaiA+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4g
JlY4VGVzdE9iajo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCmluZGV4IDMwODY4OWIzNDhmMzRhYTFjYWQ1YzNhNTllOTg1MjQxYWIz
YjljNDguLjYxYzZkN2RmMTdlMzQ3NmQzZTY0Yzg1NjAxMzA2NjEzODdmZjM5NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNTEsNiArNTEsMTIgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKK3RlbXBsYXRlPD4K
K2NsYXNzIFdyYXBwZXJUeXBlVHJhaXRzPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gewor
cHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKaW5kZXggNTBkY2JmMTYxZjlhMDJkNWY4Nzc1Yjk3ZGMyMjg3ZGI0N2NkNjM1Yi4u
YTczY2E1NmM3MTI0NzE2MTJiOGJlMDBiMjkyMGE5NzBmMzc2OTA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNTIsNiAr
NTIsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4s
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwog
fTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZTo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVk
ZWZzLmgKaW5kZXggZWU5ZWMyZjRlNDBmMTcxYTg1MTFiNTNhMjZlMGM2NmVmYzdkYTMwYS4uOWIx
NzJjODUxNDFlOTE0NWMyOWMxNzliNjcyYTUyZDRkNjY1OTQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgK
QEAgLTUxLDYgKzUxLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RUeXBlZGVmcz4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdFR5cGVkZWZzID4geworcHVibGljOgor
ICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0VHlwZWRl
ZnM6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChU
ZXN0VHlwZWRlZnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCA1NDhhNjQ3YTE5ZTUyYzMzODdl
NjQ5NWJjZmI0ZjQ4ZGE1MmNmODRlLi4yY2Q1Y2E0MDFlN2E0YzM3MzY5NjE5MjllMGY4MTE4YTIw
MTM1OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVt
ZW50SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIlY4SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlY4SFRNTFBhcmFn
cmFwaEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTcGFuRWxlbWVudC5oIgogCkBAIC02Mywx
NyArNjQsMTEgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aW5pdGlhbGl6ZUNvbnN0cnVj
dG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotLy8gU2VlIEZJWE1FIG9uIHRoZSBjYWxsZXIgc2lkZSBjb21tZW50Lgotc3RhdGljIGJvb2wg
aGFzTm9CdWlsdGluc0luUHJvdG90eXBlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRtbFByb3Rv
dHlwZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQorc3RhdGljIGJvb2wgaGFzVmFsaWRQ
cm90b3R5cGVDaGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlcXVpcmVkQW5jZXN0b3IsIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKIHsKLSAgICB3aGlsZSAoIWNoYWluLklzRW1wdHko
KSkgewotICAgICAgICBpZiAoY2hhaW4gPT0gaHRtbFByb3RvdHlwZSkKKyAgICB3aGlsZSAoIWNo
YWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgeworICAgICAgICBpZiAoY2hhaW4g
PT0gcmVxdWlyZWRBbmNlc3RvcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBp
ZiAoIWNoYWluLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAvLyBUaGUgaW50ZXJuYWwgZmllbGQgY291bnQgaW5kaWNhdGVzIHRoZSBvYmplY3QgbWlnaHQg
YmUgYSBuYXRpdmUgYmFja2VkLCBidWlsdC1pbiBvYmplY3QuCi0gICAgICAgIGlmICh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNoYWluKS0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNoYWluID0gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChjaGFpbiktPkdldFByb3RvdHlwZSgpOwogICAgIH0KIApAQCAtOTAsMjAgKzg1
LDE0IEBAIGJvb2wgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0
ZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwCiAgICAgaWYgKHByb3RvdHlwZU9iamVjdC0+
SGFzT3duUHJvcGVydHkodjhTdHJpbmcoImNvbnN0cnVjdG9yIiwgc3RhdGUtPmNvbnRleHQoKS0+
R2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBWOFBlckNvbnRleHRE
YXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20oc3RhdGUtPmNvbnRl
eHQoKSk7Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDQzNgotICAgIC8vICAgZG9jdW1lbnQucmVnaXN0ZXIoKSBzaG91bGQg
YWxsb3cgYXJiaXRyYXJ5IEhUTUxFbGVtZW50IHN1YmNsYXNzc2VzLgotICAgIC8vICAgQ3VycmVu
dGx5IGl0IHN1cHBvcnRzIGN1c3RvbSBlbGVtZW50cyB3aGljaCBhcmUKLSAgICAvLyAgIC0gZGly
ZWN0IHN1YmNsYXNzZXMgb2YgSFRNTEVsZW1lbnQgb3IKLSAgICAvLyAgIC0gc3ViY2xhc3NlcyBv
ZiBvdGhlciBjdXN0b20gZWxlbWVudHMKLSAgICAvLworICAgIC8vIEZJWE1FOiBub24tSFRNTCBz
dWJjbGFzc2VzIHNob3VsZCBiZSBhbHNvIHN1cHBvcnRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMTY5MwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRt
bENvbnN0cnVjdG9yID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwZXJDb250ZXh0RGF0
YS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOEhUTUxFbGVtZW50OjppbmZvKSk7CiAgICAgaWYgKGh0
bWxDb25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGh0bWxDb25zdHJ1Y3Rvci0+R2V0KHY4U3RyaW5nKCJwcm90b3R5cGUiLCBzdGF0ZS0+
Y29udGV4dCgpLT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGh0bWxQcm90b3R5cGUuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFoYXNOb0J1aWx0aW5zSW5Qcm90
b3R5cGUoaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKKyAgICBpZiAoIWhhc1ZhbGlk
UHJvdG90eXBlQ2hhaW4oaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTIwLDYgKzEwOSwzNCBAQCBi
b29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NvbnN0IFF1YWxpZmll
ZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKGNvbnN0IFNjcmlwdFZh
bHVlJiBwcm90b3R5cGUpCit7CisgICAgaWYgKHByb3RvdHlwZS52OFZhbHVlKCkuSXNFbXB0eSgp
IHx8ICFwcm90b3R5cGUudjhWYWx1ZSgpLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHBy
b3RvdHlwZS52OFZhbHVlKCkpKTsKK30KKworV3JhcHBlclR5cGVJbmZvKiBDdXN0b21FbGVtZW50
SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKK3sK
KyAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgeworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChjaGFpbik7CisgICAgICAgIC8vIE9ubHkgcHJvdG90eXBlIG9iamVjdHMg
b2YgbmF0aXZlLWJhY2tlZCB0eXBlcyBoYXZlIHRoZSBleHRyYSBpbnRlcm5hbCBmaWVsZCBzdG9y
aW5nIFdyYXBwZXJUeXBlSW5mby4KKyAgICAgICAgaWYgKHY4UHJvdG90eXBlSW50ZXJuYWxGaWVs
ZGNvdW50ID09IGNoYWluT2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSkKKyAgICAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KGNoYWluT2JqZWN0LT5H
ZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4UHJvdG90eXBlVHlwZUluZGV4KSk7
CisgICAgICAgIGNoYWluID0gY2hhaW5PYmplY3QtPkdldFByb3RvdHlwZSgpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCisvLyBUaGlzIGNhbiByZXR1cm4gbnVsbC4gSW4gdGhhdCBjYXNl
LCB3ZSBzaG91bGQgdGFrZSB0aGUgZWxlbWVudCBuYW1lIGFzIGl0cyBsb2NhbCBuYW1lLgorY29u
c3QgUXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5hbWUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbikKK3sKKyAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUg
PSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKGNoYWluKTsKKyAgICBpZiAo
IXR5cGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmaW5kSFRNTFRhZ05hbWVPZlY4
VHlwZSh0eXBlKTsKK30KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmlu
ZGV4IDA4ZDFiY2JjMTg5NTY5NWRkYWFiZGFkMGZiZjNmOGI5ZDMxYWJiYTUuLmYyOTBmNTQ4ODBk
MDk3NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaApAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNjcmlw
dFN0YXRlOwogCiBjbGFzcyBDdXN0b21FbGVtZW50SGVscGVycyB7CkBAIC00Niw4ICs0NywxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUNvbnN0cnVjdG9yV3JhcHBlcihD
dXN0b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlLCBT
Y3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIo
Y29uc3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzRmVh
dHVyZUFsbG93ZWQoU2NyaXB0U3RhdGUqKTsKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSogZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKTsKIAogICAgIHN0
YXRpYyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOworICAg
IHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY2hhaW4pOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kTG9jYWxO
YW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOwogfTsKIAogI2VuZGlmIC8vIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEN1c3RvbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0
b21FbGVtZW50LmNwcAppbmRleCBlNWIzNGJlYjc4MDZiNTJmMjJlNjQyN2ZiZGUxYmFiYzkzOTU4
OGU5Li4wZTZhOGY4MjlhYTIwM2E2ZjA1OGRhMTcxYWQzNzk1MDMzZGNjNDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAKQEAgLTQyLDMwICs0
MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXcmFwcGVyVHlwZUluZm8q
IGZpbmRXcmFwcGVyVHlwZU9mKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKLXsKLSAgICB3
aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgewotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChjaGFpbik7Ci0gICAgICAgIGlmICh2OFByb3RvdHlwZUludGVybmFsRmllbGRjb3Vu
dCA9PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9iamVjdC0+R2V0QWxp
Z25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJbmRleCkpOwotICAg
ICAgICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gMDsKLX0KLQotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1l
bnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1
Y3Rvck9mKGltcGwuZ2V0KCkpOwotICAgIGlmICghY29uc3RydWN0b3IpIHsKLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5r
bm93bkVsZW1lbnQodG9IVE1MRWxlbWVudChpbXBsLmdldCgpKSksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci0gICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHkoKSAmJiB3cmFwcGVy
VmFsdWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpOwotICAgIH0KLQogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciBhbmQgcmVnaXN0ZXJl
ZCBsaWZlY3ljbGUgY2FsbGJhY2tzIHNob3VsZCBiZSB2aXNpYmxlIG9ubHkgZnJvbSBtYWluIHdv
cmxkLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBiZSBuZWVkZWQgb25jZSBlYWNoIGN1
c3RvbSBlbGVtZW50IGhhcyBpdHMgb3duIEZ1bmN0aW9uVGVtcGxhdGUKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTM4CkBAIC04MSw3ICs2MSw3IEBA
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBh
c3NSZWZQdHI8RWxlbWVudD4gaW1wbCwKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0cnVjdG9yV2FwcGVyID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZhbHVlKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoY29uc3RydWN0b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlw
ZSIpKSk7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IGZpbmRXcmFwcGVyVHlwZU9m
KHByb3RvdHlwZSk7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IEN1c3RvbUVsZW1l
bnRIZWxwZXJzOjpmaW5kV3JhcHBlclR5cGUocHJvdG90eXBlKTsKICAgICBpZiAoIXR5cGVJbmZv
KQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCmluZGV4IDcwMGQ4YjUxOTlhYjQy
YjZkY2FmYjk4MDgxNDQ3NjZkYTk2NmQwMzYuLmY3Nzc3YzVkYTQyOWJhMGZkZmI1Y2YwNmI5YWJh
OTgwYmE0YzcxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3Vz
dG9tRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxl
bWVudC5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFY4Q3VzdG9tRWxlbWVudF9oCiAjZGVm
aW5lIFY4Q3VzdG9tRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKQEAgLTQwLDQ1ICs0MywzMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgVjhDdXN0b21F
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3JPZihFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSop
OwogfTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbUVsZW1lbnQ6OnRv
VjgoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAg
ICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUp
OwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwot
ICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLX0KLQotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVt
ZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1w
bCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5J
c0VtcHR5KCkpOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xh
dGUpOwogfQogCi0jZWxzZSAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotCi1jbGFzcyBWOEN1
c3RvbUVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLX07Ci0KLWlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEhUTUxDdXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK2lubGluZSBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
VjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAg
cmV0dXJuIHdyYXAodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CisgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICByZXR1cm4gcmVnaXN0cnktPmZp
bmRGb3IoZWxlbWVudCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3Jh
cHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUlu
Zm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhmNzk1MGFhMzU2Li45NWNl
NzdhZjE1MDljOWRkMWQxNGUxOTBlMjE3NTQwYjk5ZDU3Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMTc4LDYgKzE3OCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9OwogICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbjsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbGVtZW50VHlwZT4KKyAgICBj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0cyB7CisgICAgICAgIC8vIHNwZWNpYWxpemVkIGNsYXNzZXMg
aGF2ZSB0aGllciBvd24gZnVuY3Rpb25zLCB3aGljaCBhcmUgZ2VuZXJhdGVkIGJ5IGJpbmRpbmcg
Z2VuZXJhdG9yLgorICAgIH07CiB9CiAKICNlbmRpZiAvLyBXcmFwcGVyVHlwZUluZm9faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1c3RvbS5jcHAKaW5kZXggOGVkNzliODVlMDY4
NWJlMTA0MDljNzVjNTNhNTAyMzhlZTgyZmM2OS4uNTVlMzhjZTk5NWY5M2ZmZTZhNTJkMmVjZWY0
ZGVmMDk2NGY5NTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20u
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBpbXBsLT5jcmVhdGVFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gVjhDdXN0b21F
bGVtZW50Ojp0b1Y4KGVsZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKGVsZW1lbnQuZ2V0KCksIGFy
Z3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yLmNwcAppbmRleCBjOTc1ZDZjNTMyMmY0NWYyNjVhYjJkN2I3YmM5NTMyMTRjZTEwMTY4Li4z
NDMxOTcxOGU3YWM0OWYwZjU4YTdmZmM5M2ZlYWQ5NTZjNWUwM2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtMzcsMjEgKzM3LDI1
IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
OjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCitQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpj
cmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHR5cGVOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0
IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCiB7Ci0gICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5ldyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Io
ZG9jdW1lbnQsIG5hbWUpKTsKKyAgICBBU1NFUlQoQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFs
aWRQcm90b3R5cGVQYXJhbWV0ZXIocHJvdG90eXBlLCBzdGF0ZSkpOworICAgIEFTU0VSVChsb2Nh
bE5hbWUgPT0gdHlwZU5hbWUgfHwgbG9jYWxOYW1lID09ICpDdXN0b21FbGVtZW50SGVscGVyczo6
ZmluZExvY2FsTmFtZShwcm90b3R5cGUpKTsKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBjcmVhdGVkID0gYWRvcHRSZWYobmV3IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcihk
b2N1bWVudCwgdHlwZU5hbWUsIGxvY2FsTmFtZSkpOwogICAgIGlmICghQ3VzdG9tRWxlbWVudEhl
bHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3RvcldyYXBwZXIoY3JlYXRlZC5nZXQoKSwgcHJvdG90
eXBlLCBzdGF0ZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjcmVhdGVkLnJlbGVh
c2UoKTsKIH0KIAotQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1l
bnQpCi0gICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fdHlwZU5hbWUodHlwZU5hbWUpCisgICAg
LCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiB7CiB9CiAKQEAgLTYzLDcgKzY3LDE2IEBAIFBhc3NS
ZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkg
Y29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fbmFtZSwgZG9jdW1lbnQoKSk7CisgICAgaWYgKG1f
bG9jYWxOYW1lICE9IG1fdHlwZU5hbWUpCisgICAgICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9u
KGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobV9sb2NhbE5hbWUsIGRvY3VtZW50KCkpLCBtX3R5
cGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZShtX3R5
cGVOYW1lLCBkb2N1bWVudCgpKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBzZXRUeXBlRXh0
ZW5zaW9uKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlRXh0ZW5zaW9uKQoreworICAgIGlmICghdHlwZUV4dGVuc2lvbi5pc0VtcHR5KCkpCisgICAg
ICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlzQXR0ciwgdHlwZUV4dGVuc2lv
bik7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCBjZTFiZWUyYzJjODFiYTYzZTRjNDU3ODBi
Yzc0YTg2ZjEzNjE5MThhLi4wZWVkNzlhZTU4MzliM2M4ZDNkNDZjMmUxMWMyODhlMmZmYTg4OGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBA
IC00OCwyMSArNDgsMjUgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIFNjcmlwdFN0YXRlOwogY2xh
c3MgU2NyaXB0VmFsdWU7CiAKK1Bhc3NSZWZQdHI8RWxlbWVudD4gc2V0VHlwZUV4dGVuc2lvbihQ
YXNzUmVmUHRyPEVsZW1lbnQ+LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24pOwor
CiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+ICwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3RhdGUqLCBEb2N1bWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHR5cGVOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0
IFNjcmlwdFZhbHVlJik7CiAKICAgICB2aXJ0dWFsIH5DdXN0b21FbGVtZW50Q29uc3RydWN0b3Io
KTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRvRG9jdW1lbnQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7IH0KKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZU5hbWU7IH0KKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgCisKIHByaXZhdGU6Ci0gICAgQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVO
YW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpOwogCi0gICAgUXVhbGlmaWVkTmFt
ZSBtX25hbWU7CisgICAgUXVhbGlmaWVkTmFtZSBtX3R5cGVOYW1lOworICAgIFF1YWxpZmllZE5h
bWUgbV9sb2NhbE5hbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVnaXN0cnkuY3BwCmluZGV4IDQ4ODYzYmIxNWEwMDhmZWU0NTA4MTljOGQ2ZWUyMjE4YWJh
N2JkNzcuLjZjMjhmMjgxOTIzYjhiZmY3MzRkMmMyNzY4MDkzZTkxZTIzMzE4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAKQEAgLTYyLDE4ICs2MywxNSBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVt
ZW50UmVnaXN0cnkoKQogewogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQp
CitzdGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxl
bWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBzZWxmLT5maW5kKGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAg
IHNpemVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOworICAgIHJldHVybiAoaHlw
aGVuUG9zaXRpb24gIT0gbm90Rm91bmQpOwogfQogCiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6aXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIHNpemVfdCBo
eXBoZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScpOwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9
PSBub3RGb3VuZCkKKyAgICBpZiAoIW5hbWVJbmNsdWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3Ry
aW5nPiwgcmVzZXJ2ZWROYW1lcywgKCkpOwpAQCAtMTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3Rl
ckVsZW1lbnQoU2NyaQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIGlm
IChmaW5kKG5ld05hbWUpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIFNjcmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwog
ICAgIGlmICghb3B0aW9ucy5nZXQoInByb3RvdHlwZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAt
MTMyLDMzICsxMjUsNzEgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1f
bmFtZXMuY29udGFpbnMobmV3TmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSog
bG9jYWxOYW1lRm91bmQgPSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90
b3R5cGVWYWx1ZSk7CisgICAgUXVhbGlmaWVkTmFtZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFt
ZUZvdW5kID8gKmxvY2FsTmFtZUZvdW5kIDogbmV3TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1l
LCBsb2NhbE5hbWVUb1VzZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIAotICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24g
Y291bGQgaGFwcGVuIGluIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMg
dGhlIGRvY3VtZW50LgorICAgIC8vIEEgc2NyaXB0IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4g
aXNWYWxpZFByb3RvdHlwZVBhcmFtZXRlcigpLCB3aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAg
ICAgaWYgKCFkb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3Rh
dGUsIGRvY3VtZW50KCksIG5ld05hbWUsIHByb3RvdHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHN0YXRlLCBkb2N1bWVudCgpLCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwg
cHJvdG90eXBlVmFsdWUpOwogICAgIGlmICghY29uc3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAg
ICBtX2NvbnN0cnVjdG9ycy5hZGQoY29uc3RydWN0b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVj
dG9yKTsKKyAgICBtX2NvbnN0cnVjdG9ycy5hZGQoc3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3It
PnR5cGVOYW1lKCksIGNvbnN0cnVjdG9yLT5sb2NhbE5hbWUoKSksIGNvbnN0cnVjdG9yKTsKKyAg
ICBtX25hbWVzLmFkZChjb25zdHJ1Y3Rvci0+dHlwZU5hbWUoKSk7CisKICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
K1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKKworICAgIC8vIE1vc3QgZWxlbWVu
dHMgY2FuIGJlIHJlamVjdGVkIHRoaXMgcXVpY2sgc2NyZWVuaW5nLgorICAgIGlmICghbmFtZUlu
Y2x1ZGVzSHlwaGVuKGVsZW1lbnQtPnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJpYnV0
ZShIVE1MTmFtZXM6OmlzQXR0cikpCisgICAgICAgIHJldHVybiAwOworCisgICAgUXVhbGlmaWVk
TmFtZSBpZFZhbHVlKG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpp
c0F0dHIpLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICByZXR1cm4gZmluZChp
ZFZhbHVlLCBlbGVtZW50LT50YWdRTmFtZSgpKTsKK30KKworUGFzc1JlZlB0cjxDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdAog
ewotICAgIENvbnN0cnVjdG9yTWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IG1fY29uc3RydWN0
b3JzLmZpbmQobmFtZS5pbXBsKCkpOwotICAgIHJldHVybiAoZm91bmQgIT0gbV9jb25zdHJ1Y3Rv
cnMuZW5kKCkpID8gZm91bmQtPnZhbHVlIDogMDsKKyAgICBDb25zdHJ1Y3Rvck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5lbmQoKTsKKyAgICBpZiAoIXR5cGVOYW1l
LmxvY2FsTmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5m
aW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGVOYW1lLCBsb2NhbE5hbWUpKTsKKyAgICBpZiAoZm91bmQg
PT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMu
ZmluZChzdGQ6Om1ha2VfcGFpcihsb2NhbE5hbWUsIGxvY2FsTmFtZSkpOworICAgIGlmIChmb3Vu
ZCA9PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IGZvdW5kLT52YWx1ZTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bh
c3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0
ZW5zaW9uKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
PiBmb3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAgIHJldHVybiBmb3VuZC0+Y3JlYXRlRWxlbWVu
dCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1lID0gUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgdHlwZUV4dGVuc2lvbiwgbG9jYWxOYW1lLm5hbWVzcGFjZVVSSSgpKTsKKyAgICBp
ZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZm91bmQgPSBmaW5kKHR5cGVOYW1l
LCBsb2NhbE5hbWUpKSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gZm91bmQt
PmNyZWF0ZUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCF0eXBlTmFtZS5sb2NhbE5hbWUoKS5pc0Vt
cHR5KCkgJiYgbG9jYWxOYW1lICE9IHR5cGVOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNldFR5
cGVFeHRlbnNpb24oY3JlYXRlZCwgdHlwZUV4dGVuc2lvbik7CisgICAgICAgIHJldHVybiBjcmVh
dGVkLnJlbGVhc2UoKTsKKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCmluZGV4IDIwODJjZDc2MjJjZjYyZWFiZTEz
NmQ2YWZiMjdhNGRhYTYyZTcyN2EuLjEwMmFhM2RlMzhjMjExNjhlMGM3YjcwYzY1MjhhMmExYTkx
ZGU0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN1cHBs
ZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01OSwxOCArNjAsMjAgQEAgcHVi
bGljOgogICAgIH5DdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKIAogICAgIFBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3Rh
dGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZEZvcihFbGVtZW50KikgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGZpbmQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgZWxlbWVudE5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKSBj
b25zdDsKKwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvck9mKEVsZW1lbnQq
KTsKLSAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVkTmFtZTo6UXVhbGlm
aWVkTmFtZUltcGwqLCBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiA+Q29uc3RydWN0
b3JNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxRdWFsaWZpZWROYW1lLCBRdWFs
aWZpZWROYW1lPiwgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gPiBDb25zdHJ1Y3Rv
ck1hcDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gTmFtZVNldDsKIAogICAg
IENvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3JzOworICAgIE5hbWVTZXQgbV9uYW1lczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMw
MTgzYzI2YTUzNDVhYTk3OTY4OTg3ODg0Y2ZlYzU0OWRjZDRjNGYuLmUxYmQ3YTg5MTM2MGQ4MGZh
NjBkNmY4NWNkYzQzYjM2YjM5ZDAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQy
LDYgKzg0Miw0MSBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogfQogCiAjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKK1Bhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1l
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZUV4dGVuc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkTmFtZShs
b2NhbE5hbWUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobV9yZWdpc3RyeSkgeworICAgICAgICBpZiAo
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0gbV9yZWdpc3RyeS0+Y3JlYXRlRWxlbWVudChR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHlw
ZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlZDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVhdGVFbGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBl
RXh0ZW5zaW9uKTsgLy8gIEZJWE1FOiB0YWtlIGNhcmUgb2YgQGlzCit9CisKK1Bhc3NSZWZQdHI8
RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFN0cmluZyBwcmVm
aXgsIGxvY2FsTmFtZTsKKyAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFF1YWxp
ZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CisgICAgaWYg
KCFoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKHFOYW1lKSkgeworICAgICAgICBlYyA9IE5B
TUVTUEFDRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChtX3JlZ2lz
dHJ5KSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZWQgPSBtX3JlZ2lz
dHJ5LT5jcmVhdGVFbGVtZW50KHFOYW1lLCB0eXBlRXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVkOworICAgIH0KKworICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9uKGNyZWF0
ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lv
bik7Cit9CisKIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBEb2N1bWVudDo6
cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gcmVnaXN0ZXJF
bGVtZW50KHN0YXRlLCBuYW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsKQEAgLTg1OCwxMSArODkzLDYg
QEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3Rl
ckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3QKICAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVm
KG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnkodGhpcykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5
LT5yZWdpc3RlckVsZW1lbnQoc3RhdGUsIG5hbWUsIG9wdGlvbnMsIGVjKTsKIH0KLQotUGFzc1Jl
ZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IERvY3VtZW50OjpyZWdpc3RyeSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcmVnaXN0cnk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVN
RU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDQ4YTVhMjFiZWJmMDUzNzE4
MTYzMGUzNzdmY2E1N2I4NDMzMzE5ZGQuLmZiY2EwYzJiNDliZjNlMGJmMTYxNGZmYmU3YTkzNDZh
ZmFhMWVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTYwLDkgKzExNjAsMTEgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0
ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6
U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeT4gcmVnaXN0cnkoKSBjb25zdDsKKyAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJl
Z2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNj
YWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAppbmRleCBjYWE1OGNmMzAwYmMzOWM4ZDUwMTc2MTgxNGJjNGU3MmNjYjA1Y2U5Li5hNGYw
NTNjOTAxNjJjNGNkMTAxN2ZhNmU1NjQ3MWQ3ZWQzM2EzZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwKQEAgLTM2Myw2ICszNjMsOSBAQAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVN
RU5UUykgJiYgRU5BQkxFX0NVU1RPTV9FTEVNRU5UUwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
Y3VzdG9tRE9NRWxlbWVudHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50
ZWRBcz1yZWdpc3RlckVsZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlXQogICAgIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09w
dGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIFtS
ZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxO
YW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24p
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVz
cGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKaW5kZXggMDQzYTM4MjQwOGNjNDE3MDE2Y2Y0MDJmNjQ3MjE0OWZiOTVjY2Q5Ni4u
YjkxMDNlNTRmZTE3N2ZmM2MxNTg4YzIxM2QwYTMxOTdmZTM4ZjAwZiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwKQEAgLTgyMyw2ICs4MjMsMTEgQEAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
IkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
IAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjZW5kaWYK
KwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFZJREVPKQogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg5Niw2ICs5MDEsMTYg
QEAgRU5ECiB9CiAKIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQor
ICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnkoKS0+
ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNvbnN0cnVjdG9yLT5jcmVhdGVFbGVtZW50KCk7CisgICAgICAgICAgICBBU1NF
UlQoZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50PihlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAg
IGlmICghZ0Z1bmN0aW9uTWFwKQogICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwogICAgIGlm
IChDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUu
bG9jYWxOYW1lKCkuaW1wbCgpKSkgewpAQCAtOTEyLDExICs5MjcsNyBAQCBpZiAoJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKIHByaW50IEYgPDxFTkQKICAgICB9CiAKLUVORAot
OwotcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9
OjpjcmVhdGUocU5hbWUsIGRvY3VtZW50KTtcbiI7Ci0KLXByaW50IEYgPDxFTkQKKyAgICByZXR1
cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1
bWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTExNzIsOSArMTE4MywxMiBA
QCBFTkQKIDsKICAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAg
ICAgICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1
ZGUgIlY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpCisjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2lu
Y2x1ZGUgPHY4Lmg+CiBFTkQKIDsKQEAgLTEyNDQsNiArMTI1OCwxOSBAQCBFTkQKIAogICAgIHBy
aW50IEYgPDxFTkQKICAgICB9CitFTkQKKzsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBl
cSAiVjgiKSB7CisgICAgICAgIHByaW50IEYgPDxFTkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQorICAgIGlmIChQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3IgPSBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAg
IHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBj
b25zdHJ1Y3RvciwgaXNvbGF0ZSk7CisjZW5kaWYKK0VORAorOworICAgIH0KKworICAgIHByaW50
IEYgPDxFTkQKICAgICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJG
dW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFt
ZSgpLmltcGwoKSk7CiAgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3
NSwxMSArMTMwMiw2IEBAIEVORAogICAgIHJldHVybiBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBw
ZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwotICAgICAgICB9
IGVsc2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewotICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVORAotOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAogICAgIHJldHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFs
bGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
QEAgLTEyODksMTIgKzEzMTEsNDggQEAgRU5ECiAgICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0K
K0VORAorOworCisgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgeworICAgICAg
ICBwcmludCBGIDw8RU5ECisKK2NvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlm
aWVkTmFtZSo+IFR5cGVOYW1lTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVN
YXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CitFTkQKKzsKKworICAgICAg
ICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAg
IGlmICghdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7CisgICAgICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25kaXRpb25hbH07Cisg
ICAgICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBz
cGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOworICAgICAgICAgICAgICAgICAgICBwcmlu
dCBGICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7CisgICAgICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFt
ZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgICAgICAgICBwcmludCBGICIgICAgICAgbWFw
LnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3Rh
Z05hbWV9VGFnKTtcbiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludCBGIDw8RU5ECisgICAg
fQorCisgICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7CiB9CiAKIEVORAogOworICAgIH0KIAorICAg
IHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7
Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwpAQCAtMTM0NSw2ICsxNDAzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ7CiAKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVk
ZjJiYjk0ZWVhMzQ4MzdlZWM1Li42YzY3NTdkMTRhNzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2My
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2
LDYgKzEyNiw3IEBAIGh0dHBfZXF1aXYKIGlkCiBpbmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQor
aXMKIGlzbWFwCiBpdGVtaWQKIGl0ZW1wcm9wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjFiOWIxODgxODQ0NzM5MzhlNjAz
MzE0ODk5YTVjMWExYzdlOTJiZC4uNWNlODgzYzNjOTE3Nzg5MWFhNTUxMDc4YjcxNjgyZDkzMGRh
M2I0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTEwICBIYWppbWUgTW9ycml0YSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXSBBbnkgSFRN
TEVsZW1lbnQgc3ViY2xhc3Mgc2hvdWxkIGJlY29tZSBhIHN1cGVyY2xhc3Mgb2YgY3VzdG9tIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25z
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xNCAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0
IGV4cGVjdGF0aW9ucyB1cGRhdGUuIEV4cGFuZGVkIHN1cHByZXNzaW9uLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1i
YXNpYy1leHBlY3RlZC50eHQKaW5kZXggZmZiNTI4M2RhYzJhN2RlZmI2MWM1NzdlOGE0ZjFiOWNh
ZWI2ZjJjNy4uMWM0OTIyZjMwMDdkYzZkNDkxNWRlNWJlZWM3ODVkOTQyODgyYmQ5NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2lj
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQt
cmVnaXN0ZXItYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0xNCw3ICsxNCw2IEBAIFBBU1MgZG9jdW1l
bnQucmVnaXN0ZXIoJ1gtRk9PJywgY3JlYXRlUmVnaXN0ZXJQYXJhbXRlcnMoKSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yCiBQQVNTIGRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1hJywgeyBwcm90b3R5
cGU6IEhUTUxFbGVtZW50LnByb3RvdHlwZSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFs
aWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBkb2N1bWVudC5yZWdpc3Rlcign
eC1iYWQtYicsIHsgcHJvdG90eXBlOiB7fSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFs
aWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBkb2N1bWVudC5yZWdpc3Rlcign
eC1iYWQtYycsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKERvY3VtZW50LnByb3RvdHlwZSkg
fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlv
biAxMS4KLVBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWQnLCB7IHByb3RvdHlwZTogT2Jq
ZWN0LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJvdG90eXBlKSB9KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBmb29Db25z
dHJ1Y3RvcigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IERPTSBvYmplY3QgY29uc3RydWN0
b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLi4KIFBBU1MgY3JlYXRlZEZvby5fX3By
b3RvX18gaXMgZm9vQ29uc3RydWN0b3IucHJvdG90eXBlCiBQQVNTIGNyZWF0ZWRGb28uY29uc3Ry
dWN0b3IgaXMgZm9vQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKaW5kZXggZjViNzY5OWRmODNm
NTBiYWZmOTU1MjI4M2YzOGVhM2Y5Y2E0ZDU3MC4uYjU4OGNmZTlmN2Y5MzE0MGYxN2JjYTJlNzk4
MGRjMTM5NzZmMDYzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2Rv
Y3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKQEAgLTM5LDggKzM5LDYgQEAgc2hvdWxk
VGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJhZC1hJywgeyBwcm90b3R5cGU6IEhUTUxFbGVt
ZW50LnByb3RvdHlwZSB9KSIKIHNob3VsZFRocm93KCJkb2N1bWVudC5yZWdpc3RlcigneC1iYWQt
YicsIHsgcHJvdG90eXBlOiB7fSB9KSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExJyIpOwogLy8gQmFkIHByb3RvdHlwZTogd3JvbmcgX19wcm90b19fCiBzaG91
bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWMnLCB7IHByb3RvdHlwZTogT2JqZWN0
LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5cGUpIH0pIiwgIidFcnJvcjogSW52YWxpZFN0YXRlRXJy
b3I6IERPTSBFeGNlcHRpb24gMTEnIik7Ci0vLyBCdWcgMTEwNDM2IC0gRWxlbWVudHMgb3RoZXIg
dGhhbiBIVE1MRW1lbWVudCBzaG91bGQgYmUgYWxsb3dlZCBhcyBhIHN1cGVyY2xhc3MuCi1zaG91
bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFkLWQnLCB7IHByb3RvdHlwZTogT2JqZWN0
LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJyb3I6IEludmFsaWRT
dGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwogLy8gQ2FsbCBhcyBmdW5jdGlvbgogc2hv
dWxkVGhyb3coImZvb0NvbnN0cnVjdG9yKCkiLCAiJ1R5cGVFcnJvcjogRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJyIpCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVu
c2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNhYTBi
MzNhMDhhZDNhYmJkNDU3MzU5MTJkNGY5YzhlMWU4OTMzOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1Rlc3RpbmcgZG9jdW1lbnQucmVnaXN0
ZXIoKSB0eXBlIGV4dGVuc2lvbiBiZWhhdmlvdXJzIHRocm91Z2ggY3JlYXRlRWxlbWVudCgpLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5yZWdpc3Rlcign
eC1mb28nLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5
cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTEuCitQQVNTIGZvb05ld2VkLm91dGVySFRNTCBpcyAnPHgtZm9vPjwveC1mb28+Jwor
UEFTUyBmb29OZXdlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yICYmIGZvb05ld2VkIGluc3Rh
bmNlb2YgSFRNTEVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxV
bmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBiYXJOZXdlZC5vdXRlckhUTUwgaXMgJzxpbnB1
dCBpcz0ieC1iYXIiPicKK1BBU1MgYmFyTmV3ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciAm
JiBiYXJOZXdlZCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBpc0Zv
cm1Db250cm9sKGJhck5ld2VkKSBpcyB0cnVlCitQQVNTIGJhek5ld2VkLm91dGVySFRNTCBpcyAn
PHgtYmF6PjwveC1iYXo+JworUEFTUyBiYXpOZXdlZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9y
ICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBiYXpOZXdl
ZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBxdXhOZXdlZCBp
bnN0YW5jZW9mIHF1eENvbnN0cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3Ry
dWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IGlzIHRydWUKK1BB
U1MgcXV4TmV3ZWQub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtcXV4Ij4nCitQQVNTIGlzRm9y
bUNvbnRyb2wocXV4TmV3ZWQpIGlzIHRydWUKK1BBU1MgZm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMg
Jzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVj
dG9yIGlzIHRydWUKK1BBU1MgYmFyQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWJhcj48L3gtYmFy
PicKK1BBU1MgYmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIGZhbHNlCitQ
QVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFT
UyBiYXpDcmVhdGVkLm91dGVySFRNTCBpcyAnPHgtYmF6PjwveC1iYXo+JworUEFTUyBiYXpDcmVh
dGVkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBiYXpDcmVhdGVkIGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIGZhbHNlCitQQVNTIHF1eENyZWF0ZWQub3V0
ZXJIVE1MIGlzICc8eC1xdXg+PC94LXF1eD4nCitQQVNTIHF1eENyZWF0ZWQgaW5zdGFuY2VvZiBx
dXhDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBxdXhDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZGl2Rm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzxk
aXYgaXM9IngtZm9vIj48L2Rpdj4nCitQQVNTIGRpdkZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBmb29D
b25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZGb29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTERp
dkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBpbnB1dEJhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8aW5w
dXQgaXM9IngtYmFyIj4nCitQQVNTIGlucHV0QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yIGlzIHRydWUKK1BBU1MgaW5wdXRCYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25v
d25FbGVtZW50IGlzIGZhbHNlCitQQVNTIGlzRm9ybUNvbnRyb2woaW5wdXRCYXJDcmVhdGVkKSBp
cyB0cnVlCitQQVNTIGRpdkJhckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8ZGl2IGlzPSJ4LWJhciI+
PC9kaXY+JworUEFTUyBkaXZCYXJDcmVhdGVkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMg
ZmFsc2UKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50IGlzIHRy
dWUKK1BBU1MgZm9vQmFyQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWZvbyBpcz0ieC1iYXIiPjwv
eC1mb28+JworUEFTUyBmb29CYXJDcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMg
dHJ1ZQorUEFTUyBiYXJGb29DcmVhdGVkLm91dGVySFRNTCBpcyAnPHgtYmFyIGlzPSJ4LWZvbyI+
PC94LWJhcj4nCitQQVNTIGJhckZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1l
bnQgaXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkTnVsbC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gt
Zm9vPicKK1BBU1MgZm9vQ3JlYXRlZE51bGwgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyB0
cnVlCitQQVNTIGZvb0NyZWF0ZWRFbXB0eS5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicK
K1BBU1MgZm9vQ3JlYXRlZEVtcHR5IGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdAaW52YWxpZCcsICd4LWJhcicpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCitQ
QVNTIGZvb0NyZWF0ZWROUy5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9v
Q3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBiYXJDcmVh
dGVkTlMub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGJhckNyZWF0ZWRO
UyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgaXNGb3JtQ29udHJvbChi
YXJDcmVhdGVkTlMpIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRw
Oi8vZXhhbXBsZS5jb20vMjAxMy9uby1zdWNoLW5hbWVzcGFjZScsICd4bWw6bGFuZycsICd4LWJh
cicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24g
MTQuCitQQVNTIGZvb1BhcnNlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BB
U1MgYmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBpc0Zv
cm1Db250cm9sKGJhclBhcnNlZCkgaXMgdHJ1ZQorUEFTUyBkaXZGb29QYXJzZWQgaW5zdGFuY2Vv
ZiBmb29Db25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBI
VE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIG5hbWVkQmFyUGFyc2VkIGluc3RhbmNlb2YgYmFy
Q29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgbmFtZWRCYXJQYXJzZWQgaW5zdGFuY2VvZiBIVE1M
VW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBkaXZCYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJD
b25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZCYXJQYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2
RWxlbWVudCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3Vt
ZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0MzcwNjYyNmYwODA4NDIzNzFhN2Q4OGU1MDJlYzNiZDBiODE5NjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1l
eHRlbnNpb25zLmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2Pgor
PGZvcm0gaWQ9InRlc3RGb3JtIj48L2Zvcm0+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rp
bmcgZG9jdW1lbnQucmVnaXN0ZXIoKSB0eXBlIGV4dGVuc2lvbiBiZWhhdmlvdXJzIHRocm91Z2gg
Y3JlYXRlRWxlbWVudCgpLiIpOworCitmdW5jdGlvbiBpc0Zvcm1Db250cm9sKGVsZW1lbnQpCit7
CisgICAgdGVzdEZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQu
Zm9ybSA9PSB0ZXN0Rm9ybTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3Rl
ciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKKworLy8KKy8vIEluaGVyaXRhbmNlIGhlcmUg
aXMgc2hhcGVkIGxpa2UgdGhpczoKKy8vCisvLyBIVE1MRWxlbWVudCA8LSBpbnB1dCA8LSB4LWJh
ciA8LSB4LXF1eAorLy8gICAgICAgICAgICAgPC0geC1mb28gPC0geC1iYXoKKy8vCisKK2Zvb0Nv
bnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVj
dC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlKSB9KTsKK2JhckNvbnN0cnVjdG9yID0gZG9j
dW1lbnQucmVnaXN0ZXIoJ3gtYmFyJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTElu
cHV0RWxlbWVudC5wcm90b3R5cGUpIH0pOworYmF6Q29uc3RydWN0b3IgPSBkb2N1bWVudC5yZWdp
c3RlcigneC1iYXonLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShmb29Db25zdHJ1Y3Rvci5w
cm90b3R5cGUpIH0pOworcXV4Q29uc3RydWN0b3IgPSBkb2N1bWVudC5yZWdpc3RlcigneC1xdXgn
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShiYXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUpIH0p
OworCisvLyBTYW1lIG5hbWUsIGRpZmZlcmVudCBsb2NhbCBuYW1lCitzaG91bGRUaHJvdygiZG9j
dW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERp
dkVsZW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExJyIpOworCisvLworLy8gR2VuZXJhdGVkIGNvbnN0cnVjdG9ycworLy8KKwor
Zm9vTmV3ZWQgPSBuZXcgZm9vQ29uc3RydWN0b3IoKTsKK2Zvb091dGVySFRNTCA9ICInPHgtZm9v
PjwveC1mb28+JyI7CitzaG91bGRCZSgiZm9vTmV3ZWQub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1M
KTsKK3Nob3VsZEJlVHJ1ZSgiZm9vTmV3ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciAmJiBm
b29OZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Iik7CitzaG91bGRCZUZhbHNlKCJmb29OZXdl
ZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitiYXJOZXdlZCA9IG5ldyBiYXJD
b25zdHJ1Y3RvcigpOworYmFyT3V0ZXJIVE1MID0gIic8aW5wdXQgaXM9XCJ4LWJhclwiPiciOwor
c2hvdWxkQmUoImJhck5ld2VkLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRy
dWUoImJhck5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgJiYgYmFyTmV3ZWQgaW5zdGFu
Y2VvZiBIVE1MSW5wdXRFbGVtZW50Iik7CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRyb2woYmFy
TmV3ZWQpIik7CisKK2Jhek5ld2VkID0gbmV3IGJhekNvbnN0cnVjdG9yKCk7CitiYXpPdXRlckhU
TUwgPSAiJzx4LWJhej48L3gtYmF6PiciOworc2hvdWxkQmUoImJhek5ld2VkLm91dGVySFRNTCIs
IGJhek91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhek5ld2VkIGluc3RhbmNlb2YgYmF6Q29u
c3RydWN0b3IgJiYgYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCIpOworc2hvdWxkQmVG
YWxzZSgiYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworcXV4TmV3
ZWQgPSBuZXcgcXV4Q29uc3RydWN0b3IoKTsKK3F1eE91dGVySFRNTCA9ICInPGlucHV0IGlzPVwi
eC1xdXhcIj4nIjsKK3Nob3VsZEJlVHJ1ZSgicXV4TmV3ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1
Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yICYmIHF1eE5ld2VkIGlu
c3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOworc2hvdWxkQmUoInF1eE5ld2VkLm91dGVySFRN
TCIsIHF1eE91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImlzRm9ybUNvbnRyb2wocXV4TmV3ZWQp
Iik7CisKKy8vCisvLyBTaW5nbGUgcGFyYW1ldGVyIGNyZWF0ZUVsZW1lbnQoKQorLy8KKworZm9v
Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIik7CitzaG91bGRCZSgiZm9v
Q3JlYXRlZC5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVh
dGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKKworYmFyQ3JlYXRlZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIngtYmFyIik7CitzaG91bGRCZSgiYmFyQ3JlYXRlZC5vdXRlckhUTUwi
LCAiJzx4LWJhcj48L3gtYmFyPiciKTsKK3Nob3VsZEJlRmFsc2UoImJhckNyZWF0ZWQgaW5zdGFu
Y2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJiYXJDcmVhdGVkIGluc3RhbmNl
b2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2JhekNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ4LWJheiIpOworc2hvdWxkQmUoImJhekNyZWF0ZWQub3V0ZXJIVE1MIiwgIic8eC1i
YXo+PC94LWJhej4nIik7CitzaG91bGRCZVRydWUoImJhekNyZWF0ZWQgaW5zdGFuY2VvZiBiYXpD
b25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgiYmF6Q3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxV
bmtub3duRWxlbWVudCIpOworCitxdXhDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
eC1xdXgiKTsKK3Nob3VsZEJlKCJxdXhDcmVhdGVkLm91dGVySFRNTCIsICInPHgtcXV4PjwveC1x
dXg+JyIpOworc2hvdWxkQmVGYWxzZSgicXV4Q3JlYXRlZCBpbnN0YW5jZW9mIHF1eENvbnN0cnVj
dG9yIik7CitzaG91bGRCZVRydWUoInF1eENyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVs
ZW1lbnQiKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1lbnQoKSB3aXRoIHR5cGUgZXh0ZW5zaW9ucwor
Ly8KKworZGl2Rm9vQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIsICJ4LWZv
byIpOworc2hvdWxkQmUoImRpdkZvb0NyZWF0ZWQub3V0ZXJIVE1MIiwgIic8ZGl2IGlzPVwieC1m
b29cIj48L2Rpdj4nIik7CitzaG91bGRCZUZhbHNlKCJkaXZGb29DcmVhdGVkIGluc3RhbmNlb2Yg
Zm9vQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9m
IEhUTUxEaXZFbGVtZW50Iik7CisKK2lucHV0QmFyQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0IiwgIngtYmFyIik7CitzaG91bGRCZSgiaW5wdXRCYXJDcmVhdGVkLm91dGVy
SFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImlucHV0QmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZUZhbHNlKCJpbnB1dEJhckNyZWF0ZWQg
aW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNGb3JtQ29u
dHJvbChpbnB1dEJhckNyZWF0ZWQpIik7CisKK2RpdkJhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiLCAieC1iYXIiKTsKK3Nob3VsZEJlKCJkaXZCYXJDcmVhdGVkLm91dGVy
SFRNTCIsICInPGRpdiBpcz1cIngtYmFyXCI+PC9kaXY+JyIpOworc2hvdWxkQmVGYWxzZSgiZGl2
QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoImRp
dkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCitmb29CYXJDcmVhdGVk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iLCAieC1iYXIiKTsKK3Nob3VsZEJlKCJm
b29CYXJDcmVhdGVkLm91dGVySFRNTCIsICInPHgtZm9vIGlzPVwieC1iYXJcIj48L3gtZm9vPici
KTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9y
Iik7CisKK2JhckZvb0NyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJhciIsICJ4
LWZvbyIpOworc2hvdWxkQmUoImJhckZvb0NyZWF0ZWQub3V0ZXJIVE1MIiwgIic8eC1iYXIgaXM9
XCJ4LWZvb1wiPjwveC1iYXI+JyIpOworc2hvdWxkQmVUcnVlKCJiYXJGb29DcmVhdGVkIGluc3Rh
bmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2Zvb0NyZWF0ZWROdWxsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgieC1mb28iLCBudWxsKTsKK3Nob3VsZEJlKCJmb29DcmVhdGVkTnVsbC5v
dXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkTnVsbCBp
bnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2Zvb0NyZWF0ZWRFbXB0eSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIiIpOworc2hvdWxkQmUoImZvb0NyZWF0ZWRFbXB0eS5v
dXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkRW1wdHkg
aW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnQGludmFsaWQnLCAneC1iYXInKSIsICInRXJyb3I6IEludmFsaWRDaGFyYWN0
ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1JyIpOworCisvLworLy8gY3JlYXRlRWxlbWVudE5TKCkg
d2l0aCB0eXBlIGV4dGVuc2lvbnMKKy8vCisKK2Zvb0NyZWF0ZWROUyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJ4LWZvbyIsIG51bGwp
Oworc2hvdWxkQmUoImZvb0NyZWF0ZWROUy5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hv
dWxkQmVUcnVlKCJmb29DcmVhdGVkTlMgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCiti
YXJDcmVhdGVkTlMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiLCAiaW5wdXQiLCAieC1iYXIiKTsKK3Nob3VsZEJlKCJiYXJDcmVhdGVkTlMu
b3V0ZXJIVE1MIiwgYmFyT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQ3JlYXRlZE5TIGlu
c3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiaXNGb3JtQ29udHJvbChi
YXJDcmVhdGVkTlMpIik7CisKK3Nob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly9leGFtcGxlLmNvbS8yMDEzL25vLXN1Y2gtbmFtZXNwYWNlJywgJ3htbDpsYW5nJywg
J3gtYmFyJykiLCAiJ0Vycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCciKTsK
KworLy8gcGFyc2VyCitmdW5jdGlvbiBjcmVhdGVFbGVtZW50RnJvbUhUTUwoaHRtbCkgeworICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgY29udGFp
bmVyLmlubmVySFRNTCA9IGh0bWw7CisgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7Cit9
CisKK2Zvb1BhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPHgtZm9vPicpOworc2hvdWxk
QmVUcnVlKCJmb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitiYXJQYXJz
ZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzxpbnB1dCBpcz14LWJhcj4nKQorc2hvdWxkQmVU
cnVlKCJiYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVl
KCJpc0Zvcm1Db250cm9sKGJhclBhcnNlZCkiKTsKKworZGl2Rm9vUGFyc2VkID0gY3JlYXRlRWxl
bWVudEZyb21IVE1MKCc8ZGl2IGlzPXgtZm9vPicpCitzaG91bGRCZUZhbHNlKCJkaXZGb29QYXJz
ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJkaXZGb29QYXJz
ZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCituYW1lZEJhclBhcnNlZCA9IGNyZWF0
ZUVsZW1lbnRGcm9tSFRNTCgnPHgtYmFyPicpCitzaG91bGRCZUZhbHNlKCJuYW1lZEJhclBhcnNl
ZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoIm5hbWVkQmFyUGFy
c2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2RpdkJhclBhcnNlZCA9IGNy
ZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPGRpdiBpcz14LWJhcj4nKQorc2hvdWxkQmVGYWxzZSgiZGl2
QmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiZGl2
QmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193230</attachid>
            <date>2013-03-14 21:41:28 -0700</date>
            <delta_ts>2013-03-15 13:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110436-20130315133723.patch</filename>
            <type>text/plain</type>
            <size>64966</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI5N2Y0N2FjN2IzMTQ0
OWUyN2QyZmYzOTdlNmIzYWQ1MjU3MmQ3YS4uNjA2NzcxMThkN2ZmZTNlODFkYmVjNzZlNGE1OTM3
ZmNjYjUyMTNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxMy0wMy0xNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0N1c3RvbSBFbGVt
ZW50c10gQW55IEhUTUxFbGVtZW50IHN1YmNsYXNzIHNob3VsZCBiZWNvbWUgYSBzdXBlcmNsYXNz
IG9mIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzICJ0eXBlIGV4dGVuc2lvbiIgY29uY2Vw
dCBvZiBjdXN0b20gZWxlbWVudHMuCisgICAgICAgIFdpdGggdGhlIHR5cGUgZXh0ZW5zaW9uLCBl
YWNoIGN1c3RvbSBlbGVtZW50cyBhcmUgYWJsZSB0byBpbmhlcml0CisgICAgICAgIGZyb20gbm90
IG9ubHkgSFRNTEVsZW1lbnQsIGJ1dCBhbHNvIGFueSBIVE1MIGVsZW1lbnQuIFRvIG1ha2UgaXQg
d29yaywKKyAgICAgICAgdGhpcyBjaGFuZ2UgZXh0ZW5kcyB0aGUgcGx1bWJpbmcuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICA9IERhdGEg
c3RydWN0dXJlOgorCisgICAgICAgIC0gTGV0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBvYmpl
Y3RzIGJlaW5nIGtleWVkIGJ5IHBhaXIgb2YgKGVsZW1lbnQKKyAgICAgICAgICBuYW1lLCBsb2Nh
bCBuYW1lKSBhcyB0aGUgc3RhbmRhcmQgcmVxdXJpZXMsIGluc3RlYWQgb2YganVzdCB1c2luZwor
ICAgICAgICAgIHNpbmdsZSBuYW1lLiBTZWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDb25zdHJ1
Y3Rvck1hcCBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kKCkuCisKKyAgICAgICAgLSBD
cmVhdGVzIG1hcHBpbmcgZnJvbSBXcmFwcGVyVHlwZUluZm8gdG8gZWxlbWVudCBuYW1lLiAgVGhp
cyBtYXAKKyAgICAgICAgICBjYW4gYmUgbG9va2VkLXVwIGJ5IGdlbmVyYXRlZCBmdW5jdGlvbnMg
bGlrZQorICAgICAgICAgIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKCkuICBXaXRoIHRoaXMgdGFi
bGUsIFdlYktpdCBjYW4gZGV0ZXJtaW5lCisgICAgICAgICAgdGhlIGN1c3RvbSBlbGVtZW50IGxv
Y2FsIG5hbWUgb2YgZ2l2ZW4gcHJvdG90eXBlIG9iamVjdC4gU2VlICBtYWtlX25hbWVzLnBsLgor
ICAgICAgICAgIE5vdGUgdGhhdCBWOCBwcm90b3R5cGUgb2JqZWN0IGtub3dzIGFzc29jaWF0ZWQg
V3JhcHBlclR5cGVJbmZvLiBTZWUgcjE0NDg2NS4KKworICAgICAgICA9IEhvb2tpbmcgdXAgZWxl
bWVudCBsaWZlY3lsZToKKworICAgICAgICAtIENyZWF0ZSBhcHByb3ByaWF0ZSBDKysgaW5zdGFu
Y2UgZm9yIGVhY2ggY3VzdG9tIGVsZW1lbnQuICBCZWZvcmUKKyAgICAgICAgICB0aGlzIGNoYW5n
ZSwgdGhlIEMrKyBiYWNrZW5kIG9mIGN1c3RvbSBlbGVtZW50cyB3ZXJlIGFsd2F5cworICAgICAg
ICAgIEhUTUxVbmtub3duRWxlbWVudHMgb3IgSFRNTEVsZW1lbnQuICBTZWUKKyAgICAgICAgICBD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKSBhbmQgRWxlbWVudEZhY3Rv
cmllcyBpbgorICAgICAgICAgIG1ha2VfbmFtZXMucGwuCisKKyAgICAgICAgLSBIb29rcyB1cCBl
bGVtZW50IGNvbnN0cnVjdGlvbiBhbmQgZWxlbWVudCB3cmFwcGVyIGNyZWF0aW9uIGZvcgorICAg
ICAgICAgIGN1c3RvbSBlbGVtZW50ICJiZWZvcmUiIG5vbi1jdXN0b20gY2FzZSBpbnN0ZWFkIG9m
ICJhZnRlciIKKyAgICAgICAgICB0aGF0LiBXZSBkbyB0aGlzIGJlY2F1c2UgY3VzdG9tIGVsZW1l
bnQgbmVlZHMgdG8KKyAgICAgICAgICBvdmVycmlkZSBub24tY3VzdG9tIGNhc2Ugd2hlbiBAaXMg
YXR0cmlidXRlIGlzIGdpdmVuIGZvcgorICAgICAgICAgIG90aGVyd2lzZS1ub24tY3VzdG9tIGVs
ZW1lbnRzIGxpa2UgPGRpdiBpcz14LWJhcj4uCisgICAgICAgICAgU2VlIG1ha2VfbmFtZXMucGwu
CisKKyAgICAgICAgLSBHaXZlcyBAaXMgYXR0cmlidXRlcyB0byBlbGVtZW50cyBpZiBuZWVkZWQu
IFNlZSBzZXRUeXBlRXh0ZW5zaW9uKCkgY2FsbCBzaXRlcworICAgICAgICAgIGxpa2UgRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoKSwgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnR0TlMoKSBhbmQgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50dCgpCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXNWYWxpZFByb3RvdHlwZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRIZWxwZXJzOjppc1ZhbGlkUHJvdG90eXBlUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRXcmFw
cGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaDoK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRIZWxwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEN1c3RvbUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojpj
cmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaDoK
KyAgICAgICAgKFY4Q3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbUVs
ZW1lbnQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1
Y3Rvck9mKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAg
ICAgKFdyYXBwZXJUeXBlVHJhaXRzKTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRUeXBlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpkb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OnR5cGVO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6bG9jYWxO
YW1lKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5hbWVJbmNsdWRlc0h5cGhlbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmlzVmFsaWROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Lmg6CisgICAgICAgIChDdXN0b21FbGVtZW50UmVnaXN0cnkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJl
Z2lzdHJ5KTogTW92ZWQgZnJvbSBEb2N1bWVudC5jcHAgdG8gYmUgaW5saW5lZC4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAg
ICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3Bw
RmlsZSk6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVkIEBpcyBhdHRyaWJ1dGUKKwogMjAx
My0wMy0xNCAgQnJhbmRvbiBKb25lcyAgPGJham9uZXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBD
aGVjayB0byBlbnN1cmUgTXVsdGlzYW1wbGVSZW5kZXJidWZmZXIgY3JlYXRpb24gc3VjY2VlZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggYzVhYjM2MDA1NDczNTVmNzMwOTc4NjRlYjNjODNiOTNmYjBjYjA3ZC4uMjAyNWM2
NDBmMWRmZjlkODFhMjFlYjAwMmU2YWNmNWQ0MDA0Y2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUxNCw2ICs1MTQs
MTIgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8JHtuYXRpdmVUeXBlfSA+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJiR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5mbzsgfQorfTsKKwogRU5ECiAKICAgICBteSAkY3VzdG9tV3JhcCA9ICEhKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0gb3IgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4Rmxv
YXQ2NEFycmF5LmgKaW5kZXggNDMzN2RkMjZkYjFiZWJlYjI0OWUzZGEzMDAyY2I0ZTMwMmFkZDFi
My4uYTM5NGNlNjhiZDVmY2VjM2VmYWVkNWRlODgwN2RjNmVlZTRjZThlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmgKQEAgLTUyLDYgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4sIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAor
dGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8RmxvYXQ2NEFycmF5ID4geworcHVi
bGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhGbG9h
dDY0QXJyYXk6OmluZm87IH0KK307CisKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEZs
b2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCBjODBl
ZmE2OWYzMmQ5NDIxNTlkZjNlMmY3Mzc1MjY2YjM0NDQ3ZmE0Li45MTkyOWY2ZmVjMjJlNTEyZmJm
OTM3M2NhMGU0NjkzNjE0NjA3OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBA
IC01MCw2ICs1MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0QWN0aXZlRE9NT2JqZWN0Piwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0
ZW1wbGF0ZTw+CitjbGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0QWN0aXZlRE9NT2JqZWN0ID4g
eworcHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAm
VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCAyYTUxY2RlZDlhZTc5NmM3NWM5OTIx
ZTA4ZGFhODQwMmM0YTIzYTNiLi4zNmU1Y2YwOGY1ZjlmZDJmZDVkOTlkYjdkOWMzNGFmMDBhYTBh
ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNTEsNiArNTEsMTIg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+Citj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RDdXN0
b21OYW1lZEdldHRlcjo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZWNkMTU5YmFjZDhjZTRjYTk5MWI1ZjUwNzUzZDJi
MmUzNjRiZGEwOS4uNzc5ZTkzODBiZDU2MDBkYTNiYzMyN2ZkY2VjMmU1YzVlNTVhZThjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC01Miw2ICs1MiwxMiBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1Jl
ZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBl
clR5cGVUcmFpdHM8VGVzdEV2ZW50Q29uc3RydWN0b3IgPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFdyYXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjppbmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVz
dEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5k
ZXggM2QzNjYyYTBiNjM0MjQ3ZDEwZmE3NjhkNGZmNTNiN2RlNzYxYzU0YS4uNDViYjk1Y2E5NWJl
ZWRjNmM2ZWQ0ODU5M2I1ZTBlZjliOWFjN2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAg
LTU0LDYgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudFRhcmdldD4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdEV2ZW50VGFyZ2V0ID4geworcHVibGlj
OgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0RXZl
bnRUYXJnZXQ6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRl
eCA5Y2Y4MzE5NTAyMGY2MGUwMjRiNjYwYjQ0ZDJiMGFlMzdiMWU0MDcwLi5kZWJhZjkxN2YwNzJj
YWVmOTcxNjYzMTczN2U3Y2RjOTgxZDlmODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC01MCw2
ICs1MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+Citj
bGFzcyBXcmFwcGVyVHlwZVRyYWl0czxUZXN0RXhjZXB0aW9uID4geworcHVibGljOgorICAgIHN0
YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0RXhjZXB0aW9uOjpp
bmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDA2MTk2Mjg2YzYx
MzNmYzY0MzVjYzA5ZmI3MmQ5NzQ3NjlhYjRjOWIuLmExNmUwYTkwOWUwNTdkYzkxNTdhMTRkNmYz
ZDFmMzBhMDdlZGM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKK3RlbXBsYXRlPD4KK2NsYXNzIFdyYXBwZXJU
eXBlVHJhaXRzPFRlc3RJbnRlcmZhY2UgPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdyYXBwZXJU
eXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3RJbnRlcmZhY2U6OmluZm87IH0KK307CisK
IAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0SW50ZXJmYWNlKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRl
eCAzMGI1ZGUwNGQ2OWZkYzI4NGUyNzgyYzdhNzg3NzkzY2I5NTkxN2ZlLi4xZDZkOTAzNTlmNTdm
MDBiODQ4NDdmYTQ1YzMxNTRjMzkzNmVmZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTUwLDYgKzUwLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiB9OwogCit0ZW1wbGF0ZTw+CitjbGFzcyBXcmFwcGVyVHlwZVRy
YWl0czxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4gJlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmgKaW5kZXggMzk0MzY0YTU3ZGJjZGJjMTJlYjYyNThlODY4NDMxNDgz
ZTQxZWFlOS4uMDY1NjFmYWVmOTRlY2M2ODhmODg3ZTZhNTNlODUyOWU2YmU5ZWY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC01Nyw2ICs1NywxMiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5
cGVUcmFpdHM8VGVzdE5hbWVkQ29uc3RydWN0b3IgPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdy
YXBwZXJUeXBlSW5mbyogaW5mbygpIHsgcmV0dXJuICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpp
bmZvOyB9Cit9OworCiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE5h
bWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCmluZGV4IDU4NjBlOTExNWMwYjAz
NGJjNTFjYTUwOTM1NjU3NzgwY2MzY2JhNTguLmRmODhkYjRhN2Y4ZjdiNzRjMzE1Y2JjYTYyZWE3
MWZlN2NmYTQ4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApAQCAtNTIsNiArNTIsMTIgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqKTsKIH07CiAKK3RlbXBsYXRlPD4KK2NsYXNzIFdyYXBwZXJUeXBlVHJhaXRzPFRlc3ROb2Rl
ID4geworcHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVy
biAmVjhUZXN0Tm9kZTo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKFRlc3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggODc3YWMyNTBjNzRk
NGUxNjhjZDIxMDMzYmRjNDI5N2JhNDAyZjJkOC4uMmUxNmVmM2EyOTAxNDE1OGIwYjRlYjZhZGE5
YzQ5MmU1NjM0NjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNTYsNiArNTYsMTIgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dE9iaj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwogfTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdE9iaiA+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvKiBpbmZvKCkgeyByZXR1cm4g
JlY4VGVzdE9iajo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oCmluZGV4IDMwODY4OWIzNDhmMzRhYTFjYWQ1YzNhNTllOTg1MjQxYWIz
YjljNDguLjYxYzZkN2RmMTdlMzQ3NmQzZTY0Yzg1NjAxMzA2NjEzODdmZjM5NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNTEsNiArNTEsMTIgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKK3RlbXBsYXRlPD4K
K2NsYXNzIFdyYXBwZXJUeXBlVHJhaXRzPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gewor
cHVibGljOgorICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKaW5kZXggNTBkY2JmMTYxZjlhMDJkNWY4Nzc1Yjk3ZGMyMjg3ZGI0N2NkNjM1Yi4u
YTczY2E1NmM3MTI0NzE2MTJiOGJlMDBiMjkyMGE5NzBmMzc2OTA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNTIsNiAr
NTIsMTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4s
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwog
fTsKIAordGVtcGxhdGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSA+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZTo6aW5mbzsgfQorfTsKKwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVk
ZWZzLmgKaW5kZXggZWU5ZWMyZjRlNDBmMTcxYTg1MTFiNTNhMjZlMGM2NmVmYzdkYTMwYS4uOWIx
NzJjODUxNDFlOTE0NWMyOWMxNzliNjcyYTUyZDRkNjY1OTQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgK
QEAgLTUxLDYgKzUxLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RUeXBlZGVmcz4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAordGVtcGxh
dGU8PgorY2xhc3MgV3JhcHBlclR5cGVUcmFpdHM8VGVzdFR5cGVkZWZzID4geworcHVibGljOgor
ICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGluZm8oKSB7IHJldHVybiAmVjhUZXN0VHlwZWRl
ZnM6OmluZm87IH0KK307CisKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChU
ZXN0VHlwZWRlZnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCA1NDhhNjQ3YTE5ZTUyYzMzODdl
NjQ5NWJjZmI0ZjQ4ZGE1MmNmODRlLi4yY2Q1Y2E0MDFlN2E0YzM3MzY5NjE5MjllMGY4MTE4YTIw
MTM1OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVt
ZW50SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIlY4SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlY4SFRNTFBhcmFn
cmFwaEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTcGFuRWxlbWVudC5oIgogCkBAIC02Mywx
NyArNjQsMTEgQEAgYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aW5pdGlhbGl6ZUNvbnN0cnVj
dG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotLy8gU2VlIEZJWE1FIG9uIHRoZSBjYWxsZXIgc2lkZSBjb21tZW50Lgotc3RhdGljIGJvb2wg
aGFzTm9CdWlsdGluc0luUHJvdG90eXBlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRtbFByb3Rv
dHlwZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKQorc3RhdGljIGJvb2wgaGFzVmFsaWRQ
cm90b3R5cGVDaGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlcXVpcmVkQW5jZXN0b3IsIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKIHsKLSAgICB3aGlsZSAoIWNoYWluLklzRW1wdHko
KSkgewotICAgICAgICBpZiAoY2hhaW4gPT0gaHRtbFByb3RvdHlwZSkKKyAgICB3aGlsZSAoIWNo
YWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgeworICAgICAgICBpZiAoY2hhaW4g
PT0gcmVxdWlyZWRBbmNlc3RvcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBp
ZiAoIWNoYWluLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAvLyBUaGUgaW50ZXJuYWwgZmllbGQgY291bnQgaW5kaWNhdGVzIHRoZSBvYmplY3QgbWlnaHQg
YmUgYSBuYXRpdmUgYmFja2VkLCBidWlsdC1pbiBvYmplY3QuCi0gICAgICAgIGlmICh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNoYWluKS0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNoYWluID0gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChjaGFpbiktPkdldFByb3RvdHlwZSgpOwogICAgIH0KIApAQCAtOTAsMjAgKzg1
LDE0IEBAIGJvb2wgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0
ZXIoY29uc3QgU2NyaXB0VmFsdWUmIHByb3RvdHlwCiAgICAgaWYgKHByb3RvdHlwZU9iamVjdC0+
SGFzT3duUHJvcGVydHkodjhTdHJpbmcoImNvbnN0cnVjdG9yIiwgc3RhdGUtPmNvbnRleHQoKS0+
R2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBWOFBlckNvbnRleHRE
YXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20oc3RhdGUtPmNvbnRl
eHQoKSk7Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDQzNgotICAgIC8vICAgZG9jdW1lbnQucmVnaXN0ZXIoKSBzaG91bGQg
YWxsb3cgYXJiaXRyYXJ5IEhUTUxFbGVtZW50IHN1YmNsYXNzc2VzLgotICAgIC8vICAgQ3VycmVu
dGx5IGl0IHN1cHBvcnRzIGN1c3RvbSBlbGVtZW50cyB3aGljaCBhcmUKLSAgICAvLyAgIC0gZGly
ZWN0IHN1YmNsYXNzZXMgb2YgSFRNTEVsZW1lbnQgb3IKLSAgICAvLyAgIC0gc3ViY2xhc3NlcyBv
ZiBvdGhlciBjdXN0b20gZWxlbWVudHMKLSAgICAvLworICAgIC8vIEZJWE1FOiBub24tSFRNTCBz
dWJjbGFzc2VzIHNob3VsZCBiZSBhbHNvIHN1cHBvcnRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMTY5MwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaHRt
bENvbnN0cnVjdG9yID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwZXJDb250ZXh0RGF0
YS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOEhUTUxFbGVtZW50OjppbmZvKSk7CiAgICAgaWYgKGh0
bWxDb25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGh0bWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGh0bWxDb25zdHJ1Y3Rvci0+R2V0KHY4U3RyaW5nKCJwcm90b3R5cGUiLCBzdGF0ZS0+
Y29udGV4dCgpLT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGh0bWxQcm90b3R5cGUuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFoYXNOb0J1aWx0aW5zSW5Qcm90
b3R5cGUoaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKKyAgICBpZiAoIWhhc1ZhbGlk
UHJvdG90eXBlQ2hhaW4oaHRtbFByb3RvdHlwZSwgcHJvdG90eXBlT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTIwLDYgKzEwOSwzNCBAQCBi
b29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NvbnN0IFF1YWxpZmll
ZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKGNvbnN0IFNjcmlwdFZh
bHVlJiBwcm90b3R5cGUpCit7CisgICAgaWYgKHByb3RvdHlwZS52OFZhbHVlKCkuSXNFbXB0eSgp
IHx8ICFwcm90b3R5cGUudjhWYWx1ZSgpLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHBy
b3RvdHlwZS52OFZhbHVlKCkpKTsKK30KKworV3JhcHBlclR5cGVJbmZvKiBDdXN0b21FbGVtZW50
SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKK3sK
KyAgICB3aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgeworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChjaGFpbik7CisgICAgICAgIC8vIE9ubHkgcHJvdG90eXBlIG9iamVjdHMg
b2YgbmF0aXZlLWJhY2tlZCB0eXBlcyBoYXZlIHRoZSBleHRyYSBpbnRlcm5hbCBmaWVsZCBzdG9y
aW5nIFdyYXBwZXJUeXBlSW5mby4KKyAgICAgICAgaWYgKHY4UHJvdG90eXBlSW50ZXJuYWxGaWVs
ZGNvdW50ID09IGNoYWluT2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSkKKyAgICAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KGNoYWluT2JqZWN0LT5H
ZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4UHJvdG90eXBlVHlwZUluZGV4KSk7
CisgICAgICAgIGNoYWluID0gY2hhaW5PYmplY3QtPkdldFByb3RvdHlwZSgpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCisvLyBUaGlzIGNhbiByZXR1cm4gbnVsbC4gSW4gdGhhdCBjYXNl
LCB3ZSBzaG91bGQgdGFrZSB0aGUgZWxlbWVudCBuYW1lIGFzIGl0cyBsb2NhbCBuYW1lLgorY29u
c3QgUXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5hbWUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbikKK3sKKyAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUg
PSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKGNoYWluKTsKKyAgICBpZiAo
IXR5cGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmaW5kSFRNTFRhZ05hbWVPZlY4
VHlwZSh0eXBlKTsKK30KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmlu
ZGV4IDA4ZDFiY2JjMTg5NTY5NWRkYWFiZGFkMGZiZjNmOGI5ZDMxYWJiYTUuLmYyOTBmNTQ4ODBk
MDk3NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaApAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNjcmlw
dFN0YXRlOwogCiBjbGFzcyBDdXN0b21FbGVtZW50SGVscGVycyB7CkBAIC00Niw4ICs0NywxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUNvbnN0cnVjdG9yV3JhcHBlcihD
dXN0b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlLCBT
Y3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIo
Y29uc3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzRmVh
dHVyZUFsbG93ZWQoU2NyaXB0U3RhdGUqKTsKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSogZmluZExvY2FsTmFtZShjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKTsKIAogICAgIHN0
YXRpYyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOworICAg
IHN0YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY2hhaW4pOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kTG9jYWxO
YW1lKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOwogfTsKIAogI2VuZGlmIC8vIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEN1c3RvbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0
b21FbGVtZW50LmNwcAppbmRleCBlNWIzNGJlYjc4MDZiNTJmMjJlNjQyN2ZiZGUxYmFiYzkzOTU4
OGU5Li4wZTZhOGY4MjlhYTIwM2E2ZjA1OGRhMTcxYWQzNzk1MDMzZGNjNDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5jcHAKQEAgLTQyLDMwICs0
MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXcmFwcGVyVHlwZUluZm8q
IGZpbmRXcmFwcGVyVHlwZU9mKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbikKLXsKLSAgICB3
aGlsZSAoIWNoYWluLklzRW1wdHkoKSAmJiBjaGFpbi0+SXNPYmplY3QoKSkgewotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChjaGFpbik7Ci0gICAgICAgIGlmICh2OFByb3RvdHlwZUludGVybmFsRmllbGRjb3Vu
dCA9PSBjaGFpbk9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkpCi0gICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihjaGFpbk9iamVjdC0+R2V0QWxp
Z25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OFByb3RvdHlwZVR5cGVJbmRleCkpOwotICAg
ICAgICBjaGFpbiA9IGNoYWluT2JqZWN0LT5HZXRQcm90b3R5cGUoKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gMDsKLX0KLQotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEN1c3RvbUVsZW1lbnQ6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1l
bnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1
Y3Rvck9mKGltcGwuZ2V0KCkpOwotICAgIGlmICghY29uc3RydWN0b3IpIHsKLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5r
bm93bkVsZW1lbnQodG9IVE1MRWxlbWVudChpbXBsLmdldCgpKSksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci0gICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHkoKSAmJiB3cmFwcGVy
VmFsdWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpOwotICAgIH0KLQogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciBhbmQgcmVnaXN0ZXJl
ZCBsaWZlY3ljbGUgY2FsbGJhY2tzIHNob3VsZCBiZSB2aXNpYmxlIG9ubHkgZnJvbSBtYWluIHdv
cmxkLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBiZSBuZWVkZWQgb25jZSBlYWNoIGN1
c3RvbSBlbGVtZW50IGhhcyBpdHMgb3duIEZ1bmN0aW9uVGVtcGxhdGUKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTM4CkBAIC04MSw3ICs2MSw3IEBA
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBh
c3NSZWZQdHI8RWxlbWVudD4gaW1wbCwKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0cnVjdG9yV2FwcGVyID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZhbHVlKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoY29uc3RydWN0b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlw
ZSIpKSk7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IGZpbmRXcmFwcGVyVHlwZU9m
KHByb3RvdHlwZSk7CisgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IEN1c3RvbUVsZW1l
bnRIZWxwZXJzOjpmaW5kV3JhcHBlclR5cGUocHJvdG90eXBlKTsKICAgICBpZiAoIXR5cGVJbmZv
KQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCmluZGV4IDcwMGQ4YjUxOTlhYjQy
YjZkY2FmYjk4MDgxNDQ3NjZkYTk2NmQwMzYuLjcyYjBmNzJkYmNlNDVkNTAzY2FmM2RmMTRkMDY3
OWM0MWNlYmE2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3Vz
dG9tRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q3VzdG9tRWxl
bWVudC5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFY4Q3VzdG9tRWxlbWVudF9oCiAjZGVm
aW5lIFY4Q3VzdG9tRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5o
IgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKQEAgLTQwLDQ1ICs0MywzNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgVjhDdXN0b21F
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICAvLworICAgIC8vIFlvdSBjYW4ganVz
dCB1c2UgdG9WOChOb2RlKikgdG8gZ2V0IGNvcnJlY3Qgd3JhcHBlciBvYmplY3RzLCBldmVuIGZv
ciBjdXN0b20gZWxlbWVudHMuCisgICAgLy8gVGhlbiBnZW5lcmF0ZWQgRWxlbWVudFdyYXBwZXJG
YWN0b3JpZXMgY2FsbCBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoKSB3aXRoIHByb3BlciBDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IgaW5zdGFuY2VzCisgICAgLy8gYWNjb3JkaW5nbHkuCisgICAgLy8K
KyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEVsZW1lbnQqLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3JPZihFbGVtZW50Kik7CiAKIHByaXZhdGU6
Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVm
UHRyPEVsZW1lbnQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxF
bGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEN1c3RvbUVsZW1lbnQ6OnRvVjgoRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6Ondy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQotaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVt
ZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1Jl
ZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwotICAgIHJldHVybiBWOEN1c3Rv
bUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xhdGUpOwogfQogCi0jZWxzZSAvLyBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQotCi1jbGFzcyBWOEN1c3RvbUVsZW1lbnQgewotcHVibGljOgotICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6
SXNvbGF0ZSogPSAwKTsKLX07Ci0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEhUTUxD
dXN0b21FbGVtZW50Ojp3cmFwKEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSBQYXNzUmVmUHRy
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gVjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9m
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHdyYXAodG9IVE1MVW5rbm93bkVsZW1l
bnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgaWYgKEN1c3RvbUVsZW1l
bnRSZWdpc3RyeSogcmVnaXN0cnkgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5yZWdpc3RyeSgpKQor
ICAgICAgICByZXR1cm4gcmVnaXN0cnktPmZpbmRGb3IoZWxlbWVudCk7CisgICAgcmV0dXJuIDA7
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZk
ZWI1ZmNhZTc2ODhmNzk1MGFhMzU2Li45NWNlNzdhZjE1MDljOWRkMWQxNGUxOTBlMjE3NTQwYjk5
ZDU3Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlw
ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8u
aApAQCAtMTc4LDYgKzE3OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdyYXBw
ZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRp
bWV9OwogICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKICAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbGVtZW50VHlwZT4KKyAgICBjbGFzcyBXcmFwcGVyVHlwZVRyYWl0cyB7CisgICAg
ICAgIC8vIHNwZWNpYWxpemVkIGNsYXNzZXMgaGF2ZSB0aGllciBvd24gZnVuY3Rpb25zLCB3aGlj
aCBhcmUgZ2VuZXJhdGVkIGJ5IGJpbmRpbmcgZ2VuZXJhdG9yLgorICAgIH07CiB9CiAKICNlbmRp
ZiAvLyBXcmFwcGVyVHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvckN1
c3RvbS5jcHAKaW5kZXggOGVkNzliODVlMDY4NWJlMTA0MDljNzVjNTNhNTAyMzhlZTgyZmM2OS4u
NTVlMzhjZTk5NWY5M2ZmZTZhNTJkMmVjZWY0ZGVmMDk2NGY5NTYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y2FsbEFzRnVuY3Rpb25D
YWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBpbXBsLT5jcmVh
dGVFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKLSAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50Ojp0b1Y4KGVsZW1lbnQuZ2V0KCksIGFy
Z3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhDdXN0b21FbGVt
ZW50Ojp3cmFwKGVsZW1lbnQuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBjOTc1ZDZjNTMyMmY0NWYy
NjVhYjJkN2I3YmM5NTMyMTRjZTEwMTY4Li4zNDMxOTcxOGU3YWM0OWYwZjU4YTdmZmM5M2ZlYWQ5
NTZjNWUwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yLmNwcApAQCAtMzcsMjEgKzM3LDI1IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhl
bHBlcnMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFNjcmlw
dFZhbHVlJiBwcm90b3R5cGUpCitQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUpCiB7Ci0g
ICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY3JlYXRlZCA9IGFkb3B0UmVmKG5l
dyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoZG9jdW1lbnQsIG5hbWUpKTsKKyAgICBBU1NFUlQo
Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzVmFsaWRQcm90b3R5cGVQYXJhbWV0ZXIocHJvdG90eXBl
LCBzdGF0ZSkpOworICAgIEFTU0VSVChsb2NhbE5hbWUgPT0gdHlwZU5hbWUgfHwgbG9jYWxOYW1l
ID09ICpDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGUpKTsKKyAg
ICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGVkID0gYWRvcHRSZWYobmV3
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcihkb2N1bWVudCwgdHlwZU5hbWUsIGxvY2FsTmFtZSkp
OwogICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmluaXRpYWxpemVDb25zdHJ1Y3Rvcldy
YXBwZXIoY3JlYXRlZC5nZXQoKSwgcHJvdG90eXBlLCBzdGF0ZSkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBjcmVhdGVkLnJlbGVhc2UoKTsKIH0KIAotQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKQorQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQpCi0gICAgLCBtX25hbWUobmFtZSkKKyAgICAs
IG1fdHlwZU5hbWUodHlwZU5hbWUpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiB7CiB9
CiAKQEAgLTYzLDcgKzY3LDE2IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fbmFt
ZSwgZG9jdW1lbnQoKSk7CisgICAgaWYgKG1fbG9jYWxOYW1lICE9IG1fdHlwZU5hbWUpCisgICAg
ICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9uKGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobV9s
b2NhbE5hbWUsIGRvY3VtZW50KCkpLCBtX3R5cGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZShtX3R5cGVOYW1lLCBkb2N1bWVudCgpKTsKK30KKworUGFz
c1JlZlB0cjxFbGVtZW50PiBzZXRUeXBlRXh0ZW5zaW9uKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKQoreworICAgIGlmICghdHlw
ZUV4dGVuc2lvbi5pc0VtcHR5KCkpCisgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmlzQXR0ciwgdHlwZUV4dGVuc2lvbik7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRl
eCBjZTFiZWUyYzJjODFiYTYzZTRjNDU3ODBiYzc0YTg2ZjEzNjE5MThhLi4wZWVkNzlhZTU4Mzli
M2M4ZDNkNDZjMmUxMWMyODhlMmZmYTg4OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC00OCwyMSArNDgsMjUgQEAgY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIFNjcmlwdFN0YXRlOwogY2xhc3MgU2NyaXB0VmFsdWU7CiAKK1Bhc3NSZWZQdHI8
RWxlbWVudD4gc2V0VHlwZUV4dGVuc2lvbihQYXNzUmVmUHRyPEVsZW1lbnQ+LCBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGVFeHRlbnNpb24pOworCiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+ICwgcHVibGlj
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNyZWF0ZShTY3JpcHRTdGF0ZSosIERvY3Vt
ZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjcmVhdGUoU2NyaXB0U3Rh
dGUqLCBEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBsb2NhbE5hbWUsIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICB2aXJ0dWFs
IH5DdXN0b21FbGVtZW50Q29uc3RydWN0b3IoKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQot
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
KyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KKyAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZU5hbWU7IH0KKyAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQog
CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgCisK
IHByaXZhdGU6Ci0gICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2Nh
bE5hbWUpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBtX25hbWU7CisgICAgUXVhbGlmaWVkTmFtZSBt
X3R5cGVOYW1lOworICAgIFF1YWxpZmllZE5hbWUgbV9sb2NhbE5hbWU7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IDQ4ODYzYmIx
NWEwMDhmZWU0NTA4MTljOGQ2ZWUyMjE4YWJhN2JkNzcuLjZjMjhmMjgxOTIzYjhiZmY3MzRkMmMy
NzY4MDkzZTkxZTIzMzE4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKQEAgLTYyLDE4ICs2MywxNSBAQCBDdXN0b21F
bGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50UmVnaXN0cnkoKQogewogfQogCi1QYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25z
dHJ1Y3Rvck9mKEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1
ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8Q3VzdG9t
RWxlbWVudFJlZ2lzdHJ5PiBzZWxmID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKTsK
LSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzZWxmLT5maW5k
KGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgIHNpemVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5hbWUu
ZmluZCgnLScpOworICAgIHJldHVybiAoaHlwaGVuUG9zaXRpb24gIT0gbm90Rm91bmQpOwogfQog
CiBib29sIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6aXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQogewotICAgIHNpemVfdCBoeXBoZW5Qb3NpdGlvbiA9IG5hbWUuZmluZCgnLScp
OwotICAgIGlmIChoeXBoZW5Qb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICBpZiAoIW5hbWVJbmNs
dWRlc0h5cGhlbihuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChWZWN0b3I8QXRvbWljU3RyaW5nPiwgcmVzZXJ2ZWROYW1lcywgKCkpOwpAQCAt
MTEyLDExICsxMTAsNiBAQCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQoU2NyaQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAgICAgICAgIAotICAgIGlmIChmaW5kKG5ld05hbWUpKSB7Ci0gICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIFNj
cmlwdFZhbHVlIHByb3RvdHlwZVZhbHVlOwogICAgIGlmICghb3B0aW9ucy5nZXQoInByb3RvdHlw
ZSIsIHByb3RvdHlwZVZhbHVlKSkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBk
ZWZhdWx0IHZhbHVlIGhhbmRsaW5nLgpAQCAtMTMyLDMzICsxMjUsNzEgQEAgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6cmVnaXN0ZXJF
bGVtZW50KFNjcmkKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQorCisgICAgaWYgKG1fbmFtZXMuY29udGFpbnMobmV3TmFtZSkpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbG9jYWxOYW1lRm91bmQgPSBDdXN0b21FbGVtZW50
SGVscGVyczo6ZmluZExvY2FsTmFtZShwcm90b3R5cGVWYWx1ZSk7CisgICAgUXVhbGlmaWVkTmFt
ZSBsb2NhbE5hbWVUb1VzZSA9IGxvY2FsTmFtZUZvdW5kID8gKmxvY2FsTmFtZUZvdW5kIDogbmV3
TmFtZTsKKyAgICBpZiAoZmluZChuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIAot
ICAgIC8vIEFuIHNjcmlwdCBleGVjdXRpb24gY291bGQgaGFwcGVuIGluIGlzVmFsaWRQcm90b3R5
cGVQYXJhbWV0ZXIoKSwgd2hpY2gga2lsbHMgdGhlIGRvY3VtZW50LgorICAgIC8vIEEgc2NyaXB0
IGV4ZWN1dGlvbiBjb3VsZCBoYXBwZW4gaW4gaXNWYWxpZFByb3RvdHlwZVBhcmFtZXRlcigpLCB3
aGljaCBraWxscyB0aGUgZG9jdW1lbnQuCiAgICAgaWYgKCFkb2N1bWVudCgpKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUsIGRvY3VtZW50KCksIG5ld05hbWUsIHByb3Rv
dHlwZVZhbHVlKTsKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1
Y3RvciA9IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLCBkb2N1bWVudCgp
LCBuZXdOYW1lLCBsb2NhbE5hbWVUb1VzZSwgcHJvdG90eXBlVmFsdWUpOwogICAgIGlmICghY29u
c3RydWN0b3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgICAgICAKLSAgICBtX2NvbnN0cnVjdG9ycy5hZGQoY29uc3RydWN0
b3ItPm5hbWUoKS5pbXBsKCksIGNvbnN0cnVjdG9yKTsKKyAgICBtX2NvbnN0cnVjdG9ycy5hZGQo
c3RkOjptYWtlX3BhaXIoY29uc3RydWN0b3ItPnR5cGVOYW1lKCksIGNvbnN0cnVjdG9yLT5sb2Nh
bE5hbWUoKSksIGNvbnN0cnVjdG9yKTsKKyAgICBtX25hbWVzLmFkZChjb25zdHJ1Y3Rvci0+dHlw
ZU5hbWUoKSk7CisKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0
aGlzKTsKKworICAgIC8vIE1vc3QgZWxlbWVudHMgY2FuIGJlIHJlamVjdGVkIHRoaXMgcXVpY2sg
c2NyZWVuaW5nLgorICAgIGlmICghbmFtZUluY2x1ZGVzSHlwaGVuKGVsZW1lbnQtPnRhZ05hbWUo
KSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmlzQXR0cikpCisgICAgICAg
IHJldHVybiAwOworCisgICAgUXVhbGlmaWVkTmFtZSBpZFZhbHVlKG51bGxBdG9tLCBlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNw
YWNlVVJJKTsKKyAgICByZXR1cm4gZmluZChpZFZhbHVlLCBlbGVtZW50LT50YWdRTmFtZSgpKTsK
K30KKworUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdAogewotICAgIENvbnN0cnVjdG9yTWFwOjpjb25zdF9p
dGVyYXRvciBmb3VuZCA9IG1fY29uc3RydWN0b3JzLmZpbmQobmFtZS5pbXBsKCkpOwotICAgIHJl
dHVybiAoZm91bmQgIT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpID8gZm91bmQtPnZhbHVlIDogMDsK
KyAgICBDb25zdHJ1Y3Rvck1hcDo6Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBtX2NvbnN0cnVjdG9y
cy5lbmQoKTsKKyAgICBpZiAoIXR5cGVOYW1lLmxvY2FsTmFtZSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgZm91bmQgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0ZDo6bWFrZV9wYWlyKHR5cGVOYW1lLCBs
b2NhbE5hbWUpKTsKKyAgICBpZiAoZm91bmQgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAg
ICAgIGZvdW5kID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGQ6Om1ha2VfcGFpcihsb2NhbE5hbWUs
IGxvY2FsTmFtZSkpOworICAgIGlmIChmb3VuZCA9PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZvdW5kLT52YWx1ZTsKIH0KIAotUGFzc1JlZlB0
cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKSBjb25zdAogewotICAgIGlmIChSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmb3VuZCA9IGZpbmQobmFtZSkpCi0gICAgICAg
IHJldHVybiBmb3VuZC0+Y3JlYXRlRWxlbWVudCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGVOYW1lID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgdHlwZUV4dGVuc2lvbiwgbG9jYWxO
YW1lLm5hbWVzcGFjZVVSSSgpKTsKKyAgICBpZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rvcj4gZm91bmQgPSBmaW5kKHR5cGVOYW1lLCBsb2NhbE5hbWUpKSB7CisgICAgICAgIFJlZlB0
cjxFbGVtZW50PiBjcmVhdGVkID0gZm91bmQtPmNyZWF0ZUVsZW1lbnQoKTsKKyAgICAgICAgaWYg
KCF0eXBlTmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkgJiYgbG9jYWxOYW1lICE9IHR5cGVOYW1l
KQorICAgICAgICAgICAgcmV0dXJuIHNldFR5cGVFeHRlbnNpb24oY3JlYXRlZCwgdHlwZUV4dGVu
c2lvbik7CisgICAgICAgIHJldHVybiBjcmVhdGVkLnJlbGVhc2UoKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5o
CmluZGV4IDIwODJjZDc2MjJjZjYyZWFiZTEzNmQ2YWZiMjdhNGRhYTYyZTcyN2EuLjEwMmFhM2Rl
MzhjMjExNjhlMGM3YjcwYzY1MjhhMmExYTkxZGU0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC01OSwxOCArNjAsMjAgQEAgcHVibGljOgogICAgIH5DdXN0b21FbGVtZW50UmVnaXN0
cnkoKTsKIAogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3Rl
ckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gZmluZEZvcihFbGVtZW50KikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGZpbmQoY29uc3QgUXVhbGlmaWVkTmFtZSYgZWxlbWVudE5hbWUsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uKSBjb25zdDsKKwogICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yPiBjb25zdHJ1Y3Rvck9mKEVsZW1lbnQqKTsKLSAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqLCBSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiA+Q29uc3RydWN0b3JNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHN0
ZDo6cGFpcjxRdWFsaWZpZWROYW1lLCBRdWFsaWZpZWROYW1lPiwgUmVmUHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcj4gPiBDb25zdHJ1Y3Rvck1hcDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UXVh
bGlmaWVkTmFtZT4gTmFtZVNldDsKIAogICAgIENvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3Jz
OworICAgIE5hbWVTZXQgbV9uYW1lczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMwMTgzYzI2YTUzNDVhYTk3OTY4OTg3ODg0Y2ZlYzU0
OWRjZDRjNGYuLmUxYmQ3YTg5MTM2MGQ4MGZhNjBkNmY4NWNkYzQzYjM2YjM5ZDAxNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQyLDYgKzg0Miw0MSBAQCBQYXNzUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQwogfQogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKK1Bhc3NSZWZQdHI8RWxl
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCFpc1ZhbGlkTmFtZShsb2NhbE5hbWUpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAo
bV9yZWdpc3RyeSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVkID0g
bV9yZWdpc3RyeS0+Y3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5h
bWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHlwZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlZDsKKyAgICB9CisKKyAgICByZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVhdGVF
bGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0ZW5zaW9uKTsgLy8gIEZJWE1FOiB0YWtlIGNh
cmUgb2YgQGlzCit9CisKK1Bhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1l
bnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFs
aWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKKyAgICBpZiAoIXBhcnNl
UXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFF1YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5h
bWUsIG5hbWVzcGFjZVVSSSk7CisgICAgaWYgKCFoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRz
KHFOYW1lKSkgeworICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIGlmIChtX3JlZ2lzdHJ5KSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZWQgPSBtX3JlZ2lzdHJ5LT5jcmVhdGVFbGVtZW50KHFOYW1lLCB0eXBl
RXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVkOworICAgIH0KKworICAgIHJl
dHVybiBzZXRUeXBlRXh0ZW5zaW9uKGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxp
ZmllZE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7Cit9CisKIFBhc3NSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiBEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlw
dFN0YXRlKiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICByZXR1cm4gcmVnaXN0ZXJFbGVtZW50KHN0YXRlLCBuYW1lLCBEaWN0aW9uYXJ5
KCksIGVjKTsKQEAgLTg1OCwxMSArODkzLDYgQEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3QKICAg
ICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVmKG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnkodGhp
cykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5LT5yZWdpc3RlckVsZW1lbnQoc3RhdGUsIG5hbWUs
IG9wdGlvbnMsIGVjKTsKIH0KLQotUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IERv
Y3VtZW50OjpyZWdpc3RyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVnaXN0cnk7Ci19CiAj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDQ4YTVhMjFiZWJmMDUzNzE4MTYzMGUzNzdmY2E1N2I4NDMzMzE5ZGQuLmZiY2Ew
YzJiNDliZjNlMGJmMTYxNGZmYmU3YTkzNDZhZmFhMWVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMTYwLDkgKzExNjAsMTEgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQorICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5z
aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVy
RWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
PiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gcmVnaXN0cnkoKSBjb25zdDsKKyAg
ICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdp
c3RyeS5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3Jv
bGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgUmVuZGVy
T2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBjYWE1OGNmMzAwYmMzOWM4ZDUw
MTc2MTgxNGJjNGU3MmNjYjA1Y2U5Li5hNGYwNTNjOTAxNjJjNGNkMTAxN2ZhNmU1NjQ3MWQ3ZWQz
M2EzZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTM2Myw2ICszNjMsOSBAQAogI2lm
IGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVNRU5UUykgJiYgRU5BQkxFX0NVU1RPTV9FTEVNRU5U
UwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Y3VzdG9tRE9NRWxlbWVudHMsIENvbmRpdGlvbmFs
PUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50ZWRBcz1yZWdpc3RlckVsZW1lbnQsIENhbGxXaXRo
PVNjcmlwdFN0YXRlXQogICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdpc3Rl
cihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRl
RWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxOYW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmlu
Z10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBb
UmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmll
ZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBM
QU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggMDQzYTM4MjQwOGNjNDE3
MDE2Y2Y0MDJmNjQ3MjE0OWZiOTVjY2Q5Ni4uYjkxMDNlNTRmZTE3N2ZmM2MxNTg4YzIxM2QwYTMx
OTdmZTM4ZjAwZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTgyMyw2ICs4MjMsMTEg
QEAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMp
CisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkgfHwgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTg5Niw2ICs5MDEsMTYgQEAgRU5ECiB9CiAKIHByaW50IEYgPDxFTkQKKyNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkg
eworICAgICAgICBpZiAoUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0
b3IgPSBkb2N1bWVudC0+cmVnaXN0cnkoKS0+ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNvbnN0cnVjdG9yLT5jcmVhdGVF
bGVtZW50KCk7CisgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0
PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PihlbGVtZW50LnJlbGVhc2UoKSk7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghZ0Z1bmN0aW9uTWFwKQogICAgICAgICBj
cmVhdGVGdW5jdGlvbk1hcCgpOwogICAgIGlmIChDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9u
ID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKSkgewpAQCAtOTEy
LDExICs5MjcsNyBAQCBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKIHBy
aW50IEYgPDxFTkQKICAgICB9CiAKLUVORAotOwotcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1l
dGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUocU5hbWUsIGRvY3VtZW50KTtcbiI7
Ci0KLXByaW50IEYgPDxFTkQKKyAgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZh
Y2VOYW1lfTo6Y3JlYXRlKHFOYW1lLCBkb2N1bWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKQEAgLTExNzIsOSArMTE4MywxMiBAQCBFTkQKIDsKICAgICB9IGVsc2lmICgkd3JhcHBl
ckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUg
IlY4Q3VzdG9tRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQuaCIKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisjaW5jbHVkZSAiVjhDdXN0
b21FbGVtZW50LmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHY4Lmg+CiBFTkQKIDsKQEAgLTEyNDQs
NiArMTI1OCwxOSBAQCBFTkQKIAogICAgIHByaW50IEYgPDxFTkQKICAgICB9CitFTkQKKzsKKyAg
ICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CisgICAgICAgIHByaW50IEYgPDxF
TkQKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIGlmIChQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0
cnVjdG9yT2YoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAo
ZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBjb25zdHJ1Y3RvciwgaXNvbGF0ZSk7CisjZW5kaWYK
K0VORAorOworICAgIH0KKworICAgIHByaW50IEYgPDxFTkQKICAgICBDcmVhdGUkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24g
PSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgaWYgKGNyZWF0ZVdy
YXBwZXJGdW5jdGlvbikKIEVORApAQCAtMTI3NSwxMSArMTMwMiw2IEBAIEVORAogICAgIHJldHVy
biBWOFNWR0VsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIEVORAogOwotICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
IGVxICJIVE1MIikgewotICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIHJldHVybiBWOEN1
c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVO
RAotOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnQgRiA8PEVORAogICAgIHJl
dHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTEyODksMTIgKzEzMTEsNDggQEAgRU5ECiAg
ICAgfQogICAgIHByaW50IEYgPDxFTkQKIH0KK0VORAorOworCisgICAgaWYgKCR3cmFwcGVyRmFj
dG9yeVR5cGUgZXEgIlY4IikgeworICAgICAgICBwcmludCBGIDw8RU5ECisKK2NvbnN0IFF1YWxp
ZmllZE5hbWUqIGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0
IFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV3Jh
cHBlclR5cGVJbmZvKiwgY29uc3QgUXVhbGlmaWVkTmFtZSo+IFR5cGVOYW1lTWFwOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoVHlwZU5hbWVNYXAsIG1hcCwgKCkpOworICAgIGlmIChtYXAuaXNF
bXB0eSgpKSB7CitFTkQKKzsKKworICAgICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAl
ZW5hYmxlZFRhZ3MpIHsKKyAgICAgICAgICAgIGlmICghdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRh
Z05hbWUpKSB7CisgICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdz
eyR0YWdOYW1lfXtjb25kaXRpb25hbH07CisgICAgICAgICAgICAgICAgaWYgKCRjb25kaXRpb25h
bCkgeworICAgICAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxF
KCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIiki
OworICAgICAgICAgICAgICAgICAgICBwcmludCBGICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biI7CisgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNl
TmFtZSA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VOYW1lfTsKKyAgICAgICAg
ICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50
ZXJmYWNlTmFtZX0+OjppbmZvKCksICYke3RhZ05hbWV9VGFnKTtcbiI7CisKKyAgICAgICAgICAg
ICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNl
bmRpZlxuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBwcmludCBGIDw8RU5ECisgICAgfQorCisgICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7
CiB9CiAKIEVORAogOworICAgIH0KIAorICAgIHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBG
ICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9z
ZSBGOwpAQCAtMTM0NSw2ICsxNDAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7CiAKKyAgICBjb25zdCBRdWFsaWZpZWRO
YW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBXcmFw
cGVyVHlwZUluZm8qKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAg
ICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpp
bmRleCAxNTRjMDMzNDlmYTY0NWNjYjI2MTVkZjJiYjk0ZWVhMzQ4MzdlZWM1Li42YzY3NTdkMTRh
Nzg4MmQxZjllMDlmM2Q5Y2I3MDcwNTkyM2MyN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTI2LDYgKzEyNiw3IEBAIGh0dHBfZXF1aXYKIGlkCiBp
bmNyZW1lbnRhbAogaW5kZXRlcm1pbmF0ZQoraXMKIGlzbWFwCiBpdGVtaWQKIGl0ZW1wcm9wCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYjFiOWIxODgxODQ0NzM5MzhlNjAzMzE0ODk5YTVjMWExYzdlOTJiZC4uNWNlODgzYzNj
OTE3Nzg5MWFhNTUxMDc4YjcxNjgyZDkzMGRhM2I0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEzLTAzLTEwICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBbQ3VzdG9tIEVsZW1lbnRzXSBBbnkgSFRNTEVsZW1lbnQgc3ViY2xhc3Mgc2hvdWxkIGJlY29t
ZSBhIHN1cGVyY2xhc3Mgb2YgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lz
dGVyLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1l
bnQtcmVnaXN0ZXItYmFzaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vZG9jdW1l
bnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5odG1s
OiBBZGRlZC4KKwogMjAxMy0wMy0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUuIEV4cGFuZGVk
IHN1cHByZXNzaW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2Rv
Y3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggZmZiNTI4
M2RhYzJhN2RlZmI2MWM1NzdlOGE0ZjFiOWNhZWI2ZjJjNy4uMWM0OTIyZjMwMDdkYzZkNDkxNWRl
NWJlZWM3ODVkOTQyODgyYmQ5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItYmFzaWMtZXhwZWN0ZWQudHh0CkBA
IC0xNCw3ICsxNCw2IEBAIFBBU1MgZG9jdW1lbnQucmVnaXN0ZXIoJ1gtRk9PJywgY3JlYXRlUmVn
aXN0ZXJQYXJhbXRlcnMoKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yCiBQQVNTIGRvY3VtZW50LnJl
Z2lzdGVyKCd4LWJhZC1hJywgeyBwcm90b3R5cGU6IEhUTUxFbGVtZW50LnByb3RvdHlwZSB9KSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDEx
LgogUEFTUyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYicsIHsgcHJvdG90eXBlOiB7fSB9KSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDEx
LgogUEFTUyBkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYycsIHsgcHJvdG90eXBlOiBPYmplY3Qu
Y3JlYXRlKERvY3VtZW50LnByb3RvdHlwZSkgfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZh
bGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1MgZG9jdW1lbnQucmVnaXN0ZXIo
J3gtYmFkLWQnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJv
dG90eXBlKSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExLgogUEFTUyBmb29Db25zdHJ1Y3RvcigpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0
aW9uLi4KIFBBU1MgY3JlYXRlZEZvby5fX3Byb3RvX18gaXMgZm9vQ29uc3RydWN0b3IucHJvdG90
eXBlCiBQQVNTIGNyZWF0ZWRGb28uY29uc3RydWN0b3IgaXMgZm9vQ29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci1iYXNp
Yy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJh
c2ljLmh0bWwKaW5kZXggZjViNzY5OWRmODNmNTBiYWZmOTU1MjI4M2YzOGVhM2Y5Y2E0ZDU3MC4u
YjU4OGNmZTlmN2Y5MzE0MGYxN2JjYTJlNzk4MGRjMTM5NzZmMDYzMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLWJhc2ljLmh0
bWwKQEAgLTM5LDggKzM5LDYgQEAgc2hvdWxkVGhyb3coImRvY3VtZW50LnJlZ2lzdGVyKCd4LWJh
ZC1hJywgeyBwcm90b3R5cGU6IEhUTUxFbGVtZW50LnByb3RvdHlwZSB9KSIKIHNob3VsZFRocm93
KCJkb2N1bWVudC5yZWdpc3RlcigneC1iYWQtYicsIHsgcHJvdG90eXBlOiB7fSB9KSIsICInRXJy
b3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOwogLy8gQmFkIHByb3Rv
dHlwZTogd3JvbmcgX19wcm90b19fCiBzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
YmFkLWMnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5cGUpIH0p
IiwgIidFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEnIik7Ci0vLyBC
dWcgMTEwNDM2IC0gRWxlbWVudHMgb3RoZXIgdGhhbiBIVE1MRW1lbWVudCBzaG91bGQgYmUgYWxs
b3dlZCBhcyBhIHN1cGVyY2xhc3MuCi1zaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gt
YmFkLWQnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MU3BhbkVsZW1lbnQucHJvdG90
eXBlKSB9KSIsICInRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIp
OwogLy8gQ2FsbCBhcyBmdW5jdGlvbgogc2hvdWxkVGhyb3coImZvb0NvbnN0cnVjdG9yKCkiLCAi
J1R5cGVFcnJvcjogRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEg
ZnVuY3Rpb24uJyIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9k
b2N1bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNhYTBiMzNhMDhhZDNhYmJkNDU3MzU5MTJkNGY5YzhlMWU4
OTMzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1
bWVudC1yZWdpc3Rlci10eXBlLWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjcg
QEAKK1Rlc3RpbmcgZG9jdW1lbnQucmVnaXN0ZXIoKSB0eXBlIGV4dGVuc2lvbiBiZWhhdmlvdXJz
IHRocm91Z2ggY3JlYXRlRWxlbWVudCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBkb2N1bWVudC5yZWdpc3RlcigneC1mb28nLCB7IHByb3RvdHlwZTogT2JqZWN0LmNy
ZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUpIH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGZvb05ld2VkLm91dGVy
SFRNTCBpcyAnPHgtZm9vPjwveC1mb28+JworUEFTUyBmb29OZXdlZCBpbnN0YW5jZW9mIGZvb0Nv
bnN0cnVjdG9yICYmIGZvb05ld2VkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgaXMgdHJ1ZQorUEFT
UyBmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCBpcyBmYWxzZQorUEFTUyBi
YXJOZXdlZC5vdXRlckhUTUwgaXMgJzxpbnB1dCBpcz0ieC1iYXIiPicKK1BBU1MgYmFyTmV3ZWQg
aW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciAmJiBiYXJOZXdlZCBpbnN0YW5jZW9mIEhUTUxJbnB1
dEVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBpc0Zvcm1Db250cm9sKGJhck5ld2VkKSBpcyB0cnVlCitQ
QVNTIGJhek5ld2VkLm91dGVySFRNTCBpcyAnPHgtYmF6PjwveC1iYXo+JworUEFTUyBiYXpOZXdl
ZCBpbnN0YW5jZW9mIGJhekNvbnN0cnVjdG9yICYmIGJhek5ld2VkIGluc3RhbmNlb2YgSFRNTEVs
ZW1lbnQgaXMgdHJ1ZQorUEFTUyBiYXpOZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVu
dCBpcyBmYWxzZQorUEFTUyBxdXhOZXdlZCBpbnN0YW5jZW9mIHF1eENvbnN0cnVjdG9yICYmIHF1
eE5ld2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgJiYgcXV4TmV3ZWQgaW5zdGFuY2VvZiBI
VE1MSW5wdXRFbGVtZW50IGlzIHRydWUKK1BBU1MgcXV4TmV3ZWQub3V0ZXJIVE1MIGlzICc8aW5w
dXQgaXM9IngtcXV4Ij4nCitQQVNTIGlzRm9ybUNvbnRyb2wocXV4TmV3ZWQpIGlzIHRydWUKK1BB
U1MgZm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3Jl
YXRlZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFyQ3JlYXRlZC5v
dXRlckhUTUwgaXMgJzx4LWJhcj48L3gtYmFyPicKK1BBU1MgYmFyQ3JlYXRlZCBpbnN0YW5jZW9m
IGJhckNvbnN0cnVjdG9yIGlzIGZhbHNlCitQQVNTIGJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1M
VW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBiYXpDcmVhdGVkLm91dGVySFRNTCBpcyAnPHgt
YmF6PjwveC1iYXo+JworUEFTUyBiYXpDcmVhdGVkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3Ig
aXMgdHJ1ZQorUEFTUyBiYXpDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlz
IGZhbHNlCitQQVNTIHF1eENyZWF0ZWQub3V0ZXJIVE1MIGlzICc8eC1xdXg+PC94LXF1eD4nCitQ
QVNTIHF1eENyZWF0ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBx
dXhDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BBU1MgZGl2
Rm9vQ3JlYXRlZC5vdXRlckhUTUwgaXMgJzxkaXYgaXM9IngtZm9vIj48L2Rpdj4nCitQQVNTIGRp
dkZvb0NyZWF0ZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZG
b29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBpbnB1dEJh
ckNyZWF0ZWQub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9IngtYmFyIj4nCitQQVNTIGlucHV0QmFy
Q3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgaW5wdXRCYXJD
cmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIGZhbHNlCitQQVNTIGlzRm9y
bUNvbnRyb2woaW5wdXRCYXJDcmVhdGVkKSBpcyB0cnVlCitQQVNTIGRpdkJhckNyZWF0ZWQub3V0
ZXJIVE1MIGlzICc8ZGl2IGlzPSJ4LWJhciI+PC9kaXY+JworUEFTUyBkaXZCYXJDcmVhdGVkIGlu
c3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgZGl2QmFyQ3JlYXRlZCBpbnN0
YW5jZW9mIEhUTUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1MgZm9vQmFyQ3JlYXRlZC5vdXRlckhU
TUwgaXMgJzx4LWZvbyBpcz0ieC1iYXIiPjwveC1mb28+JworUEFTUyBmb29CYXJDcmVhdGVkIGlu
c3RhbmNlb2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBiYXJGb29DcmVhdGVkLm91dGVy
SFRNTCBpcyAnPHgtYmFyIGlzPSJ4LWZvbyI+PC94LWJhcj4nCitQQVNTIGJhckZvb0NyZWF0ZWQg
aW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBmb29DcmVhdGVkTnVs
bC5vdXRlckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZE51bGwgaW5z
dGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyB0cnVlCitQQVNTIGZvb0NyZWF0ZWRFbXB0eS5vdXRl
ckhUTUwgaXMgJzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZEVtcHR5IGluc3RhbmNl
b2YgZm9vQ29uc3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdA
aW52YWxpZCcsICd4LWJhcicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3Rl
ckVycm9yOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIGZvb0NyZWF0ZWROUy5vdXRlckhUTUwgaXMg
Jzx4LWZvbz48L3gtZm9vPicKK1BBU1MgZm9vQ3JlYXRlZE5TIGluc3RhbmNlb2YgZm9vQ29uc3Ry
dWN0b3IgaXMgdHJ1ZQorUEFTUyBiYXJDcmVhdGVkTlMub3V0ZXJIVE1MIGlzICc8aW5wdXQgaXM9
IngtYmFyIj4nCitQQVNTIGJhckNyZWF0ZWROUyBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIGlz
IHRydWUKK1BBU1MgaXNGb3JtQ29udHJvbChiYXJDcmVhdGVkTlMpIGlzIHRydWUKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vZXhhbXBsZS5jb20vMjAxMy9uby1zdWNoLW5h
bWVzcGFjZScsICd4bWw6bGFuZycsICd4LWJhcicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFt
ZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGZvb1BhcnNlZCBpbnN0YW5jZW9m
IGZvb0NvbnN0cnVjdG9yIGlzIHRydWUKK1BBU1MgYmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29u
c3RydWN0b3IgaXMgdHJ1ZQorUEFTUyBpc0Zvcm1Db250cm9sKGJhclBhcnNlZCkgaXMgdHJ1ZQor
UEFTUyBkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciBpcyBmYWxzZQorUEFT
UyBkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIG5h
bWVkQmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IgaXMgZmFsc2UKK1BBU1MgbmFt
ZWRCYXJQYXJzZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBk
aXZCYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciBpcyBmYWxzZQorUEFTUyBkaXZC
YXJQYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUtZXh0ZW5zaW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXR5cGUt
ZXh0ZW5zaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MzcwNjYyNmYwODA4NDIzNzFhN2Q4OGU1MDJl
YzNiZDBiODE5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vZG9jdW1lbnQtcmVnaXN0ZXItdHlwZS1leHRlbnNpb25zLmh0bWwKQEAgLTAsMCArMSwxNzAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPGZvcm0gaWQ9InRlc3RGb3JtIj48L2Zvcm0+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RpbmcgZG9jdW1lbnQucmVnaXN0ZXIoKSB0eXBlIGV4
dGVuc2lvbiBiZWhhdmlvdXJzIHRocm91Z2ggY3JlYXRlRWxlbWVudCgpLiIpOworCitmdW5jdGlv
biBpc0Zvcm1Db250cm9sKGVsZW1lbnQpCit7CisgICAgdGVzdEZvcm0uYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQuZm9ybSA9PSB0ZXN0Rm9ybTsKK30KKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQu
cmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsK
KworLy8KKy8vIEluaGVyaXRhbmNlIGhlcmUgaXMgc2hhcGVkIGxpa2UgdGhpczoKKy8vCisvLyBI
VE1MRWxlbWVudCA8LSBpbnB1dCA8LSB4LWJhciA8LSB4LXF1eAorLy8gICAgICAgICAgICAgPC0g
eC1mb28gPC0geC1iYXoKKy8vCisKK2Zvb0NvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIo
J3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBl
KSB9KTsKK2JhckNvbnN0cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFyJywgeyBwcm90
b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGUpIH0pOworYmF6
Q29uc3RydWN0b3IgPSBkb2N1bWVudC5yZWdpc3RlcigneC1iYXonLCB7IHByb3RvdHlwZTogT2Jq
ZWN0LmNyZWF0ZShmb29Db25zdHJ1Y3Rvci5wcm90b3R5cGUpIH0pOworcXV4Q29uc3RydWN0b3Ig
PSBkb2N1bWVudC5yZWdpc3RlcigneC1xdXgnLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShi
YXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUpIH0pOworCisvLyBTYW1lIG5hbWUsIGRpZmZlcmVudCBs
b2NhbCBuYW1lCitzaG91bGRUaHJvdygiZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90
b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlKSB9KSIsICInRXJy
b3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExJyIpOworCisvLworLy8gR2Vu
ZXJhdGVkIGNvbnN0cnVjdG9ycworLy8KKworZm9vTmV3ZWQgPSBuZXcgZm9vQ29uc3RydWN0b3Io
KTsKK2Zvb091dGVySFRNTCA9ICInPHgtZm9vPjwveC1mb28+JyI7CitzaG91bGRCZSgiZm9vTmV3
ZWQub3V0ZXJIVE1MIiwgZm9vT3V0ZXJIVE1MKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vTmV3ZWQgaW5z
dGFuY2VvZiBmb29Db25zdHJ1Y3RvciAmJiBmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50
Iik7CitzaG91bGRCZUZhbHNlKCJmb29OZXdlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVu
dCIpOworCitiYXJOZXdlZCA9IG5ldyBiYXJDb25zdHJ1Y3RvcigpOworYmFyT3V0ZXJIVE1MID0g
Iic8aW5wdXQgaXM9XCJ4LWJhclwiPiciOworc2hvdWxkQmUoImJhck5ld2VkLm91dGVySFRNTCIs
IGJhck91dGVySFRNTCk7CitzaG91bGRCZVRydWUoImJhck5ld2VkIGluc3RhbmNlb2YgYmFyQ29u
c3RydWN0b3IgJiYgYmFyTmV3ZWQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50Iik7CitzaG91
bGRCZVRydWUoImlzRm9ybUNvbnRyb2woYmFyTmV3ZWQpIik7CisKK2Jhek5ld2VkID0gbmV3IGJh
ekNvbnN0cnVjdG9yKCk7CitiYXpPdXRlckhUTUwgPSAiJzx4LWJhej48L3gtYmF6PiciOworc2hv
dWxkQmUoImJhek5ld2VkLm91dGVySFRNTCIsIGJhek91dGVySFRNTCk7CitzaG91bGRCZVRydWUo
ImJhek5ld2VkIGluc3RhbmNlb2YgYmF6Q29uc3RydWN0b3IgJiYgYmF6TmV3ZWQgaW5zdGFuY2Vv
ZiBIVE1MRWxlbWVudCIpOworc2hvdWxkQmVGYWxzZSgiYmF6TmV3ZWQgaW5zdGFuY2VvZiBIVE1M
VW5rbm93bkVsZW1lbnQiKTsKKworcXV4TmV3ZWQgPSBuZXcgcXV4Q29uc3RydWN0b3IoKTsKK3F1
eE91dGVySFRNTCA9ICInPGlucHV0IGlzPVwieC1xdXhcIj4nIjsKK3Nob3VsZEJlVHJ1ZSgicXV4
TmV3ZWQgaW5zdGFuY2VvZiBxdXhDb25zdHJ1Y3RvciAmJiBxdXhOZXdlZCBpbnN0YW5jZW9mIGJh
ckNvbnN0cnVjdG9yICYmIHF1eE5ld2VkIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCIpOwor
c2hvdWxkQmUoInF1eE5ld2VkLm91dGVySFRNTCIsIHF1eE91dGVySFRNTCk7CitzaG91bGRCZVRy
dWUoImlzRm9ybUNvbnRyb2wocXV4TmV3ZWQpIik7CisKKy8vCisvLyBTaW5nbGUgcGFyYW1ldGVy
IGNyZWF0ZUVsZW1lbnQoKQorLy8KKworZm9vQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIngtZm9vIik7CitzaG91bGRCZSgiZm9vQ3JlYXRlZC5vdXRlckhUTUwiLCBmb29PdXRlckhU
TUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3Ii
KTsKKworYmFyQ3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtYmFyIik7CitzaG91
bGRCZSgiYmFyQ3JlYXRlZC5vdXRlckhUTUwiLCAiJzx4LWJhcj48L3gtYmFyPiciKTsKK3Nob3Vs
ZEJlRmFsc2UoImJhckNyZWF0ZWQgaW5zdGFuY2VvZiBiYXJDb25zdHJ1Y3RvciIpOworc2hvdWxk
QmVUcnVlKCJiYXJDcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisKK2Jh
ekNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWJheiIpOworc2hvdWxkQmUoImJh
ekNyZWF0ZWQub3V0ZXJIVE1MIiwgIic8eC1iYXo+PC94LWJhej4nIik7CitzaG91bGRCZVRydWUo
ImJhekNyZWF0ZWQgaW5zdGFuY2VvZiBiYXpDb25zdHJ1Y3RvciIpOworc2hvdWxkQmVGYWxzZSgi
YmF6Q3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCIpOworCitxdXhDcmVhdGVk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1xdXgiKTsKK3Nob3VsZEJlKCJxdXhDcmVhdGVk
Lm91dGVySFRNTCIsICInPHgtcXV4PjwveC1xdXg+JyIpOworc2hvdWxkQmVGYWxzZSgicXV4Q3Jl
YXRlZCBpbnN0YW5jZW9mIHF1eENvbnN0cnVjdG9yIik7CitzaG91bGRCZVRydWUoInF1eENyZWF0
ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKKworLy8KKy8vIGNyZWF0ZUVsZW1l
bnQoKSB3aXRoIHR5cGUgZXh0ZW5zaW9ucworLy8KKworZGl2Rm9vQ3JlYXRlZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIsICJ4LWZvbyIpOworc2hvdWxkQmUoImRpdkZvb0NyZWF0ZWQu
b3V0ZXJIVE1MIiwgIic8ZGl2IGlzPVwieC1mb29cIj48L2Rpdj4nIik7CitzaG91bGRCZUZhbHNl
KCJkaXZGb29DcmVhdGVkIGluc3RhbmNlb2YgZm9vQ29uc3RydWN0b3IiKTsKK3Nob3VsZEJlVHJ1
ZSgiZGl2Rm9vQ3JlYXRlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50Iik7CisKK2lucHV0QmFy
Q3JlYXRlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiwgIngtYmFyIik7CitzaG91
bGRCZSgiaW5wdXRCYXJDcmVhdGVkLm91dGVySFRNTCIsIGJhck91dGVySFRNTCk7CitzaG91bGRC
ZVRydWUoImlucHV0QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7CitzaG91
bGRCZUZhbHNlKCJpbnB1dEJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQi
KTsKK3Nob3VsZEJlVHJ1ZSgiaXNGb3JtQ29udHJvbChpbnB1dEJhckNyZWF0ZWQpIik7CisKK2Rp
dkJhckNyZWF0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiLCAieC1iYXIiKTsKK3No
b3VsZEJlKCJkaXZCYXJDcmVhdGVkLm91dGVySFRNTCIsICInPGRpdiBpcz1cIngtYmFyXCI+PC9k
aXY+JyIpOworc2hvdWxkQmVGYWxzZSgiZGl2QmFyQ3JlYXRlZCBpbnN0YW5jZW9mIGJhckNvbnN0
cnVjdG9yIik7CitzaG91bGRCZVRydWUoImRpdkJhckNyZWF0ZWQgaW5zdGFuY2VvZiBIVE1MRGl2
RWxlbWVudCIpOworCitmb29CYXJDcmVhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1m
b28iLCAieC1iYXIiKTsKK3Nob3VsZEJlKCJmb29CYXJDcmVhdGVkLm91dGVySFRNTCIsICInPHgt
Zm9vIGlzPVwieC1iYXJcIj48L3gtZm9vPiciKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vQmFyQ3JlYXRl
ZCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisKK2JhckZvb0NyZWF0ZWQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ4LWJhciIsICJ4LWZvbyIpOworc2hvdWxkQmUoImJhckZvb0NyZWF0
ZWQub3V0ZXJIVE1MIiwgIic8eC1iYXIgaXM9XCJ4LWZvb1wiPjwveC1iYXI+JyIpOworc2hvdWxk
QmVUcnVlKCJiYXJGb29DcmVhdGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CisK
K2Zvb0NyZWF0ZWROdWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iLCBudWxsKTsK
K3Nob3VsZEJlKCJmb29DcmVhdGVkTnVsbC5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hv
dWxkQmVUcnVlKCJmb29DcmVhdGVkTnVsbCBpbnN0YW5jZW9mIGZvb0NvbnN0cnVjdG9yIik7CisK
K2Zvb0NyZWF0ZWRFbXB0eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIiwgIiIpOwor
c2hvdWxkQmUoImZvb0NyZWF0ZWRFbXB0eS5vdXRlckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hv
dWxkQmVUcnVlKCJmb29DcmVhdGVkRW1wdHkgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIpOwor
CitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnQGludmFsaWQnLCAneC1iYXIn
KSIsICInRXJyb3I6IEludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1JyIpOwor
CisvLworLy8gY3JlYXRlRWxlbWVudE5TKCkgd2l0aCB0eXBlIGV4dGVuc2lvbnMKKy8vCisKK2Zv
b0NyZWF0ZWROUyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCIsICJ4LWZvbyIsIG51bGwpOworc2hvdWxkQmUoImZvb0NyZWF0ZWROUy5vdXRl
ckhUTUwiLCBmb29PdXRlckhUTUwpOworc2hvdWxkQmVUcnVlKCJmb29DcmVhdGVkTlMgaW5zdGFu
Y2VvZiBmb29Db25zdHJ1Y3RvciIpOworCitiYXJDcmVhdGVkTlMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAiaW5wdXQiLCAieC1iYXIi
KTsKK3Nob3VsZEJlKCJiYXJDcmVhdGVkTlMub3V0ZXJIVE1MIiwgYmFyT3V0ZXJIVE1MKTsKK3No
b3VsZEJlVHJ1ZSgiYmFyQ3JlYXRlZE5TIGluc3RhbmNlb2YgYmFyQ29uc3RydWN0b3IiKTsKK3No
b3VsZEJlVHJ1ZSgiaXNGb3JtQ29udHJvbChiYXJDcmVhdGVkTlMpIik7CisKK3Nob3VsZFRocm93
KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly9leGFtcGxlLmNvbS8yMDEzL25vLXN1
Y2gtbmFtZXNwYWNlJywgJ3htbDpsYW5nJywgJ3gtYmFyJykiLCAiJ0Vycm9yOiBOYW1lc3BhY2VF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxNCciKTsKKworLy8gcGFyc2VyCitmdW5jdGlvbiBjcmVhdGVF
bGVtZW50RnJvbUhUTUwoaHRtbCkgeworICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgY29udGFpbmVyLmlubmVySFRNTCA9IGh0bWw7CisgICByZXR1
cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7Cit9CisKK2Zvb1BhcnNlZCA9IGNyZWF0ZUVsZW1lbnRG
cm9tSFRNTCgnPHgtZm9vPicpOworc2hvdWxkQmVUcnVlKCJmb29QYXJzZWQgaW5zdGFuY2VvZiBm
b29Db25zdHJ1Y3RvciIpOworCitiYXJQYXJzZWQgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoJzxp
bnB1dCBpcz14LWJhcj4nKQorc2hvdWxkQmVUcnVlKCJiYXJQYXJzZWQgaW5zdGFuY2VvZiBiYXJD
b25zdHJ1Y3RvciIpOworc2hvdWxkQmVUcnVlKCJpc0Zvcm1Db250cm9sKGJhclBhcnNlZCkiKTsK
KworZGl2Rm9vUGFyc2VkID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKCc8ZGl2IGlzPXgtZm9vPicp
CitzaG91bGRCZUZhbHNlKCJkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBmb29Db25zdHJ1Y3RvciIp
Oworc2hvdWxkQmVUcnVlKCJkaXZGb29QYXJzZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIp
OworCituYW1lZEJhclBhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPHgtYmFyPicpCitz
aG91bGRCZUZhbHNlKCJuYW1lZEJhclBhcnNlZCBpbnN0YW5jZW9mIGJhckNvbnN0cnVjdG9yIik7
CitzaG91bGRCZVRydWUoIm5hbWVkQmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVt
ZW50Iik7CisKK2RpdkJhclBhcnNlZCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCgnPGRpdiBpcz14
LWJhcj4nKQorc2hvdWxkQmVGYWxzZSgiZGl2QmFyUGFyc2VkIGluc3RhbmNlb2YgYmFyQ29uc3Ry
dWN0b3IiKTsKK3Nob3VsZEJlVHJ1ZSgiZGl2QmFyUGFyc2VkIGluc3RhbmNlb2YgSFRNTERpdkVs
ZW1lbnQiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>