<?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>166925</bug_id>
          
          <creation_ts>2017-01-11 06:48:58 -0800</creation_ts>
          <short_desc>Implement InlineClassicScript</short_desc>
          <delta_ts>2017-01-12 03:50:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>166888</dependson>
          <blocked>150358</blocked>
    
    <blocked>166926</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1265750</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 06:48:58 -0800</bug_when>
    <thetext>Implement InlineClassicScript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265751</commentid>
    <comment_count>1</comment_count>
      <attachid>298578</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 06:54:37 -0800</bug_when>
    <thetext>Created attachment 298578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265754</commentid>
    <comment_count>2</comment_count>
      <attachid>298580</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 07:13:03 -0800</bug_when>
    <thetext>Created attachment 298580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265755</commentid>
    <comment_count>3</comment_count>
      <attachid>298581</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 07:13:56 -0800</bug_when>
    <thetext>Created attachment 298581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266104</commentid>
    <comment_count>4</comment_count>
      <attachid>298581</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-01-12 00:15:23 -0800</bug_when>
    <thetext>Comment on attachment 298581
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        This patch is further clean up. We introduce InlineClassicScript, which is

Nit: *a* further *cleanup*.

&gt; Source/WebCore/ChangeLog:17
&gt; +        It is important for dynamic-import. When dynamic-import operator is called,
&gt; +        we need to get the ScriptFetcher for the caller script SourceOrigin.

This sentence is a bit wordy.  Also, why do we need to the ScriptFetcher for the caller script SourceOrigin?
It’s not clear to me how ScriptFetcher is used in dynamic-import operator by just reading this description.

&gt; Source/JavaScriptCore/runtime/SourceOrigin.h:35
&gt; -    explicit SourceOrigin(const String&amp; string)
&gt; +    explicit SourceOrigin(const String&amp; string, ScriptFetcher* fetcher = nullptr)

Instead of adding an extra argument to this constructor, why don’t we add an overloading constructor
that takes Ref&lt;ScriptFetcher&gt;&amp;&amp; instead so that we can avoid ref churn?

&gt; Source/WebCore/bindings/js/CachedScriptFetcher.h:52
&gt; +    void notifyClientFinished();

Where is this defined? I don’t think CachedScriptFetcher is used a CachedResourceClient.

&gt; Source/WebCore/bindings/js/CachedScriptSourceProvider.h:52
&gt; -    CachedScriptSourceProvider(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType)
&gt; -        : SourceProvider(JSC::SourceOrigin { cachedScript-&gt;response().url() }, cachedScript-&gt;response().url(), TextPosition(), sourceType)
&gt; +    CachedScriptSourceProvider(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType, CachedScriptFetcher* scriptFetcher)
&gt; +        : SourceProvider(JSC::SourceOrigin { cachedScript-&gt;response().url(), scriptFetcher }, cachedScript-&gt;response().url(), TextPosition(), sourceType)

Ditto about adding an overloading constructor avoid ref churn.

&gt; Source/WebCore/dom/InlineClassicScript.cpp:37
&gt; +        scriptElement.element().attributeWithoutSynchronization(HTMLNames::nonceAttr),

Please store Element&amp; in a local variable instead of calling four times.

&gt; Source/WebCore/dom/ScriptElement.cpp:279
&gt; -        executeClassicScript(ScriptSourceCode(scriptContent(), document.url(), position, JSC::SourceProviderSourceType::Program));
&gt; +        executeClassicScript(ScriptSourceCode(scriptContent(), document.url(), position, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this).ptr()));

This is will result in two calls to ref(). Once in here and again inside SourceOrigin::SourceOrigin.
Why don’t we make SourceOrigin and ScriptSourceCode take Ref&lt;CachedScriptFetcher&gt;&amp;&amp; to avoid this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266109</commentid>
    <comment_count>5</comment_count>
      <attachid>298581</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-12 00:58:51 -0800</bug_when>
    <thetext>Comment on attachment 298581
Patch

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

Thanks!

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        This patch is further clean up. We introduce InlineClassicScript, which is
&gt; 
&gt; Nit: *a* further *cleanup*.

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +        we need to get the ScriptFetcher for the caller script SourceOrigin.
&gt; 
&gt; This sentence is a bit wordy.  Also, why do we need to the ScriptFetcher for the caller script SourceOrigin?
&gt; It’s not clear to me how ScriptFetcher is used in dynamic-import operator by just reading this description.

Subsequent module loading requests need the metadata, like `crossorigin` attribute information, `nonce` information etc.
They are delivered by ScriptFetcher.

&gt;&gt; Source/JavaScriptCore/runtime/SourceOrigin.h:35
&gt;&gt; +    explicit SourceOrigin(const String&amp; string, ScriptFetcher* fetcher = nullptr)
&gt; 
&gt; Instead of adding an extra argument to this constructor, why don’t we add an overloading constructor
&gt; that takes Ref&lt;ScriptFetcher&gt;&amp;&amp; instead so that we can avoid ref churn?

Nice. Added new overloaded constructor.

&gt;&gt; Source/WebCore/bindings/js/CachedScriptFetcher.h:52
&gt;&gt; +    void notifyClientFinished();
&gt; 
&gt; Where is this defined? I don’t think CachedScriptFetcher is used a CachedResourceClient.

Yeah, it accidentally remains. It should be dropped.

&gt;&gt; Source/WebCore/bindings/js/CachedScriptSourceProvider.h:52
&gt;&gt; +        : SourceProvider(JSC::SourceOrigin { cachedScript-&gt;response().url(), scriptFetcher }, cachedScript-&gt;response().url(), TextPosition(), sourceType)
&gt; 
&gt; Ditto about adding an overloading constructor avoid ref churn.

For CachedScriptSourceProvider case, we always have CachedScriptFetcher. So We can just convert this constructor to take Ref&lt;CachedScriptFetcher&gt;&amp;&amp;.

&gt;&gt; Source/WebCore/dom/InlineClassicScript.cpp:37
&gt;&gt; +        scriptElement.element().attributeWithoutSynchronization(HTMLNames::nonceAttr),
&gt; 
&gt; Please store Element&amp; in a local variable instead of calling four times.

Fixed.

&gt;&gt; Source/WebCore/dom/ScriptElement.cpp:279
&gt;&gt; +        executeClassicScript(ScriptSourceCode(scriptContent(), document.url(), position, JSC::SourceProviderSourceType::Program, InlineClassicScript::create(*this).ptr()));
&gt; 
&gt; This is will result in two calls to ref(). Once in here and again inside SourceOrigin::SourceOrigin.
&gt; Why don’t we make SourceOrigin and ScriptSourceCode take Ref&lt;CachedScriptFetcher&gt;&amp;&amp; to avoid this?

We changed to do that by overloading the constructor with Ref&lt;CachedScriptFetcher&gt;&amp;&amp; parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266110</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-12 01:02:49 -0800</bug_when>
    <thetext>Committed r210627: &lt;http://trac.webkit.org/changeset/210627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266116</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-01-12 03:47:13 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Committed r210627: &lt;http://trac.webkit.org/changeset/210627&gt;

It broke the Apple Mac build everywhere, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266118</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-12 03:50:15 -0800</bug_when>
    <thetext>Committed r210630: &lt;http://trac.webkit.org/changeset/210630&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298578</attachid>
            <date>2017-01-11 06:54:37 -0800</date>
            <delta_ts>2017-01-11 07:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166925-20170111235258.patch</filename>
            <type>text/plain</type>
            <size>43904</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWMyZTliMDVhZjdhMjQ5NTEwMmU3YWVjOWI3NGFlMmNkYTE2MTNhLi5mMGJlMGNmODk5MjI1NjRj
YjRhZTllMjM1NDIyYzdlYzE4MDk4MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOCBAQAogMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgSW5saW5lQ2xhc3NpY1NjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNjcmlwdEZldGNoZXIg
ZmllbGQgZm9yIFNvdXJjZU9yaWdpbi4KKworICAgICAgICAqIHJ1bnRpbWUvU291cmNlT3JpZ2lu
Lmg6CisgICAgICAgIChKU0M6OlNvdXJjZU9yaWdpbjo6U291cmNlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6U291cmNlT3JpZ2luOjpmZXRjaGVyKToKKworMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9h
ZGluZyBpbml0aWF0b3IgZnJvbSBTY3JpcHRFbGVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIwMTlhOTJh
MGU5OWE4ODFiYWQyMGYxMDczODEwMjMxZjAyYTk3YTUuLmY1M2JiZmVkMmE5ZDE0Njk1NWJjZDQ2
NmUzODYyMmYzOTFlYWZjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MCBAQAogMjAxNy0wMS0x
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBJbXBs
ZW1lbnQgSW5saW5lQ2xhc3NpY1NjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQXMgb2YgcjIxMDU4NSwgU2NyaXB0RmV0Y2hlciBmdW5jdGlvbmFs
aXR5IGlzIGRlY291cGxlZCBmcm9tIFNjcmlwdEVsZW1lbnQuCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgZnVydGhlciBjbGVhbiB1cC4gV2UgaW50cm9kdWNlIElubGluZUNsYXNzaWNTY3JpcHQsIHdo
aWNoIGlzCisgICAgICAgIHNpbWlsYXIgdG8gTG9hZGFibGVDbGFzc2ljU2NyaXB0IC8gTG9hZGFi
bGVNb2R1bGVTY3JpcHQuIEFuZCB3ZSBtb3ZlIFNjcmlwdEZldGNoZXIKKyAgICAgICAgZnVuY3Rp
b25hbGl0eSBmcm9tIExvYWRhYmxlU2NyaXB0IHRvIENhY2hlZFNjcmlwdEZldGNoZXIsIHdoaWNo
IGlzIHRoZSBiYXNlCisgICAgICAgIGNsYXNzIG9mIElubGluZUNsYXNzaWNTY3JpcHQgYW5kIExv
YWRhYmxlU2NyaXB0LgorCisgICAgICAgIEFuZCB3ZSBzdGFydCBzZXR0aW5nIHRoaXMgQ2FjaGVk
U2NyaXB0RmV0Y2hlciB0byB0aGUgbWVtYmVyIG9mIEpTQzo6U291cmNlT3JpZ2luLgorICAgICAg
ICBUaGlzIGFsbG93cyB1cyB0byBleGFtaW5lIHRoZSBTY3JpcHRGZXRjaGVyIGZyb20gdGhlIFNv
dXJjZU9yaWdpbi4KKyAgICAgICAgSXQgaXMgaW1wb3J0YW50IGZvciBkeW5hbWljLWltcG9ydC4g
V2hlbiBkeW5hbWljLWltcG9ydCBvcGVyYXRvciBpcyBjYWxsZWQsCisgICAgICAgIHdlIG5lZWQg
dG8gZ2V0IHRoZSBTY3JpcHRGZXRjaGVyIGZvciB0aGUgY2FsbGVyIHNjcmlwdCBTb3VyY2VPcmln
aW4uCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNj
cmlwdExvYWRlcjo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bG9hZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0RmV0Y2hlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJs
ZVNjcmlwdC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1
ZXN0U2NyaXB0V2l0aENhY2hlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRG
ZXRjaGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJj
ZU9yaWdpbi5oLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6Q2FjaGVk
U2NyaXB0RmV0Y2hlcik6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6
OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTb3Vy
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdElu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNj
cmlwdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1v
ZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlw
dFNvdXJjZUNvZGUpOgorICAgICAgICAqIGRvbS9JbmxpbmVDbGFzc2ljU2NyaXB0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9JbmxpbmVDbGFzc2ljU2NyaXB0Lmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9M
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFz
c2ljU2NyaXB0OjpleGVjdXRlKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVTY3JpcHQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Mb2FkYWJsZVNjcmlwdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGFibGVTY3JpcHQ6OkxvYWRhYmxlU2NyaXB0KToKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6cHJlcGFyZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50OjpyZXF1ZXN0TW9kdWxlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1
blNjcmlwdCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcyk6
CisKKzIwMTctMDEtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
ICAgICAgICAgRGVjb3VwbGUgbW9kdWxlIGxvYWRpbmcgaW5pdGlhdG9yIGZyb20gU2NyaXB0RWxl
bWVudAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
ODg4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJjZU9y
aWdpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU291cmNlT3JpZ2luLmgKaW5k
ZXggZjQyYTBkM2VlYTg5NDRmMmE5YzExYjgxOTc3Nzk4NWJhNmQ3YTljMC4uYTM3NGU5Y2NkZmYw
YmM5NjA5YzY3NzU4NjJlY2EwODkyZjcxNjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU291cmNlT3JpZ2luLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU291cmNlT3JpZ2luLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIlNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFNvdXJjZU9yaWdpbiB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgU291cmNlT3JpZ2luKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAg
IGV4cGxpY2l0IFNvdXJjZU9yaWdpbihjb25zdCBTdHJpbmcmIHN0cmluZywgU2NyaXB0RmV0Y2hl
ciogZmV0Y2hlciA9IG51bGxwdHIpCiAgICAgICAgIDogbV9zdHJpbmcoc3RyaW5nKQorICAgICAg
ICAsIG1fZmV0Y2hlcihmZXRjaGVyKQogICAgIHsKICAgICB9CiAKQEAgLTQxLDggKzQzLDExIEBA
IGNsYXNzIFNvdXJjZU9yaWdpbiB7CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNOdWxsKCk7IH0KIAorICAgIFNjcmlwdEZldGNoZXIqIGZldGNoZXIoKSBjb25zdCB7
IHJldHVybiBtX2ZldGNoZXIuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmc7CisgICAgUmVmUHRyPFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0ODE5N2IyZGIyOTUzZjYzNWRkYmM5
YmIwYTA1NTMzNWFjYTkyNTZmLi5kNDk2ZTlhMmUzYWI1OThlOTA3NzA5Y2E5NzM2MGVkNTQyZTZh
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA2Nyw2ICsxMDY3LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogCiAgICAgYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcAogICAg
IGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKKyAgICBiaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rp
b24uY3BwCiAgICAgYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCiAgICAgYmluZGluZ3MvanMvRE9N
V3JhcHBlcldvcmxkLmNwcApAQCAtMTQ0Miw2ICsxNDQzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKICAgICBkb20vSWRUYXJnZXRPYnNlcnZl
ci5jcHAKICAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorICAgIGRvbS9Jbmxp
bmVDbGFzc2ljU2NyaXB0LmNwcAogICAgIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCiAg
ICAgZG9tL0lucHV0RXZlbnQuY3BwCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcAppbmRleCAw
ZmVjNGI1OWIxZDJkMzE0ZDgwNDJmNzExM2FmYjk5OTRjNTY4NmZkLi44Mzc0ODEyMmU0M2NmZjBl
YTRhZjQzOTM2MjA5ZmE2YWQ3YmZkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKQEAgLTQzLDE2ICs0MywxNiBAQCBSZWY8Q2Fj
aGVkTW9kdWxlU2NyaXB0PiBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0KCkpOwogfQogCi12b2lkIENhY2hlZE1v
ZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgcm9vdFVSTCwg
TG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6
OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwsIENhY2hlZFNjcmlw
dEZldGNoZXImIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRo
aXMsIHJvb3RVUkwuc3RyaW5nKCksIGxvYWRhYmxlU2NyaXB0KTsKKyAgICAgICAgZnJhbWUtPnNj
cmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIHNjcmlwdEZl
dGNoZXIpOwogfQogCi12b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxlU2NyaXB0
JiBsb2FkYWJsZVNjcmlwdCkKK3ZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNjcmlwdCgq
dGhpcywgc291cmNlQ29kZSwgbG9hZGFibGVTY3JpcHQpOworICAgICAgICBmcmFtZS0+c2NyaXB0
KCkubG9hZE1vZHVsZVNjcmlwdCgqdGhpcywgc291cmNlQ29kZSwgc2NyaXB0RmV0Y2hlcik7CiB9
CiAKIHZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpub3RpZnlMb2FkQ29tcGxldGVkKFVuaXF1ZWRT
dHJpbmdJbXBsJiBtb2R1bGVLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdC5oCmluZGV4IDU2MmQ5M2QwNjNiMWY0ZWM0ZWNlZTdiYTY5N2I5MmI1
NjI5NTMxMWEuLmFiOGY5MGEzOWM2MWI2YzY1NzM4MmViYzhjMGM0MjExZDJmOTlkYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCkBAIC01
Miw4ICs1Miw4IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVk
PENhY2hlZE1vZHVsZVNjcmlwdD4gewogCiAgICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3Jp
cHQ+IGNyZWF0ZSgpOwogCi0gICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgVVJMJiByb290
VVJMLCBMb2FkYWJsZVNjcmlwdCYpOwotICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYpOworICAgIHZvaWQgbG9hZChEb2N1bWVu
dCYsIGNvbnN0IFVSTCYgcm9vdFVSTCwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOworICAgIHZvaWQg
bG9hZChEb2N1bWVudCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBDYWNoZWRTY3JpcHRGZXRj
aGVyJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlDbGllbnRGaW5pc2hlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAKaW5kZXggNjBiZGQ0ODVjYWIzNThjOWFjNWU3OTc5MWY1YWJkODI5NGU0MDE4ZC4u
NDRlOWZlN2U4MmY3NWYxMzJmNjgxNTUxM2JjNDg1YTRjNmE4NzFmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3Bw
CkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIu
aCIKIAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZl
dGNoZXIuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkxvYWRhYmxlU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgpAQCAtMzgsMTQgKzM4
LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPENhY2hlZE1vZHVsZVNjcmlwdExv
YWRlcj4gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyQ2xpZW50JiBjbGllbnQsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSkKK1JlZjxDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXI+IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Y3JlYXRlKENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBEZWZlcnJlZFByb21pc2UmIHBy
b21pc2UsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKGNsaWVudCwgcHJvbWlzZSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihjbGll
bnQsIHByb21pc2UsIHNjcmlwdEZldGNoZXIpKTsKIH0KIAotQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiBjbGllbnQsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSkKK0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcjo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKENhY2hlZE1vZHVsZVNjcmlwdExvYWRl
ckNsaWVudCYgY2xpZW50LCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIENhY2hlZFNjcmlwdEZl
dGNoZXImIHNjcmlwdEZldGNoZXIpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9w
cm9taXNlKCZwcm9taXNlKQorICAgICwgbV9zY3JpcHRGZXRjaGVyKHNjcmlwdEZldGNoZXIpCiB7
CiB9CiAKQEAgLTU3LDEwICs1OCwxMCBAQCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6On5DYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIoKQogICAgIH0KIH0KIAotYm9vbCBDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXI6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFi
bGVTY3JpcHQsIGNvbnN0IFVSTCYgc291cmNlVVJMKQorYm9vbCBDYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXI6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKIHsK
ICAgICBBU1NFUlQoIW1fY2FjaGVkU2NyaXB0KTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IGxvYWRh
YmxlU2NyaXB0LnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCk7Cisg
ICAgbV9jYWNoZWRTY3JpcHQgPSBtX3NjcmlwdEZldGNoZXItPnJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGUoZG9jdW1lbnQsIHNvdXJjZVVSTCk7CiAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCmluZGV4IDMyZmRlM2JmYTcyNGQ1MjU3OWQyMTRl
NTdlNDZkNjNhNTU3MzQ2MzEuLjA0OTIzZjRkYzIzMzdhYjYyMGFhMGY1MGRkYzg1Nzk5ZDFlYjFm
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oCkBAIC0zNSwyMCArMzUsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQ7CiBjbGFzcyBDYWNoZWRTY3Jp
cHQ7CitjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLWNsYXNzIExvYWRhYmxl
U2NyaXB0OwogY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+LCBwcml2YXRl
IENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhY2hlZE1v
ZHVsZVNjcmlwdExvYWRlcj4gY3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYs
IERlZmVycmVkUHJvbWlzZSYpOworICAgIHN0YXRpYyBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyPiBjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiwgRGVmZXJyZWRQcm9t
aXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOwogCiAgICAgdmlydHVhbCB+Q2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyKCk7CiAKLSAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBMb2FkYWJsZVNjcmlw
dCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKTsKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBjb25z
dCBVUkwmIHNvdXJjZVVSTCk7CiAKKyAgICBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRj
aGVyKCkgeyByZXR1cm4gbV9zY3JpcHRGZXRjaGVyLmdldCgpOyB9CiAgICAgQ2FjaGVkU2NyaXB0
KiBjYWNoZWRTY3JpcHQoKSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsgfQogCiAgICAg
dm9pZCBjbGVhckNsaWVudCgpCkBAIC01OCwxMiArNTksMTMgQEAgY2xhc3MgQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGUKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJvbWlzZSYpOworICAgIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBE
ZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJik7CiAKICAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4gbV9zY3Jp
cHRGZXRjaGVyOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNo
ZWRTY3JpcHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdEZldGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OGUzY2JjNjM1MTk5OWQ4Mjk5Mjc5NGU3
NDRmMWQ0ODRlZDRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKKworI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhD
YWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdAorewor
ICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGlu
Z3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOworICAg
IGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5h
bGxvd1NjcmlwdFdpdGhOb25jZShtX25vbmNlLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsK
KyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0eVBv
bGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUlt
cG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChSZXNvdXJjZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9ucyk7CisgICAgcmVxdWVzdC5z
ZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsK
KyAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CisK
KyAgICByZXF1ZXN0LnNldENoYXJzZXQobV9jaGFyc2V0KTsKKyAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihtX2luaXRpYXRvck5hbWUpOworCisgICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjZWY3MTg1YzNlMTZmMzFhY2IyMDM3NmQ0ODQyYjAzN2EzODFiZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL1Njcmlw
dEZldGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRTY3JpcHQ7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IFVSTDsKKworY2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlciA6IHB1YmxpYyBKU0M6OlNjcmlwdEZl
dGNoZXIgeworcHVibGljOgorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4g
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIENhY2hlZFNjcmlwdEZldGNoZXIoY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKQorICAgICAgICA6IG1fbm9uY2Uobm9uY2UpCisgICAgICAgICwgbV9jcm9z
c09yaWdpbk1vZGUoY3Jvc3NPcmlnaW5Nb2RlKQorICAgICAgICAsIG1fY2hhcnNldChjaGFyc2V0
KQorICAgICAgICAsIG1faW5pdGlhdG9yTmFtZShpbml0aWF0b3JOYW1lKQorICAgICAgICAsIG1f
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgbm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKKworcHJpdmF0ZToKKyAg
ICBTdHJpbmcgbV9ub25jZTsKKyAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7CisgICAgU3Ry
aW5nIG1fY2hhcnNldDsKKyAgICBBdG9taWNTdHJpbmcgbV9pbml0aWF0b3JOYW1lOworICAgIGJv
b2wgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCBkMzhjYWZiNjM5OTIwMDVjY2ZkYTMwNTQy
NjlhMjEwOGE4MWJmOTg3Li42NTlkMGM1Y2ZjMDJiNmNmMTM3YWU1MGM1NTMzNTk3MTkxYThhZGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2lu
Y2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIgOiBwdWJsaWMgSlNDOjpTb3VyY2VQcm92aWRlciwgcHVi
bGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyPiBjcmVh
dGUoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlIHNvdXJjZVR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIoY2FjaGVkU2NyaXB0LCBzb3VyY2VUeXBlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3Jp
cHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIENhY2hlZFNjcmlw
dEZldGNoZXIqIHNjcmlwdEZldGNoZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIoY2FjaGVkU2NyaXB0LCBzb3VyY2VUeXBlLCBzY3JpcHRGZXRjaGVy
KSk7IH0KIAogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKCkKICAgICB7
CkBAIC00Nyw4ICs0OCw4IEBAIGNsYXNzIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyIDogcHVi
bGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1YmxpYyBDYWNoZWRSZXNvCiAgICAgU3RyaW5nVmll
dyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRT
Y3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSkKLSAgICAgICAgOiBTb3VyY2VQcm92aWRlcihKU0M6OlNvdXJjZU9yaWdpbiB7IGNhY2hl
ZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSB9LCBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJs
KCksIFRleHRQb3NpdGlvbigpLCBzb3VyY2VUeXBlKQorICAgIENhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZSBzb3VyY2VUeXBlLCBDYWNoZWRTY3JpcHRGZXRjaGVyKiBzY3JpcHRGZXRjaGVyKQor
ICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKEpTQzo6U291cmNlT3JpZ2luIHsgY2FjaGVkU2NyaXB0
LT5yZXNwb25zZSgpLnVybCgpLCBzY3JpcHRGZXRjaGVyIH0sIGNhY2hlZFNjcmlwdC0+cmVzcG9u
c2UoKS51cmwoKSwgVGV4dFBvc2l0aW9uKCksIHNvdXJjZVR5cGUpCiAgICAgICAgICwgbV9jYWNo
ZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQogICAgIHsKICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPmFk
ZENsaWVudCgqdGhpcyk7CkBAIC01Nyw5ICs1OCw0IEBAIGNsYXNzIENhY2hlZFNjcmlwdFNvdXJj
ZVByb3ZpZGVyIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1YmxpYyBDYWNoZWRSZXNv
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsK
IH07CiAKLWlubGluZSBKU0M6OlNvdXJjZUNvZGUgbWFrZVNvdXJjZShDYWNoZWRTY3JpcHQqIGNh
Y2hlZFNjcmlwdCkKLXsKLSAgICByZXR1cm4gSlNDOjpTb3VyY2VDb2RlKENhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6UHJvZ3JhbSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDMyMzc2
MzU3MTBlNjJmNjY1ZDE3OWIzNzg0NmYxZWJkOTljMDhmYjYuLjBlZmY0MGRhMTc0ZjM3OWZlNThk
YmEyOTJlYTNiNzUxZTE4NGZhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJCcmlk
Z2VKU0MuaCIKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVTY3JpcHQuaCIKKyNpbmNsdWRlICJDYWNo
ZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtMTg2
LDM2ICsxODcsMzYgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb24KICAgICByZXR1cm4gZXZhbHVh
dGVJbldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25E
ZXRhaWxzKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5X
b3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1
bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQsIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENh
Y2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIsIERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBhdXRvJiBz
aGVsbCA9ICp3aW5kb3dTaGVsbCh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqc2hlbGwud2lu
ZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIG1vZHVsZU5hbWUsIEpTQzo6SlNTY3JpcHRGZXRj
aGVyOjpjcmVhdGUoc3RhdGUudm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOworICAgIGF1dG8m
IHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIG1vZHVs
ZU5hbWUsIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUudm0oKSwgeyAmc2NyaXB0
RmV0Y2hlciB9KSk7CiAgICAgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhtb2R1bGVTY3JpcHQs
IHByb21pc2UsIHdvcmxkKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxl
U2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKK3ZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
dCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRG
ZXRjaGVyKQogewotICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbW9k
dWxlTmFtZSwgbG9hZGFibGVTY3JpcHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBs
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVsZU5hbWUsIHNjcmlwdEZl
dGNoZXIsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNj
cmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgTG9hZGFibGVTY3JpcHQm
IGxvYWRhYmxlU2NyaXB0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBTY3JpcHRDb250
cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVs
ZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgQ2FjaGVkU2NyaXB0
RmV0Y2hlciYgc2NyaXB0RmV0Y2hlciwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAogICAgIGF1dG8mIHNoZWxsID0gKndpbmRv
d1NoZWxsKHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpzaGVsbC53aW5kb3coKS0+Z2xvYmFs
RXhlYygpOwogCi0gICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9h
ZE1vZHVsZShzdGF0ZSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEZl
dGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZsb2FkYWJsZVNjcmlwdCB9KSk7CisgICAgYXV0
byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgc291
cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0
ZS52bSgpLCB7ICZzY3JpcHRGZXRjaGVyIH0pKTsKICAgICBzZXR1cE1vZHVsZVNjcmlwdEhhbmRs
ZXJzKG1vZHVsZVNjcmlwdCwgcHJvbWlzZSwgd29ybGQpOwogfQogCi12b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQs
IGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxlU2NyaXB0JiBsb2Fk
YWJsZVNjcmlwdCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNo
ZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcikKIHsKLSAgICBsb2Fk
TW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIHNvdXJjZUNvZGUsIGxvYWRhYmxlU2Ny
aXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgbG9hZE1vZHVsZVNjcmlwdEluV29y
bGQobW9kdWxlU2NyaXB0LCBzb3VyY2VDb2RlLCBzY3JpcHRGZXRjaGVyLCBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5k
RXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDllMjBjMmNlOTZiZmNjMDk3ZmY1YmFlMTkxM2Vl
Y2ZmMjViNzA5MDUuLjJlODc2OGNjMzExMTNkMWI0MTAzMDQ0ZWZjNTI5Zjk4Yzk2YzNjMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTUy
LDEwICs1MiwxMCBAQCBjbGFzcyBSb290T2JqZWN0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQ7CitjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsK
LWNsYXNzIExvYWRhYmxlU2NyaXB0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTY3Jp
cHRTb3VyY2VDb2RlOwogY2xhc3MgV2lkZ2V0OwpAQCAtMTE0LDEwICsxMTQsMTAgQEAgY2xhc3Mg
U2NyaXB0Q29udHJvbGxlciB7CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwogICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJX
b3JsZCYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7CiAKLSAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgTG9hZGFibGVTY3JpcHQmLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICB2b2lkIGxvYWRN
b2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1l
LCBMb2FkYWJsZVNjcmlwdCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRhYmxlU2NyaXB0
JiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1v
ZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYpOwor
ICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29u
c3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiwgRE9NV3JhcHBlcldv
cmxkJik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNv
bnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOworICAgIHZvaWQg
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0
U291cmNlQ29kZSYsIENhY2hlZFNjcmlwdEZldGNoZXImLCBET01XcmFwcGVyV29ybGQmKTsKKyAg
ICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0
U291cmNlQ29kZSYsIENhY2hlZFNjcmlwdEZldGNoZXImKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBs
aW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgLCBE
T01XcmFwcGVyV29ybGQmKTsKICAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxl
U2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggOGRkMjRjMzljMWI4MDE0ZmNkZDg5
YjRmNjJmMWQ3NmQ0Mjk5OGI5Ny4uNjJhODk2N2EyMzEzNjZiNjQ4M2Y0OGI0OGZlYTA4NjZmNjhh
YjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVM
b2FkZXIuY3BwCkBAIC0xNTksOSArMTU5LDkgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2Ny
aXB0TW9kdWxlTG9hZGVyOjpmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE8KICAg
ICB9CiAKICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCkpIHsKLSAgICAg
ICAgYXV0byBsb2FkZXIgPSBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSgqdGhpcywg
ZGVmZXJyZWQuZ2V0KCkpOworICAgICAgICBhdXRvIGxvYWRlciA9IENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5nZXQoKSwgKnN0YXRpY19jYXN0PENhY2hl
ZFNjcmlwdEZldGNoZXIqPihKU0M6OmpzQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KHNjcmlw
dEZldGNoZXIpLT5mZXRjaGVyKCkpKTsKICAgICAgICAgbV9sb2FkZXJzLmFkZChsb2FkZXIuY29w
eVJlZigpKTsKLSAgICAgICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1bWVudCwgKnN0YXRpY19j
YXN0PExvYWRhYmxlU2NyaXB0Kj4oSlNDOjpqc0Nhc3Q8SlNDOjpKU1NjcmlwdEZldGNoZXIqPihz
Y3JpcHRGZXRjaGVyKS0+ZmV0Y2hlcigpKSwgY29tcGxldGVkVVJMKSkgeworICAgICAgICBpZiAo
IWxvYWRlci0+bG9hZChtX2RvY3VtZW50LCBjb21wbGV0ZWRVUkwpKSB7CiAgICAgICAgICAgICBs
b2FkZXItPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgICAgICBtX2xvYWRlcnMucmVtb3ZlKFdURk1v
dmUobG9hZGVyKSk7CiAgICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGZyYW1lLT5zY3JpcHQo
KS5tb2R1bGVMb2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbCgpKTsKQEAgLTI0Myw3ICsy
NDMsNyBAQCB2b2lkIFNjcmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyJiBsb2FkZXIsIFJlZlB0cgogICAgIH0KIAogICAgIG1fcmVxdWVzdFVS
TFRvUmVzcG9uc2VVUkxNYXAuYWRkKGNhY2hlZFNjcmlwdC51cmwoKSwgY2FjaGVkU2NyaXB0LnJl
c3BvbnNlKCkudXJsKCkpOwotICAgIFNjcmlwdFNvdXJjZUNvZGUgc2NyaXB0U291cmNlQ29kZSgm
Y2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKTsKKyAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNjcmlwdFNvdXJjZUNvZGUoJmNhY2hlZFNjcmlwdCwgSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgbG9hZGVyLnNjcmlwdEZldGNoZXIoKSk7
CiAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhDYWxsYmFjayhbXSAoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlKSB7CiAg
ICAgICAgIHJldHVybiBKU0M6OkpTU291cmNlQ29kZTo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1v
dmUoc291cmNlQ29kZSkpOwogICAgIH0sIHNjcmlwdFNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29k
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4
IDMyOGFkZDg0NjgxMzRmZTY5YWUyODNlMWIwMTZlYzg5OTg5MDY3MTcuLmNlMzZmZmNiNDg4OGRk
OGY4ZTJiOWQ5OTlmNWNmZjBlMWQwZDQ4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmg+CkBAIC00MiwxNSArNDMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlIHsKIHB1YmxpYzoKLSAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24m
IHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGUgc291cmNlVHlwZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFt
KQotICAgICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KHNvdXJjZSwgSlNDOjpTb3VyY2VPcmlnaW4geyB1cmwuc3RyaW5nKCkgfSwgdXJsLnN0cmluZygp
LCBzdGFydFBvc2l0aW9uLCBzb3VyY2VUeXBlKSkKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGUgc291cmNlVHlwZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9n
cmFtLCBDYWNoZWRTY3JpcHRGZXRjaGVyKiBzY3JpcHRGZXRjaGVyID0gbnVsbHB0cikKKyAgICAg
ICAgOiBtX3Byb3ZpZGVyKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2Us
IEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLnN0cmluZygpLCBzY3JpcHRGZXRjaGVyIH0sIHVybC5z
dHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCiAgICAgICAgICwgbV9jb2RlKG1f
cHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRp
b24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgewog
ICAgIH0KIAotICAgIGV4cGxpY2l0IFNjcmlwdFNvdXJjZUNvZGUoQ2FjaGVkU2NyaXB0KiBjYWNo
ZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCi0gICAg
ICAgIDogbV9wcm92aWRlcihDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hl
ZFNjcmlwdCwgc291cmNlVHlwZSkpCisgICAgZXhwbGljaXQgU2NyaXB0U291cmNlQ29kZShDYWNo
ZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291
cmNlVHlwZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcikKKyAgICAgICAgOiBt
X3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2FjaGVkU2NyaXB0
LCBzb3VyY2VUeXBlLCAmc2NyaXB0RmV0Y2hlcikpCiAgICAgICAgICwgbV9jb2RlKG1fcHJvdmlk
ZXIpCiAgICAgICAgICwgbV9jYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFzc2ljU2NyaXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmU2ZDI3
NTFhOTc3YzZmYmJmYTgwNGY2YmFmNGQyZGIwZDc1N2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lubGluZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5saW5lQ2xhc3NpY1NjcmlwdC5oIgorCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWY8SW5saW5lQ2xhc3NpY1NjcmlwdD4gSW5saW5lQ2xhc3NpY1Njcmlw
dDo6Y3JlYXRlKFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5saW5lQ2xhc3NpY1NjcmlwdCgKKyAgICAgICAgc2NyaXB0RWxlbWVudC5l
bGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om5vbmNl
QXR0ciksCisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLAorICAgICAgICBzY3Jp
cHRFbGVtZW50LnNjcmlwdENoYXJzZXQoKSwKKyAgICAgICAgc2NyaXB0RWxlbWVudC5lbGVtZW50
KCkubG9jYWxOYW1lKCksCisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKCkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZUNsYXNzaWNTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFz
c2ljU2NyaXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUyNjUzNTM0ODRiMjYwMmM5ZDgzNWNmYTNmM2I1MjQy
YjdmNjU3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFz
c2ljU2NyaXB0LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVk
U2NyaXB0RmV0Y2hlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEVs
ZW1lbnQ7CisKK2NsYXNzIElubGluZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
U2NyaXB0RmV0Y2hlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbmxpbmVDbGFzc2ljU2Ny
aXB0PiBjcmVhdGUoU2NyaXB0RWxlbWVudCYpOworCitwcml2YXRlOgorICAgIElubGluZUNsYXNz
aWNTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1v
ZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JO
YW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgICAgICA6IENhY2hlZFNjcmlw
dEZldGNoZXIobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwg
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgeworICAgIH0KK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggOThjYjA2ZGZiNzhj
NTNmOGJkNTY0ZmIyNzQxYTAwMzFhNDg0MWUzOC4uNjExOWFiMTI2YzVjNzI0YTliY2ZhNDk2MmZk
ZWIzMzZlNWVlZTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogdm9pZCBMb2FkYWJsZUNs
YXNzaWNTY3JpcHQ6OmV4ZWN1dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCkKIHsKICAg
ICBBU1NFUlQoIWVycm9yKCkpOwotICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3Jp
cHQoU2NyaXB0U291cmNlQ29kZShtX2NhY2hlZFNjcmlwdC5nZXQoKSwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pKTsKKyAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFz
c2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUobV9jYWNoZWRTY3JpcHQuZ2V0KCksIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCAqdGhpcykpOwogfQogCiBib29sIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291
cmNlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAKaW5kZXggYTNmMGQxNDJh
YWNiZDc0MTBhY2M1ZDM2NmJhYTk1OTI4ZGQ3NTNlZS4uMWJkZGUxZWI1ZDZhMDdmMTE3Mzg5Yjk5
Yzc1ZWNiMDFiNjBmODgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCkBA
IC02MCwyNSArNjAsNCBAQCB2b2lkIExvYWRhYmxlU2NyaXB0Ojpub3RpZnlDbGllbnRGaW5pc2hl
ZCgpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMpOwogfQogCi1DYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IExvYWRhYmxlU2NyaXB0OjpyZXF1ZXN0U2NyaXB0
V2l0aENhY2hlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpIGNvbnN0
Ci17Ci0gICAgYXV0byogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwotICAgIGlmIChz
ZXR0aW5ncyAmJiAhc2V0dGluZ3MtPmlzU2NyaXB0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIEFTU0VSVChkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7
Ci0gICAgYm9vbCBoYXNLbm93bk5vbmNlID0gZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93U2NyaXB0V2l0aE5vbmNlKG1fbm9uY2UsIG1faXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUpOwotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNlY3Vy
aXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLQotICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChzb3VyY2VVUkwpLCBvcHRpb25zKTsKLSAgICByZXF1
ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihtX2Nyb3NzT3JpZ2luTW9kZSwgZG9jdW1l
bnQpOwotICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKGRvY3VtZW50
KTsKLQotICAgIHJlcXVlc3Quc2V0Q2hhcnNldChtX2NoYXJzZXQpOwotICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7Ci0KLSAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpOwotfQotCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oCmluZGV4IDcyNzA0ZGE3Mjc3MjljMmVlMTFh
NDc3ZjlkMmZmYTFkMDZiZTY4OTkuLmNhODRlODExZWI5YWFjODg5YThiNTcxOWNkYzBkNzVhNjE0
MDE2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oCkBAIC0yNSwyMiArMjUsMTgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgor
I2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbnNv
bGVUeXBlcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDYWNoZWRTY3JpcHQ7Ci1jbGFzcyBEb2N1bWVudDsKIGNsYXNzIExvYWRhYmxlU2NyaXB0
Q2xpZW50OwogY2xhc3MgU2NyaXB0RWxlbWVudDsKLWNsYXNzIFVSTDsKIAotY2xhc3MgTG9hZGFi
bGVTY3JpcHQgOiBwdWJsaWMgSlNDOjpTY3JpcHRGZXRjaGVyIHsKK2NsYXNzIExvYWRhYmxlU2Ny
aXB0IDogcHVibGljIENhY2hlZFNjcmlwdEZldGNoZXIgewogcHVibGljOgogICAgIGVudW0gY2xh
c3MgRXJyb3JUeXBlIHsKICAgICAgICAgQ2FjaGVkU2NyaXB0LApAQCAtNzMsMjcgKzY5LDE1IEBA
IGNsYXNzIExvYWRhYmxlU2NyaXB0IDogcHVibGljIEpTQzo6U2NyaXB0RmV0Y2hlciB7CiAgICAg
dmlydHVhbCBib29sIGlzQ2xhc3NpY1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzTW9kdWxlU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdp
dGhDYWNoZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdDsKLQogcHJvdGVj
dGVkOgogICAgIExvYWRhYmxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKLSAgICAg
ICAgOiBtX25vbmNlKG5vbmNlKQotICAgICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3Jp
Z2luTW9kZSkKLSAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKLSAgICAgICAgLCBtX2luaXRp
YXRvck5hbWUoaW5pdGlhdG9yTmFtZSkKLSAgICAgICAgLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgICAgICA6IENhY2hlZFNjcmlwdEZldGNo
ZXIobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgbm90aWZ5Q2xpZW50
RmluaXNoZWQoKTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9ub25jZTsKLSAgICBTdHJpbmcg
bV9jcm9zc09yaWdpbk1vZGU7Ci0gICAgU3RyaW5nIG1fY2hhcnNldDsKLSAgICBBdG9taWNTdHJp
bmcgbV9pbml0aWF0b3JOYW1lOwotICAgIGJvb2wgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSB7
IGZhbHNlIH07Ci0KICAgICBIYXNoQ291bnRlZFNldDxMb2FkYWJsZVNjcmlwdENsaWVudCo+IG1f
Y2xpZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBiNDMz
ZmJjMjg1ZjQ1ZDBlYTBhNjdhMTA5ZWVkZjE3ZjhiMzI4OTkyLi4xMGE0MzNkOGRlZWZlMTM3MzBi
NTkwMjIyNWU2YmNlNGU0OTA3ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudElu
Y3JlbWVudGVyLmgiCisjaW5jbHVkZSAiSW5saW5lQ2xhc3NpY1NjcmlwdC5oIgogI2luY2x1ZGUg
IkxvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIgogI2luY2x1ZGUgIkxvYWRhYmxlTW9kdWxlU2NyaXB0
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMjc1LDcgKzI3Niw3IEBAIGJv
b2wgU2NyaXB0RWxlbWVudDo6cHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlw
dFN0YXJ0UG9zaXRpb24sIExlZ2FjCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHNjcmlw
dFR5cGUgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYyk7CiAgICAgICAgIFRleHRQb3NpdGlvbiBwb3Np
dGlvbiA9IGRvY3VtZW50LmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBUZXh0UG9zaXRpb24oKSA6IHNj
cmlwdFN0YXJ0UG9zaXRpb247Ci0gICAgICAgIGV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0Q29udGVudCgpLCBkb2N1bWVudC51cmwoKSwgcG9zaXRpb24sIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKSk7CisgICAgICAgIGV4ZWN1dGVDbGFz
c2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0Q29udGVudCgpLCBkb2N1bWVudC51cmwo
KSwgcG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtLCBJbmxp
bmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoKnRoaXMpLnB0cigpKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNDgsOCArMzQ5LDEwIEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVz
dE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVN
b2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRDaGFyc2V0
KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKCkpOworCiAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gbV9lbGVtZW50LmRvY3VtZW50
KCkuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDogc2NyaXB0U3RhcnRQb3Np
dGlvbjsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0Q29udGVudCgpLCBt
X2VsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgcG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpNb2R1bGUpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3Jp
cHRDb250ZW50KCksIG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBwb3NpdGlvbiwgSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0LnB0cigpKTsKIAogICAgIEFT
U0VSVChtX2VsZW1lbnQuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAg
Y29uc3QgYXV0byYgY29udGVudFNlY3VyaXR5UG9saWN5ID0gKm1fZWxlbWVudC5kb2N1bWVudCgp
LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpOwpAQCAtMzU3LDcgKzM2MCw2IEBAIGJvb2wgU2NyaXB0
RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0
YXJ0UG9zaXRpb24pCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dJbmxpbmVT
Y3JpcHQobV9lbGVtZW50LmRvY3VtZW50KCkudXJsKCksIG1fc3RhcnRMaW5lTnVtYmVyLCBzb3Vy
Y2VDb2RlLnNvdXJjZSgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgaGFzS25vd25Ob25jZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVNb2R1
bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRDaGFyc2V0KCks
IG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVl
KCkpOwogICAgIHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwgc291cmNlQ29kZSk7
CiAgICAgbV9sb2FkYWJsZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQyNiw3ICs0MjgsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVQZW5kaW5n
U2NyaXB0KFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpCiAgICAgZWxzZSB7CiAgICAgICAg
IEFTU0VSVCghcGVuZGluZ1NjcmlwdC5lcnJvcigpKTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShzY3JpcHRUeXBlKCkgPT0gU2NyaXB0VHlwZTo6Q2xhc3NpYywgIk1vZHVsZSBzY3JpcHQg
YWx3YXlzIGhhdmUgYSBsb2FkYWJsZVNjcmlwdCBwb2ludGVyLiIpOwotICAgICAgICBleGVjdXRl
Q2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgbV9lbGVtZW50
LmRvY3VtZW50KCkudXJsKCksIHBlbmRpbmdTY3JpcHQuc3RhcnRpbmdQb3NpdGlvbigpLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkpOworICAgICAgICBleGVjdXRlQ2xh
c3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgbV9lbGVtZW50LmRv
Y3VtZW50KCkudXJsKCksIHBlbmRpbmdTY3JpcHQuc3RhcnRpbmdQb3NpdGlvbigpLCBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3Jl
YXRlKCp0aGlzKS5wdHIoKSkpOwogICAgICAgICBkaXNwYXRjaExvYWRFdmVudCgpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAK
aW5kZXggYzFmNDJjMjI1ZDAwNzc5YWI0NDVjMTEyNTFkMzczYTQ4N2YyY2QyZS4uN2E1ODA1NmJh
ODA0MGQzMzJiMzI4MDgzNDA4ZGU2MTc5MDcyMTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVySG9zdC5oIgogI2lu
Y2x1ZGUgIklnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmgiCisjaW5jbHVk
ZSAiSW5saW5lQ2xhc3NpY1NjcmlwdC5oIgogI2luY2x1ZGUgIk1pY3JvdGFza3MuaCIKICNpbmNs
dWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIuaCIKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlw
dChTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50LCBjb25zdCBUZXh0UG9zaXRpbwogICAgICAg
ICBpZiAobV9zY3JpcHROZXN0aW5nTGV2ZWwgPT0gMSkKICAgICAgICAgICAgIG1fcGFyc2VyQmxv
Y2tpbmdTY3JpcHQgPSBQZW5kaW5nU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCwgc2NyaXB0
U3RhcnRQb3NpdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQu
ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LmVsZW1l
bnQoKS50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3Vt
ZW50KSwgc2NyaXB0U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5l
eGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuZWxlbWVu
dCgpLnRleHRDb250ZW50KCksIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKG1fZG9jdW1l
bnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQpLnB0cigp
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcXVlc3RQYXJzaW5nQmxvY2tpbmdTY3JpcHQoc2Ny
aXB0RWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggZjQ4MTAwNTI2NzExNjI5MGZiMWZkNTM2
YzgwODkxMGNiZTU2YTgzMi4uY2ZjMDAyNzI2NWIzNmEzNDBiMTg0MDRlZDg5ODEzODRjNDQ5MGRh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkhUTUxFbnRpdHlQ
YXJzZXIuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGVt
cGxhdGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5saW5lQ2xhc3NpY1NjcmlwdC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQZW5kaW5nU2NyaXB0LmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCkBAIC04NzcsNyArODc4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6ZW5kRWxlbWVudE5zKCkKICAgICAgICAgLy8gdGhlIGxpYnhtbDIgYW5kIFF0IFhNTERv
Y3VtZW50UGFyc2VyIGltcGxlbWVudGF0aW9ucy4KIAogICAgICAgICBpZiAoc2NyaXB0RWxlbWVu
dC5yZWFkeVRvQmVQYXJzZXJFeGVjdXRlZCgpKQotICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5l
eGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuc2NyaXB0
Q29udGVudCgpLCBkb2N1bWVudCgpLT51cmwoKSwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKSk7Cisg
ICAgICAgICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0RWxlbWVudC5zY3JpcHRDb250ZW50KCksIGRvY3VtZW50KCktPnVybCgpLCBt
X3NjcmlwdFN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9n
cmFtLCBJbmxpbmVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoc2NyaXB0RWxlbWVudCkucHRyKCkpKTsK
ICAgICAgICAgZWxzZSBpZiAoc2NyaXB0RWxlbWVudC53aWxsQmVQYXJzZXJFeGVjdXRlZCgpICYm
IHNjcmlwdEVsZW1lbnQubG9hZGFibGVTY3JpcHQoKSkgewogICAgICAgICAgICAgbV9wZW5kaW5n
U2NyaXB0ID0gUGVuZGluZ1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQsICpzY3JpcHRFbGVt
ZW50LmxvYWRhYmxlU2NyaXB0KCkpOwogICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5zZXRD
bGllbnQoKnRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298580</attachid>
            <date>2017-01-11 07:13:03 -0800</date>
            <delta_ts>2017-01-11 07:13:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166925-20170112001124.patch</filename>
            <type>text/plain</type>
            <size>53364</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWMyZTliMDVhZjdhMjQ5NTEwMmU3YWVjOWI3NGFlMmNkYTE2MTNhLi5mMGJlMGNmODk5MjI1NjRj
YjRhZTllMjM1NDIyYzdlYzE4MDk4MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOCBAQAogMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgSW5saW5lQ2xhc3NpY1NjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNjcmlwdEZldGNoZXIg
ZmllbGQgZm9yIFNvdXJjZU9yaWdpbi4KKworICAgICAgICAqIHJ1bnRpbWUvU291cmNlT3JpZ2lu
Lmg6CisgICAgICAgIChKU0M6OlNvdXJjZU9yaWdpbjo6U291cmNlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6U291cmNlT3JpZ2luOjpmZXRjaGVyKToKKworMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9h
ZGluZyBpbml0aWF0b3IgZnJvbSBTY3JpcHRFbGVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIwMTlhOTJh
MGU5OWE4ODFiYWQyMGYxMDczODEwMjMxZjAyYTk3YTUuLmFjMThhMjMwZmMwOTE5MmViNDA0ODFj
NjY0NjJkY2I5ODE2M2FkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxMTYgQEAKIDIwMTctMDEt
MTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgSW1w
bGVtZW50IElubGluZUNsYXNzaWNTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NjkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFzIG9mIHIyMTA1ODUsIFNjcmlwdEZldGNoZXIgZnVuY3Rpb25h
bGl0eSBpcyBkZWNvdXBsZWQgZnJvbSBTY3JpcHRFbGVtZW50LgorICAgICAgICBUaGlzIHBhdGNo
IGlzIGZ1cnRoZXIgY2xlYW4gdXAuIFdlIGludHJvZHVjZSBJbmxpbmVDbGFzc2ljU2NyaXB0LCB3
aGljaCBpcworICAgICAgICBzaW1pbGFyIHRvIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCAvIExvYWRh
YmxlTW9kdWxlU2NyaXB0LiBBbmQgd2UgbW92ZSBTY3JpcHRGZXRjaGVyCisgICAgICAgIGZ1bmN0
aW9uYWxpdHkgZnJvbSBMb2FkYWJsZVNjcmlwdCB0byBDYWNoZWRTY3JpcHRGZXRjaGVyLCB3aGlj
aCBpcyB0aGUgYmFzZQorICAgICAgICBjbGFzcyBvZiBJbmxpbmVDbGFzc2ljU2NyaXB0IGFuZCBM
b2FkYWJsZVNjcmlwdC4KKworICAgICAgICBBbmQgd2Ugc3RhcnQgc2V0dGluZyB0aGlzIENhY2hl
ZFNjcmlwdEZldGNoZXIgdG8gdGhlIG1lbWJlciBvZiBKU0M6OlNvdXJjZU9yaWdpbi4KKyAgICAg
ICAgVGhpcyBhbGxvd3MgdXMgdG8gZXhhbWluZSB0aGUgU2NyaXB0RmV0Y2hlciBmcm9tIHRoZSBT
b3VyY2VPcmlnaW4uCisgICAgICAgIEl0IGlzIGltcG9ydGFudCBmb3IgZHluYW1pYy1pbXBvcnQu
IFdoZW4gZHluYW1pYy1pbXBvcnQgb3BlcmF0b3IgaXMgY2FsbGVkLAorICAgICAgICB3ZSBuZWVk
IHRvIGdldCB0aGUgU2NyaXB0RmV0Y2hlciBmb3IgdGhlIGNhbGxlciBzY3JpcHQgU291cmNlT3Jp
Z2luLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdEZldGNoZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVTY3JpcHQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVx
dWVzdFNjcmlwdFdpdGhDYWNoZSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Tb3Vy
Y2VPcmlnaW4uaC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdEZldGNoZXI6OkNhY2hl
ZFNjcmlwdEZldGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJj
ZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
OjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjptYWtlU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVT
Y3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRN
b2R1bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3Jp
cHRTb3VyY2VDb2RlKToKKyAgICAgICAgKiBkb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBkb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xh
c3NpY1NjcmlwdDo6ZXhlY3V0ZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxlU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpMb2FkYWJsZVNjcmlwdCk6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50OjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpy
dW5TY3JpcHQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMp
OgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
Q2FjaGVkU2NyaXB0RmV0Y2hlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Tb3VyY2VPcmlnaW4uaC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdEZl
dGNoZXI6OkNhY2hlZFNjcmlwdEZldGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyOjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJD
b3JlOjptYWtlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3Vy
Y2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgKiBkb20vSW5saW5lQ2xhc3NpY1Nj
cmlwdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQ2xhc3NpY1NjcmlwdDo6
Y3JlYXRlKToKKyAgICAgICAgKiBkb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBkb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXhlY3V0ZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxl
U2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpyZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpMb2FkYWJsZVNjcmlwdCk6CisgICAg
ICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0UnVubmVyOjpydW5TY3JpcHQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpl
bmRFbGVtZW50TnMpOgorCisyMDE3LTAxLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIERlY291cGxlIG1vZHVsZSBsb2FkaW5nIGluaXRpYXRvciBm
cm9tIFNjcmlwdEVsZW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2Njg4OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Tb3VyY2VPcmlnaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJj
ZU9yaWdpbi5oCmluZGV4IGY0MmEwZDNlZWE4OTQ0ZjJhOWMxMWI4MTk3Nzc5ODViYTZkN2E5YzAu
LmEzNzRlOWNjZGZmMGJjOTYwOWM2Nzc1ODYyZWNhMDg5MmY3MTYyYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJjZU9yaWdpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJjZU9yaWdpbi5oCkBAIC0yNSwxNCArMjUsMTYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTb3VyY2VP
cmlnaW4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFNvdXJjZU9yaWdpbihjb25zdCBTdHJpbmcm
IHN0cmluZykKKyAgICBleHBsaWNpdCBTb3VyY2VPcmlnaW4oY29uc3QgU3RyaW5nJiBzdHJpbmcs
IFNjcmlwdEZldGNoZXIqIGZldGNoZXIgPSBudWxscHRyKQogICAgICAgICA6IG1fc3RyaW5nKHN0
cmluZykKKyAgICAgICAgLCBtX2ZldGNoZXIoZmV0Y2hlcikKICAgICB7CiAgICAgfQogCkBAIC00
MSw4ICs0MywxMSBAQCBjbGFzcyBTb3VyY2VPcmlnaW4gewogICAgIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CiAKKyAgICBTY3JpcHRGZXRjaGVyKiBmZXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9mZXRjaGVyLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3RyaW5nOworICAgIFJlZlB0cjxTY3JpcHRGZXRjaGVyPiBtX2ZldGNoZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDgxOTdiMmRi
Mjk1M2Y2MzVkZGJjOWJiMGEwNTUzMzVhY2E5MjU2Zi4uZDQ5NmU5YTJlM2FiNTk4ZTkwNzcwOWNh
OTczNjBlZDU0MmU2YTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNjcsNiArMTA2Nyw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdC5jcHAKICAgICBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCisg
ICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKICAgICBiaW5kaW5ncy9qcy9D
YWxsYmFja0Z1bmN0aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAogICAgIGJp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTE0NDIsNiArMTQ0Myw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICBkb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCiAgICAgZG9tL0lk
VGFyZ2V0T2JzZXJ2ZXIuY3BwCiAgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAK
KyAgICBkb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAKICAgICBkb20vSW5saW5lU3R5bGVTaGVl
dE93bmVyLmNwcAogICAgIGRvbS9JbnB1dEV2ZW50LmNwcAogICAgIGRvbS9LZXlib2FyZEV2ZW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGJjYmM2NTYzN2Q0NzQ2MjFmNTZiNWJiNDg1ZmQ0OTBjNTJlMjdhNzAuLjQzM2U4
NDVhYjIyNTAwNjE1NDVmODkwMThlYjVmYTk1NzA4YzFhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyODgsNiArNjI4OCwx
MCBAQAogCQlFMzE1MEVBNjFEQTcyMTkwMDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURBNkU5
MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcyMTkz
MDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBl
cnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25j
YXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1
ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzE4QTYyRDFFMjY4MjFCMDA3
QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGOTc4RTkxRTI2ODFDRTAwQzgzNzE1IC8qIENhY2hlZFNj
cmlwdEZldGNoZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzE4QTYyRTFFMjY4MjFEMDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Y5NzhF
ODFFMjY4MUNFMDBDODM3MTUgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgKi87IH07CisJCUUz
MThBNjJGMUUyNjgyM0UwMDdBQzk4MyAvKiBJbmxpbmVDbGFzc2ljU2NyaXB0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Y5NzhFNzFFMjY3RjEyMDBD
ODM3MTUgLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMThBNjMwMUUyNjgyNDQwMDdBQzk4MyAvKiBJbmxp
bmVDbGFzc2ljU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRjk3OEU2MUUyNjdGMTIwMEM4MzcxNSAvKiBJbmxpbmVDbGFzc2ljU2NyaXB0
LmNwcCAqLzsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVFNDlG
MURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1ODAyQjYxREM4NDM1RDAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmls
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYz
QyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE0MzEyLDYgKzE0MzE2LDEwIEBACiAJCUUzQjdDMDYyMURDMzQxNUEw
MDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0M5OUEwODFEQzNENDE3MDA3OTRBRDMgLyogRE9NSklUQ2hlY2tET00uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2hlY2tET00uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25z
dGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0YW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Y5NzhFNjFFMjY3RjEyMDBDODM3MTUg
LyogSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmxpbmVDbGFzc2ljU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNGOTc4RTcxRTI2N0YxMjAwQzgzNzE1IC8qIElubGluZUNsYXNzaWNTY3JpcHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lQ2xhc3NpY1NjcmlwdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Y5NzhFODFFMjY4MUNFMDBDODM3MTUgLyog
Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNGOTc4RTkxRTI2ODFDRTAwQzgzNzE1IC8qIENhY2hlZFNjcmlwdEZldGNoZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ZBMzg2MTFENzE2RTc2MDBBQTU5NTAgLyogUGVu
ZGluZ1NjcmlwdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5k
aW5nU2NyaXB0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDFDMjc0
MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0
eWxlQ2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ2hhbmdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjAwOSw2ICsyMjAxNyw4IEBACiAJ
CQkJRTMwN0RFQzYxRDgxRTQ0ODAwMTQxQ0FGIC8qIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5j
cHAgKi8sCiAJCQkJRTMwN0RFQzcxRDgxRTQ0ODAwMTQxQ0FGIC8qIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oICovLAogCQkJCUUzMDdERUM4MUQ4MUU0NDgwMDE0MUNBRiAvKiBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXJDbGllbnQuaCAqLywKKwkJCQlFM0Y5NzhFODFFMjY4MUNFMDBDODM3MTUg
LyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgKi8sCisJCQkJRTNGOTc4RTkxRTI2ODFDRTAwQzgz
NzE1IC8qIENhY2hlZFNjcmlwdEZldGNoZXIuaCAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4
ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQkwRjYwRjMyOTFE
RkJCMTA0MDA0MTZENkMgLyogQ29tbW9uVk0uY3BwICovLAogCQkJCTBGNjBGMzJBMURGQkIxMDQw
MDQxNkQ2QyAvKiBDb21tb25WTS5oICovLApAQCAtMjQxNzQsNiArMjQxODQsOCBAQAogCQkJCUMz
Q0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLywK
IAkJCQk4QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNv
dW50SW5jcmVtZW50ZXIuaCAqLywKIAkJCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdu
b3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi8sCisJCQkJRTNGOTc4RTYx
RTI2N0YxMjAwQzgzNzE1IC8qIElubGluZUNsYXNzaWNTY3JpcHQuY3BwICovLAorCQkJCUUzRjk3
OEU3MUUyNjdGMTIwMEM4MzcxNSAvKiBJbmxpbmVDbGFzc2ljU2NyaXB0LmggKi8sCiAJCQkJQUE0
QzNBNzQwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5jcHAgKi8sCiAJ
CQkJQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oICov
LAogCQkJCTJFQjc2NzU1MURBMTlCOTkwMDNFMjNCNSAvKiBJbnB1dEV2ZW50LmNwcCAqLywKQEAg
LTI1Mjg2LDYgKzI1Mjk4LDcgQEAKIAkJCQlCQzIzRUU5MjBEQUVEMkJDMDA5RkRDOTEgLyogQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5M0U2MDAxNTFBOTlG
MjAwMDY2RjA2IC8qIENTU0ltYWdlU2V0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2
Q0ZBMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzE4QTYyRjFFMjY4MjNFMDA3QUM5ODMgLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgwRTZDRjYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltcG9ydFJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhl
cml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU0luaXRpYWxWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA4OSw2ICsyODEwMiw3
IEBACiAJCQkJMkQ3RUQwQUIxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NEREMDgxODgxRDVGNTAwM0VFREJCIC8q
IFRvdWNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4QTYyRDFFMjY4MjFCMDA3QUM5ODMgLyog
Q2FjaGVkU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NEREMDkxODgxRDVG
NTAwM0VFREJCIC8qIFRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTRERDBBMTg4
MUQ1RjUwMDNFRURCQiAvKiBUb3VjaExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3
MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjk4Njks
NiArMjk4ODMsNyBAQAogCQkJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVM
aXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjAxMUI2MEEwMDMxMzMwMDgzMDNG
OSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1ODI1
RjMwQzBCODkzODAwNTNGMUI1IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMzE4QTYzMDFFMjY4MjQ0MDA3QUM5ODMgLyogSW5saW5lQ2xhc3Np
Y1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ2QzIwNjBDMEREQ0ExMDAyMENGQzMg
LyogSlNDU1NTdHlsZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNUJFMDAwQzBFOTMx
MTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3
NzczQTE5NUNCMTRBMDA3MkUwRDMgLyogSlNDU1NTdXBwb3J0c1J1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMTAwMyw2ICszMTAxOCw3IEBACiAJCQkJMUEzRkY5QzMxNTI2NTM1OTAwMjI4OEEx
IC8qIFJlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3
RjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE0M0JGNTlDMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzE4QTYyRTFFMjY4MjFEMDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QTU3NEYyNDEzMURCOTM5MDA0NzFCODggLyogUmVu
ZGVyUXVvdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDcwQUQ2NTcxM0UxMzQyQjAwNUI1MEI0
IC8qIFJlbmRlclJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U5M0Y0NzE1MTdDNkQ1
MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKaW5kZXggMGZl
YzRiNTliMWQyZDMxNGQ4MDQyZjcxMTNhZmI5OTk0YzU2ODZmZC4uODM3NDgxMjJlNDNjZmYwZWE0
YWY0MzkzNjIwOWZhNmFkN2JmZGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwCkBAIC00MywxNiArNDMsMTYgQEAgUmVmPENhY2hl
ZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUoKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdCgpKTsKIH0KIAotdm9pZCBDYWNoZWRNb2R1
bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwsIExv
YWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKK3ZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojps
b2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyJiBzY3JpcHRGZXRjaGVyKQogewogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
LmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxlU2NyaXB0KCp0aGlz
LCByb290VVJMLnN0cmluZygpLCBsb2FkYWJsZVNjcmlwdCk7CisgICAgICAgIGZyYW1lLT5zY3Jp
cHQoKS5sb2FkTW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpLCBzY3JpcHRGZXRj
aGVyKTsKIH0KIAotdm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYg
bG9hZGFibGVTY3JpcHQpCit2b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENhY2hlZFNjcmlw
dEZldGNoZXImIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRo
aXMsIHNvdXJjZUNvZGUsIGxvYWRhYmxlU2NyaXB0KTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHNvdXJjZUNvZGUsIHNjcmlwdEZldGNoZXIpOwogfQog
CiB2b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3Ry
aW5nSW1wbCYgbW9kdWxlS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHQuaAppbmRleCA1NjJkOTNkMDYzYjFmNGVjNGVjZWU3YmE2OTdiOTJiNTYy
OTUzMTFhLi5hYjhmOTBhMzljNjFiNmM2NTczODJlYmM4YzBjNDIxMWQyZjk5ZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaApAQCAtNTIs
OCArNTIsOCBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxD
YWNoZWRNb2R1bGVTY3JpcHQ+IHsKIAogICAgIHN0YXRpYyBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0
PiBjcmVhdGUoKTsKIAotICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9vdFVS
TCwgTG9hZGFibGVTY3JpcHQmKTsKLSAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgTG9hZGFibGVTY3JpcHQmKTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQm
LCBjb25zdCBVUkwmIHJvb3RVUkwsIENhY2hlZFNjcmlwdEZldGNoZXImKTsKKyAgICB2b2lkIGxv
YWQoRG9jdW1lbnQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hl
ciYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2Fk
ZXIuY3BwCmluZGV4IDYwYmRkNDg1Y2FiMzU4YzlhYzVlNzk3OTFmNWFiZDgyOTRlNDAxOGQuLjQ0
ZTlmZTdlODJmNzVmMTMyZjY4MTU1MTNiYzQ4NWE0YzZhODcxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcApA
QCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgi
CiAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHRGZXRj
aGVyLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJMb2FkYWJsZVNjcmlwdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKQEAgLTM4LDE0ICszOCwx
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2Fk
ZXI+IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Y3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExv
YWRlckNsaWVudCYgY2xpZW50LCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UpCitSZWY8Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyPiBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZShDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgRGVmZXJyZWRQcm9taXNlJiBwcm9t
aXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihjbGllbnQsIHByb21pc2UpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoY2xpZW50
LCBwcm9taXNlLCBzY3JpcHRGZXRjaGVyKSk7CiB9CiAKLUNhY2hlZE1vZHVsZVNjcmlwdExvYWRl
cjo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVu
dCYgY2xpZW50LCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UpCitDYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJD
bGllbnQmIGNsaWVudCwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRj
aGVyJiBzY3JpcHRGZXRjaGVyKQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcHJv
bWlzZSgmcHJvbWlzZSkKKyAgICAsIG1fc2NyaXB0RmV0Y2hlcihzY3JpcHRGZXRjaGVyKQogewog
fQogCkBAIC01NywxMCArNTgsMTAgQEAgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjp+Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyKCkKICAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyOjpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxl
U2NyaXB0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK2Jvb2wgQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyOjpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCiB7CiAg
ICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7Ci0gICAgbV9jYWNoZWRTY3JpcHQgPSBsb2FkYWJs
ZVNjcmlwdC5yZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwpOworICAg
IG1fY2FjaGVkU2NyaXB0ID0gbV9zY3JpcHRGZXRjaGVyLT5yZXF1ZXN0U2NyaXB0V2l0aENhY2hl
KGRvY3VtZW50LCBzb3VyY2VVUkwpOwogICAgIGlmICghbV9jYWNoZWRTY3JpcHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAppbmRleCAzMmZkZTNiZmE3MjRkNTI1NzlkMjE0ZTU3
ZTQ2ZDYzYTU1NzM0NjMxLi4wNDkyM2Y0ZGMyMzM3YWI2MjBhYTBmNTBkZGM4NTc5OWQxZWIxZmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXIuaApAQCAtMzUsMjAgKzM1LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50OwogY2xhc3MgQ2FjaGVkU2NyaXB0
OworY2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7Ci1jbGFzcyBMb2FkYWJsZVNj
cmlwdDsKIGNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBE
ZWZlcnJlZFByb21pc2UmKTsKKyAgICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRl
cj4gY3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJvbWlz
ZSYsIENhY2hlZFNjcmlwdEZldGNoZXImKTsKIAogICAgIHZpcnR1YWwgfkNhY2hlZE1vZHVsZVNj
cmlwdExvYWRlcigpOwogCi0gICAgYm9vbCBsb2FkKERvY3VtZW50JiwgTG9hZGFibGVTY3JpcHQm
LCBjb25zdCBVUkwmIHNvdXJjZVVSTCk7CisgICAgYm9vbCBsb2FkKERvY3VtZW50JiwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwpOwogCisgICAgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hl
cigpIHsgcmV0dXJuIG1fc2NyaXB0RmV0Y2hlci5nZXQoKTsgfQogICAgIENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KCkgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KIAogICAgIHZv
aWQgY2xlYXJDbGllbnQoKQpAQCAtNTgsMTIgKzU5LDEzIEBAIGNsYXNzIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExv
YWRlCiAgICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmKTsKKyAgICBDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiwgRGVm
ZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOwogCiAgICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiBtX3Byb21pc2U7CisgICAgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+IG1fc2NyaXB0
RmV0Y2hlcjsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVk
U2NyaXB0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjhlM2NiYzYzNTE5OTlkODI5OTI3OTRlNzQ0
ZjFkNDg0ZWQ0ZWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHRGZXRjaGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3QKK3sKKyAg
ICBhdXRvKiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdz
ICYmICFzZXR0aW5ncy0+aXNTY3JpcHRFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgQVNTRVJUKGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBi
b29sIGhhc0tub3duTm9uY2UgPSBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dTY3JpcHRXaXRoTm9uY2UobV9ub25jZSwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSk7Cisg
ICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMuY29udGVudFNlY3Vy
aXR5UG9saWN5SW1wb3NpdGlvbiA9IGhhc0tub3duTm9uY2UgPyBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uOjpEb1BvbGljeUNoZWNrOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0
QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKG1fY3Jvc3NPcmlnaW5Nb2RlLCBkb2N1bWVudCk7Cisg
ICAgcmVxdWVzdC51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoZG9jdW1lbnQpOworCisg
ICAgcmVxdWVzdC5zZXRDaGFyc2V0KG1fY2hhcnNldCk7CisgICAgcmVxdWVzdC5zZXRJbml0aWF0
b3IobV9pbml0aWF0b3JOYW1lKTsKKworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wY2VmNzE4NWMzZTE2ZjMxYWNiMjAzNzZkNDg0MmIwMzdhMzgxYmU5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8cnVudGltZS9TY3JpcHRG
ZXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkU2NyaXB0OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBV
Ukw7CisKK2NsYXNzIENhY2hlZFNjcmlwdEZldGNoZXIgOiBwdWJsaWMgSlNDOjpTY3JpcHRGZXRj
aGVyIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJl
cXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29u
c3Q7CisKK3Byb3RlY3RlZDoKKyAgICBDYWNoZWRTY3JpcHRGZXRjaGVyKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSkKKyAgICAgICAgOiBtX25vbmNlKG5vbmNlKQorICAgICAgICAsIG1fY3Jvc3NP
cmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKKyAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkK
KyAgICAgICAgLCBtX2luaXRpYXRvck5hbWUoaW5pdGlhdG9yTmFtZSkKKyAgICAgICAgLCBtX2lz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIG5vdGlmeUNsaWVudEZpbmlzaGVkKCk7CisKK3ByaXZhdGU6CisgICAg
U3RyaW5nIG1fbm9uY2U7CisgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOworICAgIFN0cmlu
ZyBtX2NoYXJzZXQ7CisgICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKKyAgICBib29s
IG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggZDM4Y2FmYjYzOTkyMDA1Y2NmZGEzMDU0MjY5
YTIxMDhhODFiZjk4Ny4uNjU5ZDBjNWNmYzAyYjZjZjEzN2FlNTBjNTUzMzU5NzE5MWE4YWRkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNs
dWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRl
ci5oPgogCkBAIC0zNiw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyIDogcHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcj4gY3JlYXRl
KENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZSBzb3VyY2VUeXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyKGNhY2hlZFNjcmlwdCwgc291cmNlVHlwZSkpOyB9CisgICAgc3RhdGljIFJlZjxDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlcj4gY3JlYXRlKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0
LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyKiBzY3JpcHRGZXRjaGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyKGNhY2hlZFNjcmlwdCwgc291cmNlVHlwZSwgc2NyaXB0RmV0Y2hlcikp
OyB9CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcigpCiAgICAgewpA
QCAtNDcsOCArNDgsOCBAQCBjbGFzcyBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBKU0M6OlNvdXJjZVByb3ZpZGVyLCBwdWJsaWMgQ2FjaGVkUmVzbwogICAgIFN0cmluZ1ZpZXcg
c291cmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNjcmlwdCgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2Ny
aXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5
cGUpCi0gICAgICAgIDogU291cmNlUHJvdmlkZXIoSlNDOjpTb3VyY2VPcmlnaW4geyBjYWNoZWRT
Y3JpcHQtPnJlc3BvbnNlKCkudXJsKCkgfSwgY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgp
LCBUZXh0UG9zaXRpb24oKSwgc291cmNlVHlwZSkKKyAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlcihDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGUgc291cmNlVHlwZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciogc2NyaXB0RmV0Y2hlcikKKyAg
ICAgICAgOiBTb3VyY2VQcm92aWRlcihKU0M6OlNvdXJjZU9yaWdpbiB7IGNhY2hlZFNjcmlwdC0+
cmVzcG9uc2UoKS51cmwoKSwgc2NyaXB0RmV0Y2hlciB9LCBjYWNoZWRTY3JpcHQtPnJlc3BvbnNl
KCkudXJsKCksIFRleHRQb3NpdGlvbigpLCBzb3VyY2VUeXBlKQogICAgICAgICAsIG1fY2FjaGVk
U2NyaXB0KGNhY2hlZFNjcmlwdCkKICAgICB7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRD
bGllbnQoKnRoaXMpOwpAQCAtNTcsOSArNTgsNCBAQCBjbGFzcyBDYWNoZWRTY3JpcHRTb3VyY2VQ
cm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3ZpZGVyLCBwdWJsaWMgQ2FjaGVkUmVzbwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiB9
OwogCi1pbmxpbmUgSlNDOjpTb3VyY2VDb2RlIG1ha2VTb3VyY2UoQ2FjaGVkU2NyaXB0KiBjYWNo
ZWRTY3JpcHQpCi17Ci0gICAgcmV0dXJuIEpTQzo6U291cmNlQ29kZShDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGU6OlByb2dyYW0pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzMjM3NjM1
NzEwZTYyZjY2NWQxNzliMzc4NDZmMWViZDk5YzA4ZmI2Li4wZWZmNDBkYTE3NGYzNzlmZTU4ZGJh
MjkyZWEzYjc1MWUxODRmYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQnJpZGdl
SlNDLmgiCiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0LmgiCisjaW5jbHVkZSAiQ2FjaGVk
U2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE4Niwz
NiArMTg3LDM2IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZXB0aW9uCiAgICAgcmV0dXJuIGV2YWx1YXRl
SW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0
YWlscyk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29y
bGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0LCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNo
ZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBD
YWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCiAgICAgYXV0byYgc2hl
bGwgPSAqd2luZG93U2hlbGwod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnNoZWxsLndpbmRv
dygpLT5nbG9iYWxFeGVjKCk7CiAKLSAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsgJmxvYWRhYmxlU2NyaXB0IH0pKTsKKyAgICBhdXRvJiBw
cm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVO
YW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsgJnNjcmlwdEZl
dGNoZXIgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMobW9kdWxlU2NyaXB0LCBw
cm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNj
cmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1
bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCit2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQs
IGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0
Y2hlcikKIHsKLSAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVs
ZU5hbWUsIGxvYWRhYmxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgbG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtb2R1bGVOYW1lLCBzY3JpcHRGZXRj
aGVyLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3Jp
cHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxlU2NyaXB0JiBs
b2FkYWJsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVT
Y3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENhY2hlZFNjcmlwdEZl
dGNoZXImIHNjcmlwdEZldGNoZXIsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dT
aGVsbCh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4
ZWMoKTsKIAotICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRN
b2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRj
aGVyOjpjcmVhdGUoc3RhdGUudm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOworICAgIGF1dG8m
IHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJj
ZUNvZGUuanNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUu
dm0oKSwgeyAmc2NyaXB0RmV0Y2hlciB9KSk7CiAgICAgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhtb2R1bGVTY3JpcHQsIHByb21pc2UsIHdvcmxkKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFi
bGVTY3JpcHQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVk
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgbG9hZE1v
ZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBzb3VyY2VDb2RlLCBsb2FkYWJsZVNjcmlw
dCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxk
KG1vZHVsZVNjcmlwdCwgc291cmNlQ29kZSwgc2NyaXB0RmV0Y2hlciwgbWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpOwogfQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2
YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA5ZTIwYzJjZTk2YmZjYzA5N2ZmNWJhZTE5MTNlZWNm
ZjI1YjcwOTA1Li4yZTg3NjhjYzMxMTEzZDFiNDEwMzA0NGVmYzUyOWY5OGM5NmMzYzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC01Miwx
MCArNTIsMTAgQEAgY2xhc3MgUm9vdE9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ2FjaGVkTW9kdWxlU2NyaXB0OworY2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlcjsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7Ci1j
bGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2NyaXB0
U291cmNlQ29kZTsKIGNsYXNzIFdpZGdldDsKQEAgLTExNCwxMCArMTE0LDEwIEBAIGNsYXNzIFNj
cmlwdENvbnRyb2xsZXIgewogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKICAgICBKU0M6OkpTVmFs
dWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29y
bGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwogCi0gICAgdm9pZCBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5h
bWUsIExvYWRhYmxlU2NyaXB0JiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgdm9pZCBsb2FkTW9k
dWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwg
TG9hZGFibGVTY3JpcHQmKTsKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hl
ZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYs
IERPTVdyYXBwZXJXb3JsZCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1
bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9hZGFibGVTY3JpcHQmKTsKKyAg
ICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0
IFN0cmluZyYgbW9kdWxlTmFtZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIERPTVdyYXBwZXJXb3Js
ZCYpOworICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIENhY2hlZFNjcmlwdEZldGNoZXImKTsKKyAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAg
dm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJik7CiAKICAgICBKU0M6OkpTVmFsdWUgbGlu
a0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9N
V3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNj
cmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDhkZDI0YzM5YzFiODAxNGZjZGQ4OWI0
ZjYyZjFkNzZkNDI5OThiOTcuLjYyYTg5NjdhMjMxMzY2YjY0ODNmNDhiNDhmZWEwODY2ZjY4YWIw
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9h
ZGVyLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPCiAgICAg
fQogCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAgICAg
IGF1dG8gbG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRl
ZmVycmVkLmdldCgpKTsKKyAgICAgICAgYXV0byBsb2FkZXIgPSBDYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXI6OmNyZWF0ZSgqdGhpcywgZGVmZXJyZWQuZ2V0KCksICpzdGF0aWNfY2FzdDxDYWNoZWRT
Y3JpcHRGZXRjaGVyKj4oSlNDOjpqc0Nhc3Q8SlNDOjpKU1NjcmlwdEZldGNoZXIqPihzY3JpcHRG
ZXRjaGVyKS0+ZmV0Y2hlcigpKSk7CiAgICAgICAgIG1fbG9hZGVycy5hZGQobG9hZGVyLmNvcHlS
ZWYoKSk7Ci0gICAgICAgIGlmICghbG9hZGVyLT5sb2FkKG1fZG9jdW1lbnQsICpzdGF0aWNfY2Fz
dDxMb2FkYWJsZVNjcmlwdCo+KEpTQzo6anNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVyKj4oc2Ny
aXB0RmV0Y2hlciktPmZldGNoZXIoKSksIGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgaWYgKCFs
b2FkZXItPmxvYWQobV9kb2N1bWVudCwgY29tcGxldGVkVVJMKSkgewogICAgICAgICAgICAgbG9h
ZGVyLT5jbGVhckNsaWVudCgpOwogICAgICAgICAgICAgbV9sb2FkZXJzLnJlbW92ZShXVEZNb3Zl
KGxvYWRlcikpOwogICAgICAgICAgICAgZGVmZXJyZWQtPnJlamVjdChmcmFtZS0+c2NyaXB0KCku
bW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2woKSk7CkBAIC0yNDMsNyArMjQz
LDcgQEAgdm9pZCBTY3JpcHRNb2R1bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlciYgbG9hZGVyLCBSZWZQdHIKICAgICB9CiAKICAgICBtX3JlcXVlc3RVUkxU
b1Jlc3BvbnNlVVJMTWFwLmFkZChjYWNoZWRTY3JpcHQudXJsKCksIGNhY2hlZFNjcmlwdC5yZXNw
b25zZSgpLnVybCgpKTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNjcmlwdFNvdXJjZUNvZGUoJmNh
Y2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CisgICAg
U2NyaXB0U291cmNlQ29kZSBzY3JpcHRTb3VyY2VDb2RlKCZjYWNoZWRTY3JpcHQsIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIGxvYWRlci5zY3JpcHRGZXRjaGVyKCkpOwog
ICAgIHByb21pc2UtPnJlc29sdmVXaXRoQ2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSkgewogICAg
ICAgICByZXR1cm4gSlNDOjpKU1NvdXJjZUNvZGU6OmNyZWF0ZShzdGF0ZS52bSgpLCBXVEZNb3Zl
KHNvdXJjZUNvZGUpKTsKICAgICB9LCBzY3JpcHRTb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCAz
MjhhZGQ4NDY4MTM0ZmU2OWFlMjgzZTFiMDE2ZWM4OTk4OTA2NzE3Li5jZTM2ZmZjYjQ4ODhkZDhm
OGUyYjlkOTk5ZjVjZmYwZTFkMGQ0ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUg
IkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRl
ci5oPgpAQCAtNDIsMTUgKzQzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Ny
aXB0U291cmNlQ29kZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkK
LSAgICAgICAgOiBtX3Byb3ZpZGVyKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShz
b3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLnN0cmluZygpIH0sIHVybC5zdHJpbmcoKSwg
c3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpCisgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciogc2NyaXB0RmV0Y2hlciA9IG51bGxwdHIpCisgICAgICAg
IDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBK
U0M6OlNvdXJjZU9yaWdpbiB7IHVybC5zdHJpbmcoKSwgc2NyaXB0RmV0Y2hlciB9LCB1cmwuc3Ry
aW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQogICAgICAgICAsIG1fY29kZShtX3By
b3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgIHsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBTY3JpcHRTb3VyY2VDb2RlKENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKQotICAgICAg
ICA6IG1fcHJvdmlkZXIoQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6OmNyZWF0ZShjYWNoZWRT
Y3JpcHQsIHNvdXJjZVR5cGUpKQorICAgIGV4cGxpY2l0IFNjcmlwdFNvdXJjZUNvZGUoQ2FjaGVk
U2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJj
ZVR5cGUsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIpCisgICAgICAgIDogbV9w
cm92aWRlcihDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hlZFNjcmlwdCwg
c291cmNlVHlwZSwgJnNjcmlwdEZldGNoZXIpKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVy
KQogICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZlNmQyNzUx
YTk3N2M2ZmJiZmE4MDRmNmJhZjRkMmRiMGQ3NTdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFzc2ljU2NyaXB0LmNwcApAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklubGluZUNsYXNzaWNTY3JpcHQuaCIKKworI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmPElubGluZUNsYXNzaWNTY3JpcHQ+IElubGluZUNsYXNzaWNTY3JpcHQ6
OmNyZWF0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IElubGluZUNsYXNzaWNTY3JpcHQoCisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxl
bWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpub25jZUF0
dHIpLAorICAgICAgICBzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwKKyAgICAgICAgc2NyaXB0
RWxlbWVudC5zY3JpcHRDaGFyc2V0KCksCisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxlbWVudCgp
LmxvY2FsTmFtZSgpLAorICAgICAgICBzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS5pc0luVXNlckFn
ZW50U2hhZG93VHJlZSgpKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVDbGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3Np
Y1NjcmlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMjY1MzUzNDg0YjI2MDJjOWQ4MzVjZmEzZjNiNTI0MmI3
ZjY1NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3Np
Y1NjcmlwdC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdEZldGNoZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFbGVt
ZW50OworCitjbGFzcyBJbmxpbmVDbGFzc2ljU2NyaXB0IGZpbmFsIDogcHVibGljIENhY2hlZFNj
cmlwdEZldGNoZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW5saW5lQ2xhc3NpY1Njcmlw
dD4gY3JlYXRlKFNjcmlwdEVsZW1lbnQmKTsKKworcHJpdmF0ZToKKyAgICBJbmxpbmVDbGFzc2lj
U2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFt
ZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAgICAgOiBDYWNoZWRTY3JpcHRG
ZXRjaGVyKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIHsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDk4Y2IwNmRmYjc4YzUz
ZjhiZDU2NGZiMjc0MWEwMDMxYTQ4NDFlMzguLjYxMTlhYjEyNmM1YzcyNGE5YmNmYTQ5NjJmZGVi
MzM2ZTVlZWU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0OjpleGVjdXRlKFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiB7CiAgICAg
QVNTRVJUKCFlcnJvcigpKTsKLSAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUobV9jYWNoZWRTY3JpcHQuZ2V0KCksIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlOjpQcm9ncmFtKSk7CisgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3Np
Y1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKG1fY2FjaGVkU2NyaXB0LmdldCgpLCBKU0M6OlNvdXJj
ZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgKnRoaXMpKTsKIH0KIAogYm9vbCBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJj
ZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCmluZGV4IGEzZjBkMTQyYWFj
YmQ3NDEwYWNjNWQzNjZiYWE5NTkyOGRkNzUzZWUuLjFiZGRlMWViNWQ2YTA3ZjExNzM4OWI5OWM3
NWVjYjAxYjYwZjg4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcApAQCAt
NjAsMjUgKzYwLDQgQEAgdm9pZCBMb2FkYWJsZVNjcmlwdDo6bm90aWZ5Q2xpZW50RmluaXNoZWQo
KQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsKIH0KIAotQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBMb2FkYWJsZVNjcmlwdDo6cmVxdWVzdFNjcmlwdFdp
dGhDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdAot
ewotICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKLSAgICBpZiAoc2V0
dGluZ3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwot
ICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5hbGxvd1NjcmlwdFdpdGhOb25jZShtX25vbmNlLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVl
KTsKLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9ucyk7Ci0gICAgcmVxdWVz
dC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50
KTsKLSAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7
Ci0KLSAgICByZXF1ZXN0LnNldENoYXJzZXQobV9jaGFyc2V0KTsKLSAgICByZXF1ZXN0LnNldElu
aXRpYXRvcihtX2luaXRpYXRvck5hbWUpOwotCi0gICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAppbmRleCA3MjcwNGRhNzI3NzI5YzJlZTExYTQ3
N2Y5ZDJmZmExZDA2YmU2ODk5Li5jYTg0ZTgxMWViOWFhYzg4OWE4YjU3MTljZGMwZDc1YTYxNDAx
NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaApAQCAtMjUsMjIgKzI1LDE4IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJDYWNoZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xl
VHlwZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FjaGVkU2NyaXB0OwotY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVNjcmlwdENs
aWVudDsKIGNsYXNzIFNjcmlwdEVsZW1lbnQ7Ci1jbGFzcyBVUkw7CiAKLWNsYXNzIExvYWRhYmxl
U2NyaXB0IDogcHVibGljIEpTQzo6U2NyaXB0RmV0Y2hlciB7CitjbGFzcyBMb2FkYWJsZVNjcmlw
dCA6IHB1YmxpYyBDYWNoZWRTY3JpcHRGZXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IEVycm9yVHlwZSB7CiAgICAgICAgIENhY2hlZFNjcmlwdCwKQEAgLTczLDI3ICs2OSwxNSBAQCBj
bGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewogICAgIHZp
cnR1YWwgYm9vbCBpc0NsYXNzaWNTY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc01vZHVsZVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRo
Q2FjaGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3Q7Ci0KIHByb3RlY3Rl
ZDoKICAgICBMb2FkYWJsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCi0gICAgICAg
IDogbV9ub25jZShub25jZSkKLSAgICAgICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdp
bk1vZGUpCi0gICAgICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCi0gICAgICAgICwgbV9pbml0aWF0
b3JOYW1lKGluaXRpYXRvck5hbWUpCi0gICAgICAgICwgbV9pc0luVXNlckFnZW50U2hhZG93VHJl
ZShpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAgICAgOiBDYWNoZWRTY3JpcHRGZXRjaGVy
KG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKQogICAgIHsKICAgICB9CiAKICAgICB2b2lkIG5vdGlmeUNsaWVudEZp
bmlzaGVkKCk7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbm9uY2U7Ci0gICAgU3RyaW5nIG1f
Y3Jvc3NPcmlnaW5Nb2RlOwotICAgIFN0cmluZyBtX2NoYXJzZXQ7Ci0gICAgQXRvbWljU3RyaW5n
IG1faW5pdGlhdG9yTmFtZTsKLSAgICBib29sIG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUgeyBm
YWxzZSB9OwotCiAgICAgSGFzaENvdW50ZWRTZXQ8TG9hZGFibGVTY3JpcHRDbGllbnQqPiBtX2Ns
aWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjQzM2Zi
YzI4NWY0NWQwZWEwYTY3YTEwOWVlZGYxN2Y4YjMyODk5Mi4uMTBhNDMzZDhkZWVmZTEzNzMwYjU5
MDIyMjVlNmJjZTRlNDkwN2QxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlci5oIgorI2luY2x1ZGUgIklubGluZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRlICJM
b2FkYWJsZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRlICJMb2FkYWJsZU1vZHVsZVNjcmlwdC5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTI3NSw3ICsyNzYsNyBAQCBib29s
IFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRT
dGFydFBvc2l0aW9uLCBMZWdhYwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRU
eXBlID09IFNjcmlwdFR5cGU6OkNsYXNzaWMpOwogICAgICAgICBUZXh0UG9zaXRpb24gcG9zaXRp
b24gPSBkb2N1bWVudC5pc0luRG9jdW1lbnRXcml0ZSgpID8gVGV4dFBvc2l0aW9uKCkgOiBzY3Jp
cHRTdGFydFBvc2l0aW9uOwotICAgICAgICBleGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3Vy
Y2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQudXJsKCksIHBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkpOworICAgICAgICBleGVjdXRlQ2xhc3Np
Y1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQudXJsKCks
IHBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5l
Q2xhc3NpY1NjcmlwdDo6Y3JlYXRlKCp0aGlzKS5wdHIoKSkpOwogICAgIH0KIAogICAgIHJldHVy
biB0cnVlOwpAQCAtMzQ4LDggKzM0OSwxMCBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RN
b2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9k
dWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgp
LCBtX2VsZW1lbnQubG9jYWxOYW1lKCksIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJl
ZSgpKTsKKwogICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IG1fZWxlbWVudC5kb2N1bWVudCgp
LmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBUZXh0UG9zaXRpb24oKSA6IHNjcmlwdFN0YXJ0UG9zaXRp
b247Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgbV9l
bGVtZW50LmRvY3VtZW50KCkudXJsKCksIHBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6TW9kdWxlKTsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0
Q29udGVudCgpLCBtX2VsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgcG9zaXRpb24sIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdC5wdHIoKSk7CiAKICAgICBBU1NF
UlQobV9lbGVtZW50LmRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGNv
bnN0IGF1dG8mIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9ICptX2VsZW1lbnQuZG9jdW1lbnQoKS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKQEAgLTM1Nyw3ICszNjAsNiBAQCBib29sIFNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFy
dFBvc2l0aW9uKQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU2Ny
aXB0KG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBtX3N0YXJ0TGluZU51bWJlciwgc291cmNl
Q29kZS5zb3VyY2UoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIGhhc0tub3duTm9uY2UpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxl
U2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBt
X2VsZW1lbnQubG9jYWxOYW1lKCksIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgp
KTsKICAgICBzY3JpcHQtPmxvYWQobV9lbGVtZW50LmRvY3VtZW50KCksIHNvdXJjZUNvZGUpOwog
ICAgIG1fbG9hZGFibGVTY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC00MjYsNyArNDI4LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlUGVuZGluZ1Nj
cmlwdChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogICAgIGVsc2UgewogICAgICAgICBB
U1NFUlQoIXBlbmRpbmdTY3JpcHQuZXJyb3IoKSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0Uoc2NyaXB0VHlwZSgpID09IFNjcmlwdFR5cGU6OkNsYXNzaWMsICJNb2R1bGUgc2NyaXB0IGFs
d2F5cyBoYXZlIGEgbG9hZGFibGVTY3JpcHQgcG9pbnRlci4iKTsKLSAgICAgICAgZXhlY3V0ZUNs
YXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRDb250ZW50KCksIG1fZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLCBwZW5kaW5nU2NyaXB0LnN0YXJ0aW5nUG9zaXRpb24oKSwgSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pKTsKKyAgICAgICAgZXhlY3V0ZUNsYXNz
aWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRDb250ZW50KCksIG1fZWxlbWVudC5kb2N1
bWVudCgpLnVybCgpLCBwZW5kaW5nU2NyaXB0LnN0YXJ0aW5nUG9zaXRpb24oKSwgSlNDOjpTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0
ZSgqdGhpcykucHRyKCkpKTsKICAgICAgICAgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmlu
ZGV4IGMxZjQyYzIyNWQwMDc3OWFiNDQ1YzExMjUxZDM3M2E0ODdmMmNkMmUuLjdhNTgwNTZiYTgw
NDBkMzMyYjMyODA4MzQwOGRlNjE3OTA3MjEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNs
dWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUg
IklubGluZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVudGVy
LmgiCkBAIC0yNTgsNyArMjU5LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQo
U2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCwgY29uc3QgVGV4dFBvc2l0aW8KICAgICAgICAg
aWYgKG1fc2NyaXB0TmVzdGluZ0xldmVsID09IDEpCiAgICAgICAgICAgICBtX3BhcnNlckJsb2Nr
aW5nU2NyaXB0ID0gUGVuZGluZ1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQsIHNjcmlwdFN0
YXJ0UG9zaXRpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmV4
ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC5lbGVtZW50
KCkudGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9kb2N1bWVu
dCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhl
Y3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LmVsZW1lbnQo
KS50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50
KSwgc2NyaXB0U3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KS5wdHIoKSkp
OwogICAgIH0gZWxzZQogICAgICAgICByZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KHNjcmlw
dEVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGY0ODEwMDUyNjcxMTYyOTBmYjFmZDUzNmM4
MDg5MTBjYmU1NmE4MzIuLmNmYzAwMjcyNjViMzZhMzQwYjE4NDA0ZWQ4OTgxMzg0YzQ0OTBkYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJIVE1MRW50aXR5UGFy
c2VyLmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBs
YXRlRWxlbWVudC5oIgorI2luY2x1ZGUgIklubGluZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGVuZGluZ1NjcmlwdC5oIgogI2luY2x1ZGUgIlByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oIgpAQCAtODc3LDcgKzg3OCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmVuZEVsZW1lbnROcygpCiAgICAgICAgIC8vIHRoZSBsaWJ4bWwyIGFuZCBRdCBYTUxEb2N1
bWVudFBhcnNlciBpbXBsZW1lbnRhdGlvbnMuCiAKICAgICAgICAgaWYgKHNjcmlwdEVsZW1lbnQu
cmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQoKSkKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhl
Y3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LnNjcmlwdENv
bnRlbnQoKSwgZG9jdW1lbnQoKS0+dXJsKCksIG1fc2NyaXB0U3RhcnRQb3NpdGlvbikpOworICAg
ICAgICAgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdEVsZW1lbnQuc2NyaXB0Q29udGVudCgpLCBkb2N1bWVudCgpLT51cmwoKSwgbV9z
Y3JpcHRTdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQpLnB0cigpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHNjcmlwdEVsZW1lbnQud2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSAmJiBz
Y3JpcHRFbGVtZW50LmxvYWRhYmxlU2NyaXB0KCkpIHsKICAgICAgICAgICAgIG1fcGVuZGluZ1Nj
cmlwdCA9IFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50LCAqc2NyaXB0RWxlbWVu
dC5sb2FkYWJsZVNjcmlwdCgpKTsKICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdC0+c2V0Q2xp
ZW50KCp0aGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298581</attachid>
            <date>2017-01-11 07:13:56 -0800</date>
            <delta_ts>2017-01-12 00:15:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166925-20170112001218.patch</filename>
            <type>text/plain</type>
            <size>51060</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWMyZTliMDVhZjdhMjQ5NTEwMmU3YWVjOWI3NGFlMmNkYTE2MTNhLi5mMGJlMGNmODk5MjI1NjRj
YjRhZTllMjM1NDIyYzdlYzE4MDk4MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOCBAQAogMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgSW5saW5lQ2xhc3NpY1NjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNjcmlwdEZldGNoZXIg
ZmllbGQgZm9yIFNvdXJjZU9yaWdpbi4KKworICAgICAgICAqIHJ1bnRpbWUvU291cmNlT3JpZ2lu
Lmg6CisgICAgICAgIChKU0M6OlNvdXJjZU9yaWdpbjo6U291cmNlT3JpZ2luKToKKyAgICAgICAg
KEpTQzo6U291cmNlT3JpZ2luOjpmZXRjaGVyKToKKworMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9h
ZGluZyBpbml0aWF0b3IgZnJvbSBTY3JpcHRFbGVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIwMTlhOTJh
MGU5OWE4ODFiYWQyMGYxMDczODEwMjMxZjAyYTk3YTUuLmE1ZWMwZTJmYWRhMGFmOGQ4OTZhZTQx
ZTU3MjQxYjA5Yjc4NTVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MSBAQAogMjAxNy0wMS0x
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBJbXBs
ZW1lbnQgSW5saW5lQ2xhc3NpY1NjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQXMgb2YgcjIxMDU4NSwgU2NyaXB0RmV0Y2hlciBmdW5jdGlvbmFs
aXR5IGlzIGRlY291cGxlZCBmcm9tIFNjcmlwdEVsZW1lbnQuCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgZnVydGhlciBjbGVhbiB1cC4gV2UgaW50cm9kdWNlIElubGluZUNsYXNzaWNTY3JpcHQsIHdo
aWNoIGlzCisgICAgICAgIHNpbWlsYXIgdG8gTG9hZGFibGVDbGFzc2ljU2NyaXB0IC8gTG9hZGFi
bGVNb2R1bGVTY3JpcHQuIEFuZCB3ZSBtb3ZlIFNjcmlwdEZldGNoZXIKKyAgICAgICAgZnVuY3Rp
b25hbGl0eSBmcm9tIExvYWRhYmxlU2NyaXB0IHRvIENhY2hlZFNjcmlwdEZldGNoZXIsIHdoaWNo
IGlzIHRoZSBiYXNlCisgICAgICAgIGNsYXNzIG9mIElubGluZUNsYXNzaWNTY3JpcHQgYW5kIExv
YWRhYmxlU2NyaXB0LgorCisgICAgICAgIEFuZCB3ZSBzdGFydCBzZXR0aW5nIHRoaXMgQ2FjaGVk
U2NyaXB0RmV0Y2hlciB0byB0aGUgbWVtYmVyIG9mIEpTQzo6U291cmNlT3JpZ2luLgorICAgICAg
ICBUaGlzIGFsbG93cyB1cyB0byBleGFtaW5lIHRoZSBTY3JpcHRGZXRjaGVyIGZyb20gdGhlIFNv
dXJjZU9yaWdpbi4KKyAgICAgICAgSXQgaXMgaW1wb3J0YW50IGZvciBkeW5hbWljLWltcG9ydC4g
V2hlbiBkeW5hbWljLWltcG9ydCBvcGVyYXRvciBpcyBjYWxsZWQsCisgICAgICAgIHdlIG5lZWQg
dG8gZ2V0IHRoZSBTY3JpcHRGZXRjaGVyIGZvciB0aGUgY2FsbGVyIHNjcmlwdCBTb3VyY2VPcmln
aW4uCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6
OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNo
ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdp
dGhDYWNoZSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Tb3VyY2VPcmlnaW4uaC4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdEZldGNoZXI6OkNhY2hlZFNjcmlwdEZldGNo
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpDYWNoZWRTY3Jp
cHRTb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjptYWtlU291cmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2Rl
KToKKyAgICAgICAgKiBkb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
SW5saW5lQ2xhc3NpY1NjcmlwdC5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTG9hZGFibGVDbGFz
c2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6
ZXhlY3V0ZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxlU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRh
YmxlU2NyaXB0OjpMb2FkYWJsZVNjcmlwdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OnByZXBhcmVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cmVx
dWVzdE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpleGVj
dXRlUGVuZGluZ1NjcmlwdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorCisyMDE3LTAx
LTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIERl
Y291cGxlIG1vZHVsZSBsb2FkaW5nIGluaXRpYXRvciBmcm9tIFNjcmlwdEVsZW1lbnQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg4OAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Tb3VyY2VPcmlnaW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJjZU9yaWdpbi5oCmluZGV4IGY0MmEwZDNl
ZWE4OTQ0ZjJhOWMxMWI4MTk3Nzc5ODViYTZkN2E5YzAuLmEzNzRlOWNjZGZmMGJjOTYwOWM2Nzc1
ODYyZWNhMDg5MmY3MTYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NvdXJjZU9yaWdpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nv
dXJjZU9yaWdpbi5oCkBAIC0yNSwxNCArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTb3VyY2VPcmlnaW4gewogcHVibGljOgotICAgIGV4
cGxpY2l0IFNvdXJjZU9yaWdpbihjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBleHBsaWNpdCBT
b3VyY2VPcmlnaW4oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFNjcmlwdEZldGNoZXIqIGZldGNoZXIg
PSBudWxscHRyKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKKyAgICAgICAgLCBtX2ZldGNo
ZXIoZmV0Y2hlcikKICAgICB7CiAgICAgfQogCkBAIC00MSw4ICs0MywxMSBAQCBjbGFzcyBTb3Vy
Y2VPcmlnaW4gewogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmc7IH0KICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVs
bCgpOyB9CiAKKyAgICBTY3JpcHRGZXRjaGVyKiBmZXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9m
ZXRjaGVyLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIFJl
ZlB0cjxTY3JpcHRGZXRjaGVyPiBtX2ZldGNoZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDgxOTdiMmRiMjk1M2Y2MzVkZGJjOWJiMGEwNTUzMzVh
Y2E5MjU2Zi4uZDQ5NmU5YTJlM2FiNTk4ZTkwNzcwOWNhOTczNjBlZDU0MmU2YTIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
IAogICAgIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKICAgICBiaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCisgICAgYmluZGluZ3MvanMvQ2FjaGVkU2Ny
aXB0RmV0Y2hlci5jcHAKICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcAogICAg
IGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAogICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3Js
ZC5jcHAKQEAgLTE0NDIsNiArMTQ0Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20v
R2VuZXJpY0V2ZW50UXVldWUuY3BwCiAgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCiAgICAg
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKyAgICBkb20vSW5saW5lQ2xhc3NpY1Nj
cmlwdC5jcHAKICAgICBkb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAogICAgIGRvbS9JbnB1
dEV2ZW50LmNwcAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjYmM2NTYzN2Q0NzQ2
MjFmNTZiNWJiNDg1ZmQ0OTBjNTJlMjdhNzAuLjQzM2U4NDVhYjIyNTAwNjE1NDVmODkwMThlYjVm
YTk1NzA4YzFhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYyODgsNiArNjI4OCwxMCBAQAogCQlFMzE1MEVBNjFEQTcyMTkw
MDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01K
SVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBF
QTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQx
REM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyog
SlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzE4QTYyRDFFMjY4MjFCMDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0
Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNG
OTc4RTkxRTI2ODFDRTAwQzgzNzE1IC8qIENhY2hlZFNjcmlwdEZldGNoZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzE4QTYyRTFFMjY4MjFE
MDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Y5NzhFODFFMjY4MUNFMDBDODM3MTUgLyogQ2Fj
aGVkU2NyaXB0RmV0Y2hlci5jcHAgKi87IH07CisJCUUzMThBNjJGMUUyNjgyM0UwMDdBQzk4MyAv
KiBJbmxpbmVDbGFzc2ljU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0Y5NzhFNzFFMjY3RjEyMDBDODM3MTUgLyogSW5saW5lQ2xhc3NpY1Nj
cmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzMThBNjMwMUUyNjgyNDQwMDdBQzk4MyAvKiBJbmxpbmVDbGFzc2ljU2NyaXB0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjk3OEU2MUUyNjdG
MTIwMEM4MzcxNSAvKiBJbmxpbmVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJRTM1NjVCN0Ix
REMyRDZDOTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2
ZW50Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1ODAyQjYxREM4NDM1RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTgwMkI1MURD
ODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1
IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MzEyLDYg
KzE0MzE2LDEwIEBACiAJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9N
SklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRE
T01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0M5OUEwODFEQzNENDE3
MDA3OTRBRDMgLyogRE9NSklUQ2hlY2tET00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NSklUQ2hlY2tET00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNE
MDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0Y5NzhFNjFFMjY3RjEyMDBDODM3MTUgLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVDbGFzc2ljU2Ny
aXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGOTc4RTcxRTI2N0YxMjAw
QzgzNzE1IC8qIElubGluZUNsYXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0Y5NzhFODFFMjY4MUNFMDBDODM3MTUgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTY3JpcHRGZXRjaGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGOTc4RTkxRTI2ODFDRTAwQzgz
NzE1IC8qIENhY2hlZFNjcmlwdEZldGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0ZBMzg2MTFENzE2RTc2MDBBQTU5NTAgLyogUGVuZGluZ1NjcmlwdENsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5kaW5nU2NyaXB0Q2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMjAwOSw2ICsyMjAxNyw4IEBACiAJCQkJRTMwN0RFQzYxRDgxRTQ0ODAwMTQx
Q0FGIC8qIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJRTMwN0RFQzcxRDgx
RTQ0ODAwMTQxQ0FGIC8qIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oICovLAogCQkJCUUzMDdE
RUM4MUQ4MUU0NDgwMDE0MUNBRiAvKiBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaCAq
LywKKwkJCQlFM0Y5NzhFODFFMjY4MUNFMDBDODM3MTUgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAgKi8sCisJCQkJRTNGOTc4RTkxRTI2ODFDRTAwQzgzNzE1IC8qIENhY2hlZFNjcmlwdEZldGNo
ZXIuaCAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaCAqLywKIAkJCQkwRjYwRjMyOTFERkJCMTA0MDA0MTZENkMgLyogQ29tbW9u
Vk0uY3BwICovLAogCQkJCTBGNjBGMzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5oICov
LApAQCAtMjQxNzQsNiArMjQxODQsOCBAQAogCQkJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAv
KiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLywKIAkJCQk4QUI0QkM3NjEyNkZEQjcxMDBE
RUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLywKIAkJ
CQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3Vu
dEluY3JlbWVudGVyLmggKi8sCisJCQkJRTNGOTc4RTYxRTI2N0YxMjAwQzgzNzE1IC8qIElubGlu
ZUNsYXNzaWNTY3JpcHQuY3BwICovLAorCQkJCUUzRjk3OEU3MUUyNjdGMTIwMEM4MzcxNSAvKiBJ
bmxpbmVDbGFzc2ljU2NyaXB0LmggKi8sCiAJCQkJQUE0QzNBNzQwQjJCMTY3OTAwMjMzNEEyIC8q
IElubGluZVN0eWxlU2hlZXRPd25lci5jcHAgKi8sCiAJCQkJQUE0QzNBNzUwQjJCMTY3OTAwMjMz
NEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oICovLAogCQkJCTJFQjc2NzU1MURBMTlCOTkw
MDNFMjNCNSAvKiBJbnB1dEV2ZW50LmNwcCAqLywKQEAgLTI1Mjg2LDYgKzI1Mjk4LDcgQEAKIAkJ
CQlCQzIzRUU5MjBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5M0U2MDAxNTFBOTlGMjAwMDY2RjA2IC8qIENTU0ltYWdlU2V0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0ZBMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4QTYyRjFFMjY4MjNFMDA3QUM5
ODMgLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRjYw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhlcml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0luaXRpYWxWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yODA4OSw2ICsyODEwMiw3IEBACiAJCQkJMkQ3RUQwQUIxQkFFOTkx
NzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
RTkxMkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1NEREMDgxODgxRDVGNTAwM0VFREJCIC8qIFRvdWNoLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzE4QTYyRDFFMjY4MjFCMDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY1NEREMDkxODgxRDVGNTAwM0VFREJCIC8qIFRvdWNoRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTRERDBBMTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaExp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFj
a0Jhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjk4NjksNiArMjk4ODMsNyBAQAogCQkJCTkzOTIy
NjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjAxMUI2MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1ODI1RjMwQzBCODkzODAwNTNGMUI1IC8qIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4QTYz
MDFFMjY4MjQ0MDA3QUM5ODMgLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzQ2QzIwNjBDMEREQ0ExMDAyMENGQzMgLyogSlNDU1NTdHlsZVJ1bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNDNUJFMDAwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVT
aGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3NzczQTE5NUNCMTRBMDA3MkUwRDMgLyog
SlNDU1NTdXBwb3J0c1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAwMyw2ICszMTAxOCw3
IEBACiAJCQkJMUEzRkY5QzMxNTI2NTM1OTAwMjI4OEExIC8qIFJlbmRlck5hbWVkRmxvd1RocmVh
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg3RjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0M0JGNTlDMTE0OTI5MjgwMEM2NDND
QSAvKiBSZW5kZXJQcm9ncmVzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4QTYyRTFFMjY4
MjFEMDA3QUM5ODMgLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QTU3NEYyNDEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDcwQUQ2NTcxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0U5M0Y0NzE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKaW5kZXggMGZlYzRiNTliMWQyZDMxNGQ4MDQyZjcxMTNh
ZmI5OTk0YzU2ODZmZC4uODM3NDgxMjJlNDNjZmYwZWE0YWY0MzkzNjIwOWZhNmFkN2JmZGQ2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQu
Y3BwCkBAIC00MywxNiArNDMsMTYgQEAgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9k
dWxlU2NyaXB0OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVs
ZVNjcmlwdCgpKTsKIH0KIAotdm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNj
cmlwdCkKK3ZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgVVJMJiByb290VVJMLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyKQog
ewogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGZyYW1l
LT5zY3JpcHQoKS5sb2FkTW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpLCBsb2Fk
YWJsZVNjcmlwdCk7CisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxlU2NyaXB0KCp0
aGlzLCByb290VVJMLnN0cmluZygpLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAotdm9pZCBDYWNoZWRN
b2R1bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCit2b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIp
CiB7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHNvdXJjZUNvZGUsIGxvYWRhYmxl
U2NyaXB0KTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMs
IHNvdXJjZUNvZGUsIHNjcmlwdEZldGNoZXIpOwogfQogCiB2b2lkIENhY2hlZE1vZHVsZVNjcmlw
dDo6bm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3RyaW5nSW1wbCYgbW9kdWxlS2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAppbmRleCA1
NjJkOTNkMDYzYjFmNGVjNGVjZWU3YmE2OTdiOTJiNTYyOTUzMTFhLi5hYjhmOTBhMzljNjFiNmM2
NTczODJlYmM4YzBjNDIxMWQyZjk5ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaApAQCAtNTIsOCArNTIsOCBAQCBjbGFzcyBDYWNoZWRN
b2R1bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKIAog
ICAgIHN0YXRpYyBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiBjcmVhdGUoKTsKIAotICAgIHZvaWQg
bG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9vdFVSTCwgTG9hZGFibGVTY3JpcHQmKTsKLSAg
ICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9hZGFibGVT
Y3JpcHQmKTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHJvb3RVUkwsIENh
Y2hlZFNjcmlwdEZldGNoZXImKTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgbm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDYwYmRkNDg1Y2Fi
MzU4YzlhYzVlNzk3OTFmNWFiZDgyOTRlNDAxOGQuLjQ0ZTlmZTdlODJmNzVmMTMyZjY4MTU1MTNi
YzQ4NWE0YzZhODcxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5j
bHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgiCiAKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHQuaCIKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiRE9NV3Jh
cHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJMb2FkYWJsZVNjcmlwdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRNb2R1bGVMb2FkZXIuaCIKQEAgLTM4LDE0ICszOCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IENhY2hlZE1vZHVsZVNjcmlwdExv
YWRlcjo6Y3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBEZWZl
cnJlZFByb21pc2UmIHByb21pc2UpCitSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyPiBDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGll
bnQmIGNsaWVudCwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVy
JiBzY3JpcHRGZXRjaGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlcihjbGllbnQsIHByb21pc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoY2xpZW50LCBwcm9taXNlLCBzY3JpcHRGZXRjaGVy
KSk7CiB9CiAKLUNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBEZWZlcnJlZFByb21p
c2UmIHByb21pc2UpCitDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgRGVmZXJyZWRQ
cm9taXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyKQogICAg
IDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcHJvbWlzZSgmcHJvbWlzZSkKKyAgICAsIG1f
c2NyaXB0RmV0Y2hlcihzY3JpcHRGZXRjaGVyKQogewogfQogCkBAIC01NywxMCArNTgsMTAgQEAg
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjp+Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKCkKICAg
ICB9CiB9CiAKLWJvb2wgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpsb2FkKERvY3VtZW50JiBk
b2N1bWVudCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0LCBjb25zdCBVUkwmIHNvdXJj
ZVVSTCkKK2Jvb2wgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpsb2FkKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlw
dCk7Ci0gICAgbV9jYWNoZWRTY3JpcHQgPSBsb2FkYWJsZVNjcmlwdC5yZXF1ZXN0U2NyaXB0V2l0
aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwpOworICAgIG1fY2FjaGVkU2NyaXB0ID0gbV9zY3Jp
cHRGZXRjaGVyLT5yZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwpOwog
ICAgIGlmICghbV9jYWNoZWRTY3JpcHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIu
aAppbmRleCAzMmZkZTNiZmE3MjRkNTI1NzlkMjE0ZTU3ZTQ2ZDYzYTU1NzM0NjMxLi4wNDkyM2Y0
ZGMyMzM3YWI2MjBhYTBmNTBkZGM4NTc5OWQxZWIxZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaApAQCAtMzUsMjAg
KzM1LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyQ2xpZW50OwogY2xhc3MgQ2FjaGVkU2NyaXB0OworY2xhc3MgQ2FjaGVkU2NyaXB0RmV0
Y2hlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSlNE
T01HbG9iYWxPYmplY3Q7Ci1jbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFVSTDsKIAogY2xh
c3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmKTsKKyAgICBz
dGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gY3JlYXRlKENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJvbWlzZSYsIENhY2hlZFNjcmlwdEZldGNoZXIm
KTsKIAogICAgIHZpcnR1YWwgfkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcigpOwogCi0gICAgYm9v
bCBsb2FkKERvY3VtZW50JiwgTG9hZGFibGVTY3JpcHQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCk7
CisgICAgYm9vbCBsb2FkKERvY3VtZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwpOwogCisgICAg
Q2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcigpIHsgcmV0dXJuIG1fc2NyaXB0RmV0
Y2hlci5nZXQoKTsgfQogICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgeyByZXR1cm4g
bV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KIAogICAgIHZvaWQgY2xlYXJDbGllbnQoKQpAQCAtNTgs
MTIgKzU5LDEzIEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlCiAgICAgfQogCiBwcml2YXRlOgot
ICAgIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGll
bnQmLCBEZWZlcnJlZFByb21pc2UmKTsKKyAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2Ny
aXB0RmV0Y2hlciYpOwogCiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IGZpbmFsOwogCiAgICAgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50KiBtX2NsaWVudCB7
IG51bGxwdHIgfTsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2U7CisgICAg
UmVmPENhY2hlZFNjcmlwdEZldGNoZXI+IG1fc2NyaXB0RmV0Y2hlcjsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjhlM2NiYzYzNTE5OTlkODI5OTI3OTRlNzQ0ZjFkNDg0ZWQ0ZWUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWNoZWRTY3Jp
cHRGZXRjaGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1
ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNj
cmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3QKK3sKKyAgICBhdXRvKiBzZXR0aW5ncyA9IGRvY3Vt
ZW50LnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+aXNTY3JpcHRF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKGRvY3VtZW50
LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBib29sIGhhc0tub3duTm9uY2UgPSBkb2N1
bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRXaXRoTm9uY2UobV9ub25j
ZSwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSk7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0
aW9ucygpOworICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGhh
c0tub3duTm9uY2UgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5
Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwor
CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHNvdXJj
ZVVSTCksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2lu
KG1fY3Jvc3NPcmlnaW5Nb2RlLCBkb2N1bWVudCk7CisgICAgcmVxdWVzdC51cGdyYWRlSW5zZWN1
cmVSZXF1ZXN0SWZOZWVkZWQoZG9jdW1lbnQpOworCisgICAgcmVxdWVzdC5zZXRDaGFyc2V0KG1f
Y2hhcnNldCk7CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKKwor
ICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQo
V1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2VmNzE4NWMzZTE2ZjMxYWNi
MjAzNzZkNDg0MmIwMzdhMzgxYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCisjaW5jbHVkZSA8cnVudGltZS9TY3JpcHRGZXRjaGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVk
U2NyaXB0OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBVUkw7CisKK2NsYXNzIENhY2hlZFNjcmlw
dEZldGNoZXIgOiBwdWJsaWMgSlNDOjpTY3JpcHRGZXRjaGVyIHsKK3B1YmxpYzoKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9j
dW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBD
YWNoZWRTY3JpcHRGZXRjaGVyKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAgICAgOiBt
X25vbmNlKG5vbmNlKQorICAgICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9k
ZSkKKyAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKKyAgICAgICAgLCBtX2luaXRpYXRvck5h
bWUoaW5pdGlhdG9yTmFtZSkKKyAgICAgICAgLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG5vdGlmeUNs
aWVudEZpbmlzaGVkKCk7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbm9uY2U7CisgICAgU3Ry
aW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOworICAgIFN0cmluZyBtX2NoYXJzZXQ7CisgICAgQXRvbWlj
U3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKKyAgICBib29sIG1faXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgK
aW5kZXggZDM4Y2FmYjYzOTkyMDA1Y2NmZGEzMDU0MjY5YTIxMDhhODFiZjk4Ny4uNjU5ZDBjNWNm
YzAyYjZjZjEzN2FlNTBjNTUzMzU5NzE5MWE4YWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1
ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5o
PgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgogCkBAIC0zNiw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyIDog
cHVibGljIEpTQzo6U291cmNlUHJvdmlkZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxD
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcj4gY3JlYXRlKENhY2hlZFNjcmlwdCogY2FjaGVkU2Ny
aXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNhY2hlZFNjcmlwdCwgc291
cmNlVHlwZSkpOyB9CisgICAgc3RhdGljIFJlZjxDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcj4g
Y3JlYXRlKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZSBzb3VyY2VUeXBlLCBDYWNoZWRTY3JpcHRGZXRjaGVyKiBzY3JpcHRGZXRjaGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNhY2hlZFNj
cmlwdCwgc291cmNlVHlwZSwgc2NyaXB0RmV0Y2hlcikpOyB9CiAKICAgICB2aXJ0dWFsIH5DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlcigpCiAgICAgewpAQCAtNDcsOCArNDgsOCBAQCBjbGFzcyBD
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3ZpZGVyLCBw
dWJsaWMgQ2FjaGVkUmVzbwogICAgIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNjcmlwdCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCi0gICAgICAgIDogU291cmNlUHJv
dmlkZXIoSlNDOjpTb3VyY2VPcmlnaW4geyBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCkg
fSwgY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgpLCBUZXh0UG9zaXRpb24oKSwgc291cmNl
VHlwZSkKKyAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRTY3JpcHQqIGNhY2hl
ZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwgQ2FjaGVk
U2NyaXB0RmV0Y2hlciogc2NyaXB0RmV0Y2hlcikKKyAgICAgICAgOiBTb3VyY2VQcm92aWRlcihK
U0M6OlNvdXJjZU9yaWdpbiB7IGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSwgc2NyaXB0
RmV0Y2hlciB9LCBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCksIFRleHRQb3NpdGlvbigp
LCBzb3VyY2VUeXBlKQogICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKICAg
ICB7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtNTcsOSAr
NTgsNCBAQCBjbGFzcyBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNv
dXJjZVByb3ZpZGVyLCBwdWJsaWMgQ2FjaGVkUmVzbwogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiB9OwogCi1pbmxpbmUgSlNDOjpTb3VyY2VD
b2RlIG1ha2VTb3VyY2UoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCi17Ci0gICAgcmV0dXJu
IEpTQzo6U291cmNlQ29kZShDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hl
ZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzMjM3NjM1NzEwZTYyZjY2NWQxNzliMzc4NDZmMWVi
ZDk5YzA4ZmI2Li4wZWZmNDBkYTE3NGYzNzlmZTU4ZGJhMjkyZWEzYjc1MWUxODRmYTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
MjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQnJpZGdlSlNDLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
TW9kdWxlU2NyaXB0LmgiCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE4NiwzNiArMTg3LDM2IEBAIEpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSwgRXhjZXB0aW9uCiAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWlscyk7CiB9CiAKLXZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBt
b2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmIGxv
YWRhYmxlU2NyaXB0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBTY3JpcHRDb250cm9s
bGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNj
cmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3Jp
cHRGZXRjaGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHdvcmxkLnZtKCkpOwogCiAgICAgYXV0byYgc2hlbGwgPSAqd2luZG93U2hlbGwod29ybGQp
OwogICAgIGF1dG8mIHN0YXRlID0gKnNoZWxsLndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKLSAg
ICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRl
LCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsg
JmxvYWRhYmxlU2NyaXB0IH0pKTsKKyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hl
cjo6Y3JlYXRlKHN0YXRlLnZtKCksIHsgJnNjcmlwdEZldGNoZXIgfSkpOwogICAgIHNldHVwTW9k
dWxlU2NyaXB0SGFuZGxlcnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQm
IG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYg
bG9hZGFibGVTY3JpcHQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFt
ZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcikKIHsKLSAgICBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVsZU5hbWUsIGxvYWRhYmxlU2NyaXB0LCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQobW9k
dWxlU2NyaXB0LCBtb2R1bGVOYW1lLCBzY3JpcHRGZXRjaGVyLCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29y
bGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCwgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdElu
V29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUudm0oKSwg
eyAmbG9hZGFibGVTY3JpcHQgfSkpOworICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIEpT
Qzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUudm0oKSwgeyAmc2NyaXB0RmV0Y2hlciB9
KSk7CiAgICAgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhtb2R1bGVTY3JpcHQsIHByb21pc2Us
IHdvcmxkKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0KENh
Y2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCit2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3Jp
cHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENhY2hlZFNjcmlwdEZldGNo
ZXImIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxl
U2NyaXB0LCBzb3VyY2VDb2RlLCBsb2FkYWJsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgc291cmNlQ29k
ZSwgc2NyaXB0RmV0Y2hlciwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCA5ZTIwYzJjZTk2YmZjYzA5N2ZmNWJhZTE5MTNlZWNmZjI1YjcwOTA1Li4yZTg3NjhjYzMxMTEz
ZDFiNDEwMzA0NGVmYzUyOWY5OGM5NmMzYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC01MiwxMCArNTIsMTAgQEAgY2xhc3MgUm9vdE9i
amVjdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0Owor
Y2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3Vt
ZW50OwogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7Ci1jbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFdpZGdl
dDsKQEAgLTExNCwxMCArMTE0LDEwIEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIEpT
Qzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0
YWlscyogPSBudWxscHRyKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwogCi0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1
bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiwgRE9N
V3JhcHBlcldvcmxkJik7Ci0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNj
cmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmKTsKLSAgICB2
b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYsIERPTVdyYXBwZXJXb3JsZCYpOwotICAg
IHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgTG9hZGFibGVTY3JpcHQmKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgQ2Fj
aGVkU2NyaXB0RmV0Y2hlciYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQgbG9hZE1vZHVs
ZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIENh
Y2hlZFNjcmlwdEZldGNoZXImKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENh
Y2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENh
Y2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyJik7CiAKICAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgSlND
OjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwCmluZGV4IDhkZDI0YzM5YzFiODAxNGZjZGQ4OWI0ZjYyZjFkNzZkNDI5OThiOTcuLjYyYTg5
NjdhMjMxMzY2YjY0ODNmNDhiNDhmZWEwODY2ZjY4YWIwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTU5LDkgKzE1OSw5
IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gbV9kb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gbG9hZGVyID0gQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVycmVkLmdldCgpKTsKKyAgICAgICAg
YXV0byBsb2FkZXIgPSBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSgqdGhpcywgZGVm
ZXJyZWQuZ2V0KCksICpzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHRGZXRjaGVyKj4oSlNDOjpqc0Nh
c3Q8SlNDOjpKU1NjcmlwdEZldGNoZXIqPihzY3JpcHRGZXRjaGVyKS0+ZmV0Y2hlcigpKSk7CiAg
ICAgICAgIG1fbG9hZGVycy5hZGQobG9hZGVyLmNvcHlSZWYoKSk7Ci0gICAgICAgIGlmICghbG9h
ZGVyLT5sb2FkKG1fZG9jdW1lbnQsICpzdGF0aWNfY2FzdDxMb2FkYWJsZVNjcmlwdCo+KEpTQzo6
anNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIoKSks
IGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1bWVudCwg
Y29tcGxldGVkVVJMKSkgewogICAgICAgICAgICAgbG9hZGVyLT5jbGVhckNsaWVudCgpOwogICAg
ICAgICAgICAgbV9sb2FkZXJzLnJlbW92ZShXVEZNb3ZlKGxvYWRlcikpOwogICAgICAgICAgICAg
ZGVmZXJyZWQtPnJlamVjdChmcmFtZS0+c2NyaXB0KCkubW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9y
dGVkRXJyb3JTeW1ib2woKSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBTY3JpcHRNb2R1bGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciYgbG9hZGVyLCBS
ZWZQdHIKICAgICB9CiAKICAgICBtX3JlcXVlc3RVUkxUb1Jlc3BvbnNlVVJMTWFwLmFkZChjYWNo
ZWRTY3JpcHQudXJsKCksIGNhY2hlZFNjcmlwdC5yZXNwb25zZSgpLnVybCgpKTsKLSAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNjcmlwdFNvdXJjZUNvZGUoJmNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQ
cm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzY3JpcHRT
b3VyY2VDb2RlKCZjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpN
b2R1bGUsIGxvYWRlci5zY3JpcHRGZXRjaGVyKCkpOwogICAgIHByb21pc2UtPnJlc29sdmVXaXRo
Q2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmLCBK
U0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSkgewogICAgICAgICByZXR1cm4gSlNDOjpKU1NvdXJj
ZUNvZGU6OmNyZWF0ZShzdGF0ZS52bSgpLCBXVEZNb3ZlKHNvdXJjZUNvZGUpKTsKICAgICB9LCBz
Y3JpcHRTb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCAzMjhhZGQ4NDY4MTM0ZmU2OWFlMjgzZTFi
MDE2ZWM4OTk4OTA2NzE3Li5jZTM2ZmZjYjQ4ODhkZDhmOGUyYjlkOTk5ZjVjZmYwZTFkMGQ0ODE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBA
IC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgpAQCAtNDIsMTUgKzQzLDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0U291cmNlQ29kZSB7CiBwdWJsaWM6
Ci0gICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1
cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0
aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKLSAgICAgICAgOiBtX3Byb3ZpZGVyKEpT
Qzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2lu
IHsgdXJsLnN0cmluZygpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSkpCisgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJM
JiB1cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBv
c2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciog
c2NyaXB0RmV0Y2hlciA9IG51bGxwdHIpCisgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmlu
Z1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybC5z
dHJpbmcoKSwgc2NyaXB0RmV0Y2hlciB9LCB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNv
dXJjZVR5cGUpKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1f
bGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
CiAgICAgICAgICwgbV91cmwodXJsKQogICAgIHsKICAgICB9CiAKLSAgICBleHBsaWNpdCBTY3Jp
cHRTb3VyY2VDb2RlKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKQotICAgICAgICA6IG1fcHJvdmlkZXIoQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXI6OmNyZWF0ZShjYWNoZWRTY3JpcHQsIHNvdXJjZVR5cGUpKQorICAg
IGV4cGxpY2l0IFNjcmlwdFNvdXJjZUNvZGUoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIENhY2hlZFNjcmlwdEZldGNo
ZXImIHNjcmlwdEZldGNoZXIpCisgICAgICAgIDogbV9wcm92aWRlcihDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hlZFNjcmlwdCwgc291cmNlVHlwZSwgJnNjcmlwdEZldGNo
ZXIpKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyKQogICAgICAgICAsIG1fY2FjaGVkU2Ny
aXB0KGNhY2hlZFNjcmlwdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lQ2xhc3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3Np
Y1NjcmlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZlNmQyNzUxYTk3N2M2ZmJiZmE4MDRmNmJhZjRkMmRi
MGQ3NTdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFz
c2ljU2NyaXB0LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IklubGluZUNsYXNzaWNTY3JpcHQuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPElubGluZUNs
YXNzaWNTY3JpcHQ+IElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShTY3JpcHRFbGVtZW50JiBz
Y3JpcHRFbGVtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElubGluZUNsYXNzaWNT
Y3JpcHQoCisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpub25jZUF0dHIpLAorICAgICAgICBzY3JpcHRFbGVt
ZW50LmVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
Y3Jvc3NvcmlnaW5BdHRyKSwKKyAgICAgICAgc2NyaXB0RWxlbWVudC5zY3JpcHRDaGFyc2V0KCks
CisgICAgICAgIHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmxvY2FsTmFtZSgpLAorICAgICAgICBz
Y3JpcHRFbGVtZW50LmVsZW1lbnQoKS5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFzc2ljU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBl
MjY1MzUzNDg0YjI2MDJjOWQ4MzVjZmEzZjNiNTI0MmI3ZjY1NzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3NpY1NjcmlwdC5oCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFbGVtZW50OworCitjbGFzcyBJbmxpbmVDbGFz
c2ljU2NyaXB0IGZpbmFsIDogcHVibGljIENhY2hlZFNjcmlwdEZldGNoZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8SW5saW5lQ2xhc3NpY1NjcmlwdD4gY3JlYXRlKFNjcmlwdEVsZW1lbnQm
KTsKKworcHJpdmF0ZToKKyAgICBJbmxpbmVDbGFzc2ljU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9u
Y2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hh
ZG93VHJlZSkKKyAgICAgICAgOiBDYWNoZWRTY3JpcHRGZXRjaGVyKG5vbmNlLCBjcm9zc09yaWdp
bk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQor
ICAgIHsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQuY3BwCmluZGV4IDk4Y2IwNmRmYjc4YzUzZjhiZDU2NGZiMjc0MWEwMDMxYTQ4NDFl
MzguLjYxMTlhYjEyNmM1YzcyNGE5YmNmYTQ5NjJmZGViMzM2ZTVlZWU1NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKIHZvaWQgTG9hZGFibGVDbGFzc2ljU2NyaXB0OjpleGVjdXRlKFNjcmlw
dEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFlcnJvcigpKTsKLSAgICBz
Y3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUobV9jYWNo
ZWRTY3JpcHQuZ2V0KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKSk7
CisgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2Rl
KG1fY2FjaGVkU2NyaXB0LmdldCgpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJv
Z3JhbSwgKnRoaXMpKTsKIH0KIAogYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVTY3JpcHQuY3BwCmluZGV4IGEzZjBkMTQyYWFjYmQ3NDEwYWNjNWQzNjZiYWE5NTkyOGRk
NzUzZWUuLjFiZGRlMWViNWQ2YTA3ZjExNzM4OWI5OWM3NWVjYjAxYjYwZjg4MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcApAQCAtNjAsMjUgKzYwLDQgQEAgdm9pZCBMb2Fk
YWJsZVNjcmlwdDo6bm90aWZ5Q2xpZW50RmluaXNoZWQoKQogICAgICAgICBjbGllbnQtPm5vdGlm
eUZpbmlzaGVkKCp0aGlzKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBMb2FkYWJsZVNjcmlwdDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdAotewotICAgIGF1dG8qIHNldHRpbmdzID0g
ZG9jdW1lbnQuc2V0dGluZ3MoKTsKLSAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc1Nj
cmlwdEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoZG9j
dW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwotICAgIGJvb2wgaGFzS25vd25Ob25jZSA9
IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZSht
X25vbmNlLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKLSAgICBSZXNvdXJjZUxvYWRlck9w
dGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCk7Ci0gICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9u
ID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQ
b2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2s7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qo
c291cmNlVVJMKSwgb3B0aW9ucyk7Ci0gICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NP
cmlnaW4obV9jcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICByZXF1ZXN0LnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7Ci0KLSAgICByZXF1ZXN0LnNldENoYXJz
ZXQobV9jaGFyc2V0KTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcihtX2luaXRpYXRvck5hbWUp
OwotCi0gICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNj
cmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0xvYWRhYmxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3Jp
cHQuaAppbmRleCA3MjcwNGRhNzI3NzI5YzJlZTExYTQ3N2Y5ZDJmZmExZDA2YmU2ODk5Li5jYTg0
ZTgxMWViOWFhYzg4OWE4YjU3MTljZGMwZDc1YTYxNDAxNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVTY3JpcHQuaApAQCAtMjUsMjIgKzI1LDE4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHRGZXRj
aGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xlVHlwZXMuaD4KLSNpbmNsdWRlIDxydW50
aW1lL0pTU2NyaXB0RmV0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVkU2NyaXB0OwotY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVNjcmlwdENsaWVudDsKIGNsYXNzIFNjcmlwdEVsZW1l
bnQ7Ci1jbGFzcyBVUkw7CiAKLWNsYXNzIExvYWRhYmxlU2NyaXB0IDogcHVibGljIEpTQzo6U2Ny
aXB0RmV0Y2hlciB7CitjbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBDYWNoZWRTY3JpcHRG
ZXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yVHlwZSB7CiAgICAgICAgIENh
Y2hlZFNjcmlwdCwKQEAgLTczLDI3ICs2OSwxNSBAQCBjbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1
YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewogICAgIHZpcnR1YWwgYm9vbCBpc0NsYXNzaWNTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vZHVsZVNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICBMb2FkYWJsZVNjcmlwdChj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wg
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCi0gICAgICAgIDogbV9ub25jZShub25jZSkKLSAgICAg
ICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1vZGUpCi0gICAgICAgICwgbV9jaGFy
c2V0KGNoYXJzZXQpCi0gICAgICAgICwgbV9pbml0aWF0b3JOYW1lKGluaXRpYXRvck5hbWUpCi0g
ICAgICAgICwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZShpc0luVXNlckFnZW50U2hhZG93VHJl
ZSkKKyAgICAgICAgOiBDYWNoZWRTY3JpcHRGZXRjaGVyKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUs
IGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogICAgIHsK
ICAgICB9CiAKICAgICB2b2lkIG5vdGlmeUNsaWVudEZpbmlzaGVkKCk7CiAKIHByaXZhdGU6Ci0g
ICAgU3RyaW5nIG1fbm9uY2U7Ci0gICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOwotICAgIFN0
cmluZyBtX2NoYXJzZXQ7Ci0gICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKLSAgICBi
b29sIG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUgeyBmYWxzZSB9OwotCiAgICAgSGFzaENvdW50
ZWRTZXQ8TG9hZGFibGVTY3JpcHRDbGllbnQqPiBtX2NsaWVudHM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjQzM2ZiYzI4NWY0NWQwZWEwYTY3YTEwOWVlZGYx
N2Y4YjMyODk5Mi4uMTBhNDMzZDhkZWVmZTEzNzMwYjU5MDIyMjVlNmJjZTRlNDkwN2QxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRl
ICJJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIklu
bGluZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRlICJMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCIK
ICNpbmNsdWRlICJMb2FkYWJsZU1vZHVsZVNjcmlwdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKQEAgLTI3NSw3ICsyNzYsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVT
Y3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBMZWdhYwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRUeXBlID09IFNjcmlwdFR5cGU6OkNsYXNz
aWMpOwogICAgICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBkb2N1bWVudC5pc0luRG9jdW1l
bnRXcml0ZSgpID8gVGV4dFBvc2l0aW9uKCkgOiBzY3JpcHRTdGFydFBvc2l0aW9uOwotICAgICAg
ICBleGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwg
ZG9jdW1lbnQudXJsKCksIHBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6
UHJvZ3JhbSkpOworICAgICAgICBleGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQudXJsKCksIHBvc2l0aW9uLCBKU0M6OlNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKCp0
aGlzKS5wdHIoKSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzQ4LDggKzM0OSwx
MCBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4dFBv
c2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKKyAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2Us
IGNyb3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQubG9jYWxOYW1lKCks
IG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKwogICAgIFRleHRQb3NpdGlv
biBwb3NpdGlvbiA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBU
ZXh0UG9zaXRpb24oKSA6IHNjcmlwdFN0YXJ0UG9zaXRpb247Ci0gICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdENvbnRlbnQoKSwgbV9lbGVtZW50LmRvY3VtZW50KCkudXJsKCks
IHBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKTsKKyAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0Q29udGVudCgpLCBtX2VsZW1lbnQuZG9j
dW1lbnQoKS51cmwoKSwgcG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpN
b2R1bGUsIHNjcmlwdC5wdHIoKSk7CiAKICAgICBBU1NFUlQobV9lbGVtZW50LmRvY3VtZW50KCku
Y29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGNvbnN0IGF1dG8mIGNvbnRlbnRTZWN1cml0
eVBvbGljeSA9ICptX2VsZW1lbnQuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsK
QEAgLTM1Nyw3ICszNjAsNiBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3Jp
cHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU2NyaXB0KG1fZWxlbWVudC5kb2N1bWVudCgp
LnVybCgpLCBtX3N0YXJ0TGluZU51bWJlciwgc291cmNlQ29kZS5zb3VyY2UoKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCksIGhhc0tub3duTm9uY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNy
b3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQubG9jYWxOYW1lKCksIG1f
ZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKICAgICBzY3JpcHQtPmxvYWQobV9l
bGVtZW50LmRvY3VtZW50KCksIHNvdXJjZUNvZGUpOwogICAgIG1fbG9hZGFibGVTY3JpcHQgPSBX
VEZNb3ZlKHNjcmlwdCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MjYsNyArNDI4LDcgQEAgdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlUGVuZGluZ1NjcmlwdChQZW5kaW5nU2NyaXB0JiBwZW5k
aW5nU2NyaXB0KQogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQuZXJy
b3IoKSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc2NyaXB0VHlwZSgpID09IFNjcmlw
dFR5cGU6OkNsYXNzaWMsICJNb2R1bGUgc2NyaXB0IGFsd2F5cyBoYXZlIGEgbG9hZGFibGVTY3Jp
cHQgcG9pbnRlci4iKTsKLSAgICAgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRDb250ZW50KCksIG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBwZW5kaW5n
U2NyaXB0LnN0YXJ0aW5nUG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6
OlByb2dyYW0pKTsKKyAgICAgICAgZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRDb250ZW50KCksIG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBwZW5kaW5nU2Ny
aXB0LnN0YXJ0aW5nUG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0sIElubGluZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSgqdGhpcykucHRyKCkpKTsKICAgICAg
ICAgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IGMxZjQyYzIyNWQwMDc3OWFiNDQ1
YzExMjUxZDM3M2E0ODdmMmNkMmUuLjdhNTgwNTZiYTgwNDBkMzMyYjMyODA4MzQwOGRlNjE3OTA3
MjEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIklubGluZUNsYXNzaWNTY3JpcHQuaCIK
ICNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgog
I2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCkBAIC0yNTgsNyArMjU5LDcgQEAg
dm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxl
bWVudCwgY29uc3QgVGV4dFBvc2l0aW8KICAgICAgICAgaWYgKG1fc2NyaXB0TmVzdGluZ0xldmVs
ID09IDEpCiAgICAgICAgICAgICBtX3BhcnNlckJsb2NraW5nU2NyaXB0ID0gUGVuZGluZ1Njcmlw
dDo6Y3JlYXRlKHNjcmlwdEVsZW1lbnQsIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC5lbGVtZW50KCkudGV4dENvbnRlbnQoKSwgZG9jdW1l
bnRVUkxGb3JTY3JpcHRFeGVjdXRpb24obV9kb2N1bWVudCksIHNjcmlwdFN0YXJ0UG9zaXRpb24p
KTsKKyAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0
U291cmNlQ29kZShzY3JpcHRFbGVtZW50LmVsZW1lbnQoKS50ZXh0Q29udGVudCgpLCBkb2N1bWVu
dFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc2NyaXB0U3RhcnRQb3NpdGlvbiwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0sIElubGluZUNsYXNzaWNTY3Jp
cHQ6OmNyZWF0ZShzY3JpcHRFbGVtZW50KS5wdHIoKSkpOwogICAgIH0gZWxzZQogICAgICAgICBy
ZXF1ZXN0UGFyc2luZ0Jsb2NraW5nU2NyaXB0KHNjcmlwdEVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CmluZGV4IGY0ODEwMDUyNjcxMTYyOTBmYjFmZDUzNmM4MDg5MTBjYmU1NmE4MzIuLmNmYzAwMjcy
NjViMzZhMzQwYjE4NDA0ZWQ4OTgxMzg0YzQ0OTBkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJIVE1MRW50aXR5UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTEh0
bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgorI2luY2x1ZGUg
IklubGluZUNsYXNzaWNTY3JpcHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGVu
ZGluZ1NjcmlwdC5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgpAQCAtODc3
LDcgKzg3OCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygpCiAgICAg
ICAgIC8vIHRoZSBsaWJ4bWwyIGFuZCBRdCBYTUxEb2N1bWVudFBhcnNlciBpbXBsZW1lbnRhdGlv
bnMuCiAKICAgICAgICAgaWYgKHNjcmlwdEVsZW1lbnQucmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQo
KSkKLSAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0
U291cmNlQ29kZShzY3JpcHRFbGVtZW50LnNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQoKS0+dXJs
KCksIG1fc2NyaXB0U3RhcnRQb3NpdGlvbikpOworICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5l
eGVjdXRlQ2xhc3NpY1NjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQuc2NyaXB0
Q29udGVudCgpLCBkb2N1bWVudCgpLT51cmwoKSwgbV9zY3JpcHRTdGFydFBvc2l0aW9uLCBKU0M6
OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSwgSW5saW5lQ2xhc3NpY1NjcmlwdDo6
Y3JlYXRlKHNjcmlwdEVsZW1lbnQpLnB0cigpKSk7CiAgICAgICAgIGVsc2UgaWYgKHNjcmlwdEVs
ZW1lbnQud2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSAmJiBzY3JpcHRFbGVtZW50LmxvYWRhYmxlU2Ny
aXB0KCkpIHsKICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdCA9IFBlbmRpbmdTY3JpcHQ6OmNy
ZWF0ZShzY3JpcHRFbGVtZW50LCAqc2NyaXB0RWxlbWVudC5sb2FkYWJsZVNjcmlwdCgpKTsKICAg
ICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdC0+c2V0Q2xpZW50KCp0aGlzKTsK
</data>
<flag name="review"
          id="320705"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>