<?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>181155</bug_id>
          
          <creation_ts>2017-12-25 22:38:48 -0800</creation_ts>
          <short_desc>Add a ProcessIdentifier, vended from the UI process, to each child process</short_desc>
          <delta_ts>2019-01-28 17:54:55 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193944</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181172</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384696</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-25 22:38:48 -0800</bug_when>
    <thetext>Add a ProcessIdentifier, vended from the UI process, to each child process

This will make it painless to guarantee globally unique object identifiers no matter which process generates an object identifier as long as the process identifier is included in the mix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384780</commentid>
    <comment_count>1</comment_count>
      <attachid>330209</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-26 21:46:23 -0800</bug_when>
    <thetext>Created attachment 330209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384887</commentid>
    <comment_count>2</comment_count>
      <attachid>330209</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-12-28 13:39:58 -0800</bug_when>
    <thetext>Comment on attachment 330209
Patch

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

Looks good! I had a few idle thoughts, but nothing you need to address before landing. r=me.

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=181155

Yes, please.

&gt; Source/WebCore/platform/Process.cpp:46
&gt; +    static bool hasInitialized;

Don&apos;t we usually prefer a dispatch_once for this kind of initialization? Maybe we don&apos;t for cross-platform code.

    static dispatch_once_t onceToken;
    dispatch_once(&amp;onceToken, ^ {
        globalIdentifier = generateObjectIdentifier&lt;ProcessIdentifierType&gt;();
    });

&gt; Source/WebKit/Shared/ChildProcess.cpp:73
&gt; +#endif

I think &apos;processIdentifier&apos; is guaranteed to exist (on all platforms), since you default initialize it in the ChildProcessProxy, and always add it to the init parameters in getLaunchOptions.

&gt; Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:90
&gt; +    if (processIdentifierString.isEmpty())

Should this assert? It would be super weird if this ever failed, wouldn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384912</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-28 19:50:07 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #2)
&gt; Comment on attachment 330209 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=330209&amp;action=review
&gt; 
&gt; Looks good! I had a few idle thoughts, but nothing you need to address
&gt; before landing. r=me.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:4
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=181155
&gt; 
&gt; Yes, please.
&gt; 
&gt; &gt; Source/WebCore/platform/Process.cpp:46
&gt; &gt; +    static bool hasInitialized;
&gt; 
&gt; Don&apos;t we usually prefer a dispatch_once for this kind of initialization?
&gt; Maybe we don&apos;t for cross-platform code.

Right, cross platform. That said I totally remembered std::once_flag and std::call_once since I uploaded this - Will use that instead.

&gt; 
&gt;     static dispatch_once_t onceToken;
&gt;     dispatch_once(&amp;onceToken, ^ {
&gt;         globalIdentifier = generateObjectIdentifier&lt;ProcessIdentifierType&gt;();
&gt;     });
&gt; 
&gt; &gt; Source/WebKit/Shared/ChildProcess.cpp:73
&gt; &gt; +#endif
&gt; 
&gt; I think &apos;processIdentifier&apos; is guaranteed to exist (on all platforms), since
&gt; you default initialize it in the ChildProcessProxy, and always add it to the
&gt; init parameters in getLaunchOptions.

It&apos;s always added to LaunchOptions in ChildProcessProxy in the UI process, that is true.
Unfortunately:
 - In the child process itself the code that populates ChildProcessInitializationParameters is platform-specific, and I can only write the Cocoa port
 - WK1 is still a thing.

&gt; 
&gt; &gt; Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:90
&gt; &gt; +    if (processIdentifierString.isEmpty())
&gt; 
&gt; Should this assert? It would be super weird if this ever failed, wouldn&apos;t it?

That&apos;s handled in XPCServiceInitializer where the delegates to populate these things are called.

e.g.:
    if (!delegate.getProcessIdentifier(processIdentifier))
        exit(EXIT_FAILURE);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384915</commentid>
    <comment_count>4</comment_count>
      <attachid>330244</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-28 20:03:28 -0800</bug_when>
    <thetext>Created attachment 330244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384934</commentid>
    <comment_count>5</comment_count>
      <attachid>330244</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-28 21:56:33 -0800</bug_when>
    <thetext>Comment on attachment 330244
Patch

Clearing flags on attachment: 330244

Committed r226308: &lt;https://trac.webkit.org/changeset/226308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384935</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-28 21:56:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385231</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-02 13:18:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/36261367&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330209</attachid>
            <date>2017-12-26 21:46:23 -0800</date>
            <delta_ts>2017-12-28 20:03:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181155-20171226214622.patch</filename>
            <type>text/plain</type>
            <size>21478</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNlYTlmYzlkYTFmOThj
YWYwNmZjN2E1Y2E1MDhlZGJkNGIwNjg2MS4uOTc3YzVjOTQwYTEwMmVmNTVlNWY1MTdmNzIyNTVj
ZjUzNzQzNTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEyLTI2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBQcm9jZXNzSWRl
bnRpZmllciwgdmVuZGVkIGZyb20gdGhlIFVJIHByb2Nlc3MsIHRvIGVhY2ggY2hpbGQgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChOb3QgeWV0IHRlc3RhYmxlKQorCisgICAgICAgIE1vcmUgdGhhbiBvbmNlIHdlJ3Zl
IG5lZWRlZCB0byBjcmVhdGUgYW4gaWRlbnRpZmllciBmb3IgYW4gb2JqZWN0IHRoYXQgaXMgdW5p
cXVlIGFjcm9zcworICAgICAgICBhbGwgcHJvY2Vzc2VzIG5vIG1hdHRlciB3aGljaCBwcm9jZXNz
IGl0IGNhbWUgZnJvbS4KKyAgICAgICAgCisgICAgICAgIFNvbWV0aW1lcyB3ZSBoYXZlIGFuIG9i
amVjdCBvciBwcm94eSBvYmplY3QgdG8gdGhlIFVJIHByb2Nlc3Mgb3IgdGhlIFN0b3JhZ2UgcHJv
Y2VzcworICAgICAgICB0aGF0IGFsbG93cyB1cyB0byBhdWdtZW50IGEgcHJvY2Vzcy11bmlxdWUg
aWRlbnRpZmllciB0byBiZSBnbG9iYWxseSB1bmlxdWUuIE90aGVyIHRpbWVzIAorICAgICAgICB3
ZSBoYXZlIHRvIGNyZWF0ZSBoYWlyLWJyYWluZWQgc29sdXRpb25zLgorICAgICAgICAKKyAgICAg
ICAgSW4gdXBjb21pbmcgTWVzc2FnZVBvcnQgd29yayAoTmV4dCBzdGVwIGlzIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNzIpCisgICAgICAgIHRoZXJlIHdhcyBu
byB0cnVseSB3b3JrYWJsZSBzb2x1dGlvbiBmb3IgdGhpcy4KKyAgICAgICAgCisgICAgICAgIEJ5
IGludHJvZHVjaW5nIGEgbmV3IFByb2Nlc3NJZGVudGlmaWVyIHRvIGVhY2ggV0syIGNoaWxkIHBy
b2Nlc3NlcyB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgCisgICAgICAgIHVuaXF1ZSBvdmVyIHRo
ZSBydW4gb2YgYSBnaXZlbiBVSSBwcm9jZXNzLCB3ZSBjYW4gZWFzaWx5IGNyZWF0ZSBhbiBvYmpl
Y3QgaW4gYW55IHByb2Nlc3MgYW5kCisgICAgICAgIGlkZW50aWZ5IGl0IHVuaXF1ZWx5IGFjcm9z
cyBhbGwgcHJvY2Vzc2VzLgorICAgICAgICAKKyAgICAgICAgT2J2aW91c2x5ICJwcm9jZXNzIGlk
ZW50aWZpZXIiIGJyaW5ncyB0byBtaW5kIGEgcHJvY2Vzc2VzIFBJRCBidXQgdGhhdCBpc24ndCBn
b29kIGVub3VnaC4KKyAgICAgICAgVGhlIG51bWJlciBvZiBQSURzIG9uIHRoZSBzeXN0ZW0gaXMg
ZmFpcmx5IGxvdyBhbmQgdGhleSBhcmUgZ2xvYmFsIGFjcm9zcyBhbGwKKyAgICAgICAgcHJvY2Vz
c2VzIG9uIHRoZSBzeXN0ZW0uIEl0IGlzIGVhc3kgdG8gc2VlIGhvdyBhIGdpdmVuIFVJIHByb2Nl
c3MgdGhhdCBydW5zIGZvciBsb25nIGVub3VnaAorICAgICAgICAoc3VjaCBhcyBhIHdlYiBicm93
c2VyIHRoYXQgdGhlIHVzZXIgcmFyZWx5IHF1aXRzKSB3aWxsIHN0YXJ0IHRvIHJ1biBpbiB0byBy
ZWN5Y2xlZCBQSURzLCAKKyAgICAgICAgdGhlcmVmb3JlIGJyZWFraW5nIHRoZSB1bmlxdWVuZXNz
IGd1YXJhbnRlZSB0aGF0IGlzIHJlcXVpcmVkLgorICAgICAgICAKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvY2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJv
Y2Vzczo6c2V0SWRlbnRpZmllcik6IFNldHMgdGhlIHByb2Nlc3Mtd2lzZSBpZGVudGlmaWVyICh0
byBiZSB1c2VkIGR1cmluZyBXSzIKKyAgICAgICAgICBjaGlsZCBwcm9jZXNzIGluaXRpYWxpemF0
aW9uKQorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzczo6aWRlbnRpZmllcik6IEdldCB0aGUgcHJv
Y2Vzcy13aWRlIGlkZW50aWZpZXIuCisgICAgICAgICogcGxhdGZvcm0vUHJvY2Vzcy5oOiBBZGRl
ZC4KKwogMjAxNy0xMi0yNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNPU10gT24gUmV0aW5hIGRpc3BsYXlzLCBpY29uIHVzZWQgYXMgZHJhZyBpbWFnZSBm
b3IgbGFyZ2UgaW1hZ2UgaXMgc2NhbGVkIGRvd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGVlNTg0ZjhkYWNkMjI2
MTAwYmI0ZWQ1MzMzZTYwZTEyMjRiYWYyMy4uZTc2MGFiMjQ3MjZhMTM4ZWY1MDc2NzljMmU3NTRl
MmFlYmFkMTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMi0yNiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgUHJvY2Vzc0lkZW50
aWZpZXIsIHZlbmRlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLCB0byBlYWNoIGNoaWxkIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6aW5pdGlh
bGl6ZSk6IFNldCB0aGUgcHJvY2Vzcy13aWRlIGlkZW50aWZpZXIgaWYgdGhlIGluaXRpYWxpemF0
aW9uCisgICAgICAgICAgcGFyYW1ldGVycyBoYXZlIGl0LiBDb2NvYSBBU1NFUlRTIGl0IGV4aXN0
czsgbm9uLUNvY29hIHBsYXRmb3JtcyB3aWxsIGhhdmUgdG8gZmlndXJlIHRoaXMKKyAgICAgICAg
ICBvdXQgc29vbi4KKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50
cnlQb2ludC5oOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAg
ICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0No
aWxkUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6
OmdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Y29yZVByb2Nlc3NJZGVu
dGlmaWVyIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KToKKwogMjAxNy0xMi0yNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYktpdCBmaXhlcyB0byBlbmFibGUgLVdzdHJpY3QtcHJvdG90eXBlcyBmb3IgU2Fm
YXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDVmMjI1YTkwNzYxMzg0MWM4MzVlY2QxYmQ1YWQ3YzQwMjg2
Mzk3MjcuLjdmNmI4MzdhYjkzN2VlOGJkMGRjY2JlNDIyNjNhZWVjMjJkYjcwMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2Uu
Y3BwCiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogcGxhdGZvcm0vUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorcGxhdGZvcm0vUHJvY2Vzcy5jcHAKIHBsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5j
cHAKIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyMjY2Y2M0MzY0ZjdmOTI5NmQ5
ZTZmNDFjOWFmYjRjM2QzMDJiYWYuLjQzYmI0YjUwOWM3ZmZhYWVmZmRkZmJmOWQwYWIyMjU3OGE2
NzE2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0NTUsNiArMTQ1NSw3IEBACiAJCTUxRjY0NTY5MUY0NTM5QjkwMEI1NERF
RCAvKiBTZXJ2aWNlV29ya2VySm9iRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGNjQ1NjYxRjQ1Mzk5RjAwQjU0REVEIC8qIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFGNjQ1NkExRjQ1MzlDMDAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJKb2JUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2NDU2NTFG
NDUzOTlGMDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYlR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRE
RUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJl
Z2lzdHJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTUxRjY0NUQ1MUZFQ0RCQ0UwMEI1NERFRCAvKiBQcm9jZXNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2NDVEMzFGRUNEQkM4MDBCNTRE
RUQgLyogUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEVDMUJFODgw
RDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUY4ODZDMDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZp
Z2F0b3JTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY4ODZCRjFGMzI5MjA3MDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNl
V29ya2VyLmggKi87IH07CiAJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dF
eHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzkyMSw2ICs3OTIy
LDggQEAKIAkJNTFGNjQ1OTUxRjRBNjg2MTAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVyUmVnaXN0
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1QTAxRjRCRjUx
NjAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25P
cHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1QTMxRjRDMDAw
QzAwQjU0REVEIC8qIEV4Y2VwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXhjZXB0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxRjY0NUQyMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRjZBM0Q1MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MQ2FudmFzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRN
TENhbnZhc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxRjc5OEVCMUJFODgwRDMwMDhBRTQ5
MSAvKiBJREJJbmRleEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSURCSW5kZXhJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjgx
LDYgKzIzNjg0LDggQEAKIAkJCQkwNjY4RTE4OTBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51
LmggKi8sCiAJCQkJQUJDMTI4NzYwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5o
ICovLAogCQkJCUJDM0JFMTJBMEU5ODA5MkYwMDgzNTU4OCAvKiBQb3B1cE1lbnVTdHlsZS5oICov
LAorCQkJCTUxRjY0NUQyMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmNwcCAqLywKKwkJCQk1
MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzcy5oICovLAogCQkJCTAwODFGRUZEMTZC
MEEyNDQwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXguaCAqLywKIAkJCQk1Qzk3QTMzNjFGNUY3QTY1
MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi8sCiAJCQkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0
IC8qIFJlZmVycmVyUG9saWN5LmggKi8sCkBAIC0yODc3OSw2ICsyODc4NCw3IEBACiAJCQkJQTE4
NUI0MkExRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMERCRjQ3MThGOTIzMTcwMDBENzBDNiAvKiBQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUY2NDVENTFGRUNEQkNFMDBCNTRERUQgLyogUHJvY2Vz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkMwQTE5NDVEMDAwQThFRjVGIC8qIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRUMwQ0Q2ODFCNTAw
RkFEQTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTVFNjUzMTM0
QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGIxNTFjMjg5NmI0MmVm
MmJhY2M0MmVkNzcwZmQzNTU0MDgzMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvY2Vzcy5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisKKyNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgUHJvY2VzcyB7
CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBnbG9iYWxJZGVudGlm
aWVyOworCit2b2lkIHNldElkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBnbG9iYWxJZGVudGlm
aWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7Cit9CisKK1Byb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0aWMgYm9vbCBo
YXNJbml0aWFsaXplZDsKKyAgICBpZiAoIWhhc0luaXRpYWxpemVkKSB7CisgICAgICAgIGdsb2Jh
bElkZW50aWZpZXIgPSBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lkZW50aWZpZXJU
eXBlPigpOworICAgICAgICBoYXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuICpnbG9iYWxJZGVudGlmaWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBQcm9jZXNzCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9jZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2UxMDAwOTM0OGU1ZTFhOTU0YzcyZjE3ZmNkMGNhZWQzZGQyNzUyMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3MuaApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUHJvY2Vzc0lkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFByb2Nlc3NJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxQcm9jZXNz
SWRlbnRpZmllclR5cGU+OworCituYW1lc3BhY2UgUHJvY2VzcyB7CisKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SWRlbnRpZmllcihQcm9jZXNzSWRlbnRpZmllcik7CitXRUJDT1JFX0VYUE9SVCBQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKCk7CisKK30gLy8gbmFtZXNwYWNlIFByb2Nlc3MK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NoaWxkUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
CmluZGV4IDViMGI1ZDdkN2U1MjJlMDBiNTk3Y2UwYzAyMjEzYzNjNmU0NjdlMjEuLjI5OGVhYTcy
ZGZiYWExZmEwOWRmM2I1NmVlMTIxZTMwYWZjY2JiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCkBAIC02Miw2
ICs2NCwxNyBAQCBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShJUEM6
OkNvbm5lY3Rpb24qKQogCiB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZShjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgaWYgKCFwYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyKQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJVbmFibGUgdG8gaW5pdGlh
bGl6ZSBjaGlsZCBwcm9jZXNzIHdpdGhvdXQgYSBXZWJDb3JlIHByb2Nlc3MgaWRlbnRpZmllciIp
OworI2Vsc2UKKyAgICBpZiAoIXBhcmFtZXRlcnMucHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAg
IExPR19FUlJPUigiQWxsIGNoaWxkIHByb2Nlc3NlcyBzaG91bGQgaGF2ZSBhIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHZlbmRlZCBieSB0aGUgVUkgcHJvY2VzcywgYnV0IHRoaXMgb25lIGRv
ZXNuJ3QuIFRoaXMgd2lsbCBjYXVzZSB0aGluZ3MgdG8gYnJlYWsuIik7CisjZW5kaWYKKworICAg
IGlmIChwYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICBQcm9jZXNzOjpzZXRJ
ZGVudGlmaWVyKCpwYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyKTsKKwogICAgIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5oCmluZGV4IGNlOThkNzM1ZTNmMjdiYjFmZTIyMzBiYTYyODA4NTQ1NjQ3NDMwNmQu
LjE1MWYzMjcyMzVjNWQxZDg0OTc2OTYwYmY2OTljNzZiZWI4YmVmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1VzZXJBY3Rpdml0eS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVyczsKIHN0cnVjdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMg
ewogICAgIFN0cmluZyB1aVByb2Nlc3NOYW1lOwogICAgIFN0cmluZyBjbGllbnRJZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJ
ZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYUluaXRpYWxpemF0aW9u
RGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaAppbmRleCBmMjNkYjQzYzAyMzRkYzdjODEwNDk1
M2YwNGVmODc5NTJmOWI4NzRkLi43NTgyOGZkZTY2ODBmMWZiZTAwMjQzZjkxZDgzNDY2ODk5NmFj
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50
cnlQb2ludC5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2hl
Y2tFbnRpdGxlbWVudHMoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRDb25uZWN0aW9uSWRlbnRp
ZmllcihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImIGlkZW50aWZpZXIpOworICAgIHZpcnR1
YWwgYm9vbCBnZXRQcm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYp
OwogICAgIHZpcnR1YWwgYm9vbCBnZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50SWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCBib29sIGdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYg
Y2xpZW50UHJvY2Vzc05hbWUpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRFeHRyYUluaXRpYWxpemF0
aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEp
OwpAQCAtOTAsNiArOTEsMTEgQEAgdm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbiwgeHBjX29iamVjdF8KICAgICBpZiAoIWRl
bGVnYXRlLmdldENsaWVudElkZW50aWZpZXIocGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVyKSkK
ICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFkZWxlZ2F0ZS5nZXRQcm9jZXNzSWRl
bnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikpCisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsK
KyAgICBwYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7CisK
ICAgICBpZiAoIWRlbGVnYXRlLmdldENsaWVudFByb2Nlc3NOYW1lKHBhcmFtZXRlcnMudWlQcm9j
ZXNzTmFtZSkpCiAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENT
ZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggZDQ2ZDhh
MmZkNmFiOWFkNmRkZWExYTEwZDAyNjA0NTNlOWFmNjk5Yi4uOTVlMjllYTdhYTM0ZjYwZjUzOWZj
YTYyYjMzOTkwODg5ZTJmNGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC0yOCw2ICsyOCw5IEBACiAjaW1wb3J0ICJB
cmd1bWVudENvZGVyc0NGLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNzLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtODEs
NiArODQsMjEgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50
SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZpZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZp
ZXIoUHJvY2Vzc0lkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHByb2Nlc3NJ
ZGVudGlmaWVyU3RyaW5nID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVy
TWVzc2FnZSwgInByb2Nlc3MtaWRlbnRpZmllciIpOworICAgIGlmIChwcm9jZXNzSWRlbnRpZmll
clN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgb2s7
CisgICAgYXV0byBwYXJzZWRJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXJTdHJpbmcudG9V
SW50NjRTdHJpY3QoJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lkZW50aWZpZXJU
eXBlPihwYXJzZWRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBYUENT
ZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoU3RyaW5nJiBj
bGllbnRQcm9jZXNzTmFtZSkKIHsKICAgICBjbGllbnRQcm9jZXNzTmFtZSA9IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5hbWUiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
NmU0ZDhhZmI0N2JjZGE4MWNhNzZiMmRlOTE2MTdkZTc5YTQ5NDUzLi41YThlM2IwYTBiZDdlYjQx
NjIwMDgwODQzYmYzOTI3YjgyOGE5NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzUHJveHkuY3BwCkBAIC00OSw2ICs0OSw4IEBAIENoaWxkUHJvY2Vzc1Byb3h5
Ojp+Q2hpbGRQcm9jZXNzUHJveHkoKQogCiB2b2lkIENoaWxkUHJvY2Vzc1Byb3h5OjpnZXRMYXVu
Y2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykK
IHsKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVudGlmaWVyID0gbV9wcm9jZXNzSWRlbnRp
ZmllcjsKKwogICAgIGlmIChjb25zdCBjaGFyKiB1c2VyRGlyZWN0b3J5U3VmZml4ID0gZ2V0ZW52
KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpCiAgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0
cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgidXNlci1kaXJlY3Rvcnktc3Vm
Zml4IiksIHVzZXJEaXJlY3RvcnlTdWZmaXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzUHJveHkuaAppbmRleCA3YjMxYzhlM2M0YWJjYTE4YWUzNDNkNmZkZmZhYjQz
YWYyNjlmMDc1Li42ZDQ4MDJmNjBhY2YwNzFkMTNkYzA2NWZjYjdiY2E1MDJhMDJlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzcy5oPgogI2luY2x1ZGUgPHd0
Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtODAsNiArODEsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwogCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzSWRl
bnRpZmllcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQK
ICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwpAQCAtOTgsNiArMTAxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAgICAgYm9vbCBtX2Fsd2F5c1J1
bnNBdEJhY2tncm91bmRQcmlvcml0eSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgbV9wcm9jZXNzSWRlbnRpZmllciB7IGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KCkgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oCmluZGV4IDAyMmFiNmE3NzQyMmIzZWJkOWNjYjc3OTQxMDRjZTE1YmExMjI4NWIu
LjMwYmViZjNkZGFiYTUzYjliZmViN2Y5M2ZlYjYzODFjZjVkZjUzZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01Nyw2ICs1
OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBMYXVuY2hPcHRpb25zIHsKICAgICAgICAgUHJv
Y2Vzc1R5cGUgcHJvY2Vzc1R5cGU7CisgICAgICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRy
YUluaXRpYWxpemF0aW9uRGF0YTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDJk
YjZiYTQ5YTYwODAyOThjYjY5MTM1ZWE3YTNmNGM0MThjZmZhNWMuLmY4NDIwZjZjMDc2MDMyMjZj
OWQyNjQxODAyYWNjOGM0MmZmNDEyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtMTc1LDYg
KzE3NSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBtYWNo
X3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0KTsKIAogICAg
IHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImNsaWVu
dC1pZGVudGlmaWVyIiwgIWNsaWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8gY2xpZW50SWRlbnRp
Zmllci51dGY4KCkuZGF0YSgpIDogKl9OU0dldFByb2duYW1lKCkpOworICAgIHhwY19kaWN0aW9u
YXJ5X3NldF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgInByb2Nlc3MtaWRlbnRpZmll
ciIsIFN0cmluZzo6bnVtYmVyKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzSWRlbnRpZmllci50b1VJ
bnQ2NCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJv
b3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJ1aS1wcm9jZXNzLW5hbWUiLCBbW1tOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV0gVVRGOFN0cmluZ10pOwogCiAgICAgYm9vbCBpc1dl
YktpdERldmVsb3BtZW50QnVpbGQgPSAhW1tbW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVy
OkAiY29tLmFwcGxlLldlYktpdCJdIGJ1bmRsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0
aENvbXBvbmVudF0gaGFzUHJlZml4OnN5c3RlbURpcmVjdG9yeVBhdGgoKV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330244</attachid>
            <date>2017-12-28 20:03:28 -0800</date>
            <delta_ts>2017-12-28 21:56:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181155-20171228200327.patch</filename>
            <type>text/plain</type>
            <size>21749</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNlYTlmYzlkYTFmOThj
YWYwNmZjN2E1Y2E1MDhlZGJkNGIwNjg2MS4uZjM4ZTQ1MGM5NzAyNjg5ZTA3ZWFlZDhhNjNlYTky
NmQyYmY5YWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEyLTI2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBQcm9jZXNzSWRl
bnRpZmllciwgdmVuZGVkIGZyb20gdGhlIFVJIHByb2Nlc3MsIHRvIGVhY2ggY2hpbGQgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE5vdCB5ZXQgdGVzdGFibGUpCisKKyAgICAgICAgTW9yZSB0aGFuIG9uY2Ugd2UndmUg
bmVlZGVkIHRvIGNyZWF0ZSBhbiBpZGVudGlmaWVyIGZvciBhbiBvYmplY3QgdGhhdCBpcyB1bmlx
dWUgYWNyb3NzCisgICAgICAgIGFsbCBwcm9jZXNzZXMgbm8gbWF0dGVyIHdoaWNoIHByb2Nlc3Mg
aXQgY2FtZSBmcm9tLgorICAgICAgICAKKyAgICAgICAgU29tZXRpbWVzIHdlIGhhdmUgYW4gb2Jq
ZWN0IG9yIHByb3h5IG9iamVjdCB0byB0aGUgVUksIFN0b3JhZ2UsIG9yIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICB0aGF0IGFsbG93cyB1cyB0byBhdWdtZW50IGEgcHJvY2Vzcy11bmlxdWUgaWRl
bnRpZmllciB0byBiZSBnbG9iYWxseSB1bmlxdWUuIER1ZSB0byBtdWx0aXBsZQorICAgICAgICBz
ZXNzaW9ucyBldmVuIHRoaXMgaXNuJ3QgZ29vZCBlbm91Z2guIE90aGVyIHRpbWVzIHdlIGhhdmUg
dG8gY3JlYXRlIG1vcmUgaGFpci1icmFpbmVkIHNvbHV0aW9ucy4KKyAgICAgICAgCisgICAgICAg
IEluIHVwY29taW5nIE1lc3NhZ2VQb3J0IHdvcmsgKE5leHQgc3RlcCBpcyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTcyKQorICAgICAgICB0aGVyZSB3YXMgbm8g
dHJ1bHkgd29ya2FibGUgc29sdXRpb24gZm9yIHRoaXMuCisgICAgICAgIAorICAgICAgICBCeSBp
bnRyb2R1Y2luZyBhIG5ldyBQcm9jZXNzSWRlbnRpZmllciB0byBlYWNoIFdLMiBjaGlsZCBwcm9j
ZXNzZXMgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIAorICAgICAgICB1bmlxdWUgb3ZlciB0aGUg
cnVuIG9mIGEgZ2l2ZW4gVUkgcHJvY2Vzcywgd2UgY2FuIGVhc2lseSBjcmVhdGUgYW4gb2JqZWN0
IGluIGFueSBwcm9jZXNzIGFuZAorICAgICAgICBpZGVudGlmeSBpdCB1bmlxdWVseSBhY3Jvc3Mg
YWxsIHByb2Nlc3Nlcy4KKyAgICAgICAgCisgICAgICAgIE9idmlvdXNseSAicHJvY2VzcyBpZGVu
dGlmaWVyIiBicmluZ3MgdG8gbWluZCBhIHByb2Nlc3NlcyBQSUQgYnV0IHRoYXQgaXNuJ3QgZ29v
ZCBlbm91Z2guCisgICAgICAgIFRoZSBudW1iZXIgb2YgUElEcyBvbiB0aGUgc3lzdGVtIGlzIGZh
aXJseSBsb3cgYW5kIHRoZXkgYXJlIGdsb2JhbCBhY3Jvc3MgYWxsCisgICAgICAgIHByb2Nlc3Nl
cyBvbiB0aGUgc3lzdGVtLiBJdCBpcyBlYXN5IHRvIHNlZSBob3cgYSBnaXZlbiBVSSBwcm9jZXNz
IHRoYXQgcnVucyBmb3IgbG9uZyBlbm91Z2gKKyAgICAgICAgKHN1Y2ggYXMgYSB3ZWIgYnJvd3Nl
ciB0aGF0IHRoZSB1c2VyIHJhcmVseSBxdWl0cykgd2lsbCBzdGFydCB0byBydW4gaW4gdG8gcmVj
eWNsZWQgUElEcywgCisgICAgICAgIHRoZXJlZm9yZSBicmVha2luZyB0aGUgdW5pcXVlbmVzcyBn
dWFyYW50ZWUgdGhhdCBpcyByZXF1aXJlZC4KKyAgICAgICAgCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb2Nlc3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3M6OnNldElkZW50aWZpZXIpOiBTZXRzIHRoZSBwcm9jZXNzLXdpc2UgaWRlbnRpZmllciAodG8g
YmUgdXNlZCBkdXJpbmcgV0syCisgICAgICAgICAgY2hpbGQgcHJvY2VzcyBpbml0aWFsaXphdGlv
bikKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIpOiBHZXQgdGhlIHByb2Nl
c3Mtd2lkZSBpZGVudGlmaWVyLgorICAgICAgICAqIHBsYXRmb3JtL1Byb2Nlc3MuaDogQWRkZWQu
CisKIDIwMTctMTItMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbbWFjT1NdIE9uIFJldGluYSBkaXNwbGF5cywgaWNvbiB1c2VkIGFzIGRyYWcgaW1hZ2UgZm9y
IGxhcmdlIGltYWdlIGlzIHNjYWxlZCBkb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlZTU4NGY4ZGFjZDIyNjEw
MGJiNGVkNTMzM2U2MGUxMjI0YmFmMjMuLjQxZGU3ZDcxYzg0Mjk0YjRlYjI1ZjgwZDA5MWRhMDM2
MDBjYTQzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTItMjYgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFByb2Nlc3NJZGVudGlm
aWVyLCB2ZW5kZWQgZnJvbSB0aGUgVUkgcHJvY2VzcywgdG8gZWFjaCBjaGlsZCBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogU2hhcmVkL0No
aWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6aW5pdGlhbGl6
ZSk6IFNldCB0aGUgcHJvY2Vzcy13aWRlIGlkZW50aWZpZXIgaWYgdGhlIGluaXRpYWxpemF0aW9u
CisgICAgICAgICAgcGFyYW1ldGVycyBoYXZlIGl0LiBDb2NvYSBBU1NFUlRTIGl0IGV4aXN0czsg
bm9uLUNvY29hIHBsYXRmb3JtcyB3aWxsIGhhdmUgdG8gZmlndXJlIHRoaXMKKyAgICAgICAgICBv
dXQgc29vbi4KKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmg6CisKKyAgICAgICAgKiBT
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQ
b2ludC5oOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAg
ICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0NoaWxk
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzUHJveHk6Omdl
dExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6Y29yZVByb2Nlc3NJZGVudGlm
aWVyIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToK
KwogMjAxNy0xMi0yNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYktpdCBmaXhlcyB0byBlbmFibGUgLVdzdHJpY3QtcHJvdG90eXBlcyBmb3IgU2FmYXJp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDVmMjI1YTkwNzYxMzg0MWM4MzVlY2QxYmQ1YWQ3YzQwMjg2Mzk3
MjcuLjdmNmI4MzdhYjkzN2VlOGJkMGRjY2JlNDIyNjNhZWVjMjJkYjcwMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
CiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogcGxhdGZvcm0vUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorcGxhdGZvcm0vUHJvY2Vzcy5jcHAKIHBsYXRmb3JtL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAK
IHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyMjY2Y2M0MzY0ZjdmOTI5NmQ5ZTZm
NDFjOWFmYjRjM2QzMDJiYWYuLjQzYmI0YjUwOWM3ZmZhYWVmZmRkZmJmOWQwYWIyMjU3OGE2NzE2
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0NTUsNiArMTQ1NSw3IEBACiAJCTUxRjY0NTY5MUY0NTM5QjkwMEI1NERFRCAv
KiBTZXJ2aWNlV29ya2VySm9iRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGNjQ1NjYxRjQ1Mzk5RjAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJK
b2JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGNjQ1NkExRjQ1MzlDMDAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJKb2JUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2NDU2NTFGNDUz
OTlGMDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYlR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQg
LyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRjY0NTk0MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lz
dHJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUxRjY0NUQ1MUZFQ0RCQ0UwMEI1NERFRCAvKiBQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQg
LyogUHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxRjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEVDMUJFODgwRDMw
MDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUY4ODZDMDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZpZ2F0
b3JTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUY4ODZCRjFGMzI5MjA3MDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNlV29y
a2VyLmggKi87IH07CiAJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzkyMSw2ICs3OTIyLDgg
QEAKIAkJNTFGNjQ1OTUxRjRBNjg2MTAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1QTAxRjRCRjUxNjAw
QjU0REVEIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNjQ1QTMxRjRDMDAwQzAw
QjU0REVEIC8qIEV4Y2VwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRXhjZXB0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxRjY0NUQyMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxRjZBM0Q1MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
VE1MQ2FudmFzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENh
bnZhc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxRjc5OEVCMUJFODgwRDMwMDhBRTQ5MSAv
KiBJREJJbmRleEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SURCSW5kZXhJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjgxLDYg
KzIzNjg0LDggQEAKIAkJCQkwNjY4RTE4OTBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51Lmgg
Ki8sCiAJCQkJQUJDMTI4NzYwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oICov
LAogCQkJCUJDM0JFMTJBMEU5ODA5MkYwMDgzNTU4OCAvKiBQb3B1cE1lbnVTdHlsZS5oICovLAor
CQkJCTUxRjY0NUQyMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmNwcCAqLywKKwkJCQk1MUY2
NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzcy5oICovLAogCQkJCTAwODFGRUZEMTZCMEEy
NDQwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXguaCAqLywKIAkJCQk1Qzk3QTMzNjFGNUY3QTY1MDAx
MDUyMDcgLyogUmVjdEVkZ2VzLmggKi8sCiAJCQkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8q
IFJlZmVycmVyUG9saWN5LmggKi8sCkBAIC0yODc3OSw2ICsyODc4NCw3IEBACiAJCQkJQTE4NUI0
MkExRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMERCRjQ3MThGOTIzMTcwMDBENzBDNiAvKiBQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MUY2NDVENTFGRUNEQkNFMDBCNTRERUQgLyogUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkMwQTE5NDVEMDAwQThFRjVGIC8qIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRUMwQ0Q2ODFCNTAwRkFE
QTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTVFNjUzMTM0QkJC
RUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9jZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDNkMDM2ZjAwNGUxNDk4Y2Ew
ZTRiNTljNjIyODk0MWIzNTNlZmNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJvY2Vzcy5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisKKyNpbmNsdWRlIDx3dGYvTG9j
ay5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgUHJvY2VzcyB7CisKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBnbG9iYWxJZGVudGlmaWVyOworc3RhdGlj
IExvY2sgZ2xvYmFsSWRlbnRpZmllckxvY2s7CisKK3ZvaWQgc2V0SWRlbnRpZmllcihQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoZ2xvYmFsSWRlbnRpZmllckxvY2spOworICAg
IGdsb2JhbElkZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKK30KKworUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoZ2xvYmFsSWRlbnRpZmllckxvY2spOworICAgICAgICBpZiAoIWdsb2JhbElkZW50
aWZpZXIpCisgICAgICAgICAgICBnbG9iYWxJZGVudGlmaWVyID0gZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyPFByb2Nlc3NJZGVudGlmaWVyVHlwZT4oKTsKKyAgICB9KTsKKworICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoZ2xvYmFsSWRlbnRpZmllckxvY2spOworICAgIHJldHVybiAqZ2xvYmFsSWRl
bnRpZmllcjsKK30KKworfSAvLyBuYW1lc3BhY2UgUHJvY2VzcworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMTAwMDkzNDhlNWUx
YTk1NGM3MmYxN2ZjZDBjYWVkM2RkMjc1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9jZXNzLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitlbnVtIFByb2Nlc3NJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBQ
cm9jZXNzSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lkZW50aWZpZXJUeXBl
PjsKKworbmFtZXNwYWNlIFByb2Nlc3MgeworCitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElkZW50
aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIpOworV0VCQ09SRV9FWFBPUlQgUHJvY2Vzc0lkZW50aWZp
ZXIgaWRlbnRpZmllcigpOworCit9IC8vIG5hbWVzcGFjZSBQcm9jZXNzCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCA1YjBiNWQ3
ZDdlNTIyZTAwYjU5N2NlMGMwMjIxM2MzYzZlNDY3ZTIxLi4yOThlYWE3MmRmYmFhMWZhMDlkZjNi
NTZlZTEyMWUzMGFmY2NiYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGls
ZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAK
QEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQpAQCAtNjIsNiArNjQsMTcgQEAgc3Rh
dGljIHZvaWQgZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoSVBDOjpDb25uZWN0aW9uKikK
IAogdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGlmICghcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKGZhbHNlLCAiVW5hYmxlIHRvIGluaXRpYWxpemUgY2hpbGQgcHJv
Y2VzcyB3aXRob3V0IGEgV2ViQ29yZSBwcm9jZXNzIGlkZW50aWZpZXIiKTsKKyNlbHNlCisgICAg
aWYgKCFwYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICBMT0dfRVJST1IoIkFs
bCBjaGlsZCBwcm9jZXNzZXMgc2hvdWxkIGhhdmUgYSBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB2ZW5kZWQgYnkgdGhlIFVJIHByb2Nlc3MsIGJ1dCB0aGlzIG9uZSBkb2Vzbid0LiBUaGlzIHdp
bGwgY2F1c2UgdGhpbmdzIHRvIGJyZWFrLiIpOworI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVy
cy5wcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgUHJvY2Vzczo6c2V0SWRlbnRpZmllcigqcGFy
YW1ldGVycy5wcm9jZXNzSWRlbnRpZmllcik7CisKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MuaAppbmRl
eCBjZTk4ZDczNWUzZjI3YmIxZmUyMjMwYmE2MjgwODU0NTY0NzQzMDZkLi4xNTFmMzI3MjM1YzVk
MWQ4NDk3Njk2MGJmNjk5Yzc2YmViOGJlZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9DaGlsZFByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nl
c3MuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWN0aXZpdHku
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBA
IC00Miw2ICs0Myw3IEBAIGNsYXNzIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM7CiBz
dHJ1Y3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcg
dWlQcm9jZXNzTmFtZTsKICAgICBTdHJpbmcgY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAg
ICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFJbml0aWFsaXphdGlvbkRhdGE7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VFbnRyeVBvaW50LmgKaW5kZXggZjIzZGI0M2MwMjM0ZGM3YzgxMDQ5NTNmMDRlZjg3OTUyZjli
ODc0ZC4uNzU4MjhmZGU2NjgwZjFmYmUwMDI0M2Y5MWQ4MzQ2Njg5OTZhY2FlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaApAQCAt
NTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNoZWNrRW50aXRsZW1lbnRz
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29ubmVjdGlvbklkZW50aWZpZXIoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyJiBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJv
Y2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImKTsKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFByb2Nlc3NO
YW1lKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKTsKQEAgLTkwLDYgKzkx
LDExIEBAIHZvaWQgWFBDU2VydmljZUluaXRpYWxpemVyKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0
aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfCiAgICAgaWYgKCFkZWxlZ2F0ZS5nZXRDbGll
bnRJZGVudGlmaWVyKHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllcikpCiAgICAgICAgIGV4aXQo
RVhJVF9GQUlMVVJFKTsKIAorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
ZGVudGlmaWVyOworICAgIGlmICghZGVsZWdhdGUuZ2V0UHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vz
c0lkZW50aWZpZXIpKQorICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgcGFyYW1ldGVy
cy5wcm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJZGVudGlmaWVyOworCiAgICAgaWYgKCFkZWxl
Z2F0ZS5nZXRDbGllbnRQcm9jZXNzTmFtZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWUpKQogICAg
ICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IGQ0NmQ4YTJmZDZhYjlhZDZkZGVh
MWExMGQwMjYwNDUzZTlhZjY5OWIuLjk1ZTI5ZWE3YWEzNGY2MGY1MzlmY2E2MmIzMzk5MDg4OWUy
ZjRhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNl
RW50cnlQb2ludC5tbQpAQCAtMjgsNiArMjgsOSBAQAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
Ri5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiWFBDU2VydmljZUVu
dHJ5UG9pbnQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUHJvY2Vzcy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTgxLDYgKzg0LDIxIEBAIGJv
b2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldFByb2Nlc3NJZGVudGlmaWVyKFByb2Nlc3NJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIFN0cmluZyBwcm9jZXNzSWRlbnRpZmllclN0cmlu
ZyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJwcm9j
ZXNzLWlkZW50aWZpZXIiKTsKKyAgICBpZiAocHJvY2Vzc0lkZW50aWZpZXJTdHJpbmcuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIG9rOworICAgIGF1dG8gcGFy
c2VkSWRlbnRpZmllciA9IHByb2Nlc3NJZGVudGlmaWVyU3RyaW5nLnRvVUludDY0U3RyaWN0KCZv
ayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFByb2Nlc3NJZGVudGlmaWVyVHlwZT4ocGFyc2VkSWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgWFBDU2VydmljZUluaXRpYWxp
emVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJvY2Vzc05h
bWUpCiB7CiAgICAgY2xpZW50UHJvY2Vzc05hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKaW5kZXggYTZlNGQ4YWZiNDdiY2Rh
ODFjYTc2YjJkZTkxNjE3ZGU3OWE0OTQ1My4uNWE4ZTNiMGEwYmQ3ZWI0MTYyMDA4MDg0M2JmMzky
N2I4MjhhOTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1By
b3h5LmNwcApAQCAtNDksNiArNDksOCBAQCBDaGlsZFByb2Nlc3NQcm94eTo6fkNoaWxkUHJvY2Vz
c1Byb3h5KCkKIAogdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7CisgICAgbGF1bmNo
T3B0aW9ucy5wcm9jZXNzSWRlbnRpZmllciA9IG1fcHJvY2Vzc0lkZW50aWZpZXI7CisKICAgICBp
ZiAoY29uc3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZpeCA9IGdldGVudigiRElSSEVMUEVSX1VT
RVJfRElSX1NVRkZJWCIpKQogICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpLCB1c2VyRGly
ZWN0b3J5U3VmZml4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hp
bGRQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1By
b3h5LmgKaW5kZXggN2IzMWM4ZTNjNGFiY2ExOGFlMzQzZDZmZGZmYWI0M2FmMjY5ZjA3NS4uNmQ0
ODAyZjYwYWNmMDcxZDEzZGMwNjVmY2I3YmNhNTAyYTAyZTM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAK
KyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KQEAgLTgwLDYgKzgxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzaHV0
RG93blByb2Nlc3MoKTsKIAorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKwog
cHJvdGVjdGVkOgogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKSBvdmVycmlkZTsKQEAgLTk4LDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFw
IG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogICAgIGJvb2wgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5k
UHJpb3JpdHkgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fcHJv
Y2Vzc0lkZW50aWZpZXIgeyBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXJUeXBlPigpIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRl
eCAwMjJhYjZhNzc0MjJiM2ViZDljY2I3Nzk0MTA0Y2UxNWJhMTIyODViLi4zMGJlYmYzZGRhYmE1
M2I5YmZlYjdmOTNmZWI2MzgxY2Y1ZGY1M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgTGF1bmNoT3B0aW9ucyB7CiAgICAgICAgIFByb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlOworICAgICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRp
ZmllcjsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFJbml0aWFsaXphdGlv
bkRhdGE7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpICYmIChQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRleCAyZGI2YmE0OWE2MDgwMjk4
Y2I2OTEzNWVhN2EzZjRjNDE4Y2ZmYTVjLi5mODQyMGY2YzA3NjAzMjI2YzlkMjY0MTgwMmFjYzhj
NDJmZjQxMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9t
YWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTE3NSw2ICsxNzUsNyBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgbWFjaF9wb3J0X2RlYWxsb2Nh
dGUobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCk7CiAKICAgICB4cGNfZGljdGlvbmFy
eV9zZXRfc3RyaW5nKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJjbGllbnQtaWRlbnRpZmllciIs
ICFjbGllbnRJZGVudGlmaWVyLmlzRW1wdHkoKSA/IGNsaWVudElkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSA6ICpfTlNHZXRQcm9nbmFtZSgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJwcm9jZXNzLWlkZW50aWZpZXIiLCBTdHJpbmc6Om51
bWJlcihtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSkudXRmOCgp
LmRhdGEoKSk7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhib290c3RyYXBNZXNzYWdl
LmdldCgpLCAidWktcHJvY2Vzcy1uYW1lIiwgW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10g
cHJvY2Vzc05hbWVdIFVURjhTdHJpbmddKTsKIAogICAgIGJvb2wgaXNXZWJLaXREZXZlbG9wbWVu
dEJ1aWxkID0gIVtbW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5X
ZWJLaXQiXSBidW5kbGVQYXRoXSBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIGhh
c1ByZWZpeDpzeXN0ZW1EaXJlY3RvcnlQYXRoKCldOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>