<?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>216172</bug_id>
          
          <creation_ts>2020-09-04 02:57:40 -0700</creation_ts>
          <short_desc>[JSC] Use symbols as identifiers for class fields computed names storage</short_desc>
          <delta_ts>2020-11-13 14:32:25 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>194095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>caitp</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685593</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-09-04 02:57:40 -0700</bug_when>
    <thetext>Right now we are using plain numeric identifiers to store the property keys for the field&apos;s computed names (&quot;0&quot; for the first one, &quot;1&quot; for the second, etc). Using symbols is cleaner, avoids potential collisions with other features storing data in the class scope, and will allow for a more sane implementation when we land static class fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685659</commentid>
    <comment_count>1</comment_count>
      <attachid>407975</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-09-04 08:27:39 -0700</bug_when>
    <thetext>Created attachment 407975
Use symbols as identifiers

v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685670</commentid>
    <comment_count>2</comment_count>
      <attachid>407975</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-04 08:45:28 -0700</bug_when>
    <thetext>Comment on attachment 407975
Use symbols as identifiers

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:2851
&gt; +    Symbol* symbol = Symbol::create(vm, vm.symbolRegistry().symbolForKey(symbolName));

I think we&apos;d like to use PrivateSymbols here instead. Also, I think it is necessary to use a separate SymbolRegistry for this internal usage, since we can have `Symbol.for(&quot;0&quot;)` from use code and I don&apos;t think it&apos;s safe to use something that can be retrieved by arbritrary code. Finally, I don&apos;t think we actually need to create a Symbol, since we are only interested into uid and `vm.symbolRegistry().symbolForKey(symbolName)` is already giving us that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687693</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-11 02:58:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/68699684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693690</commentid>
    <comment_count>4</comment_count>
      <attachid>410212</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-01 02:34:23 -0700</bug_when>
    <thetext>Created attachment 410212
Use symbols as identifiers

Use private symbols as suggested. I&apos;m keeping the Symbol wrapper (created with Symbol::create) since it&apos;s needed to keep the UID alive in the SymbolRegistry. It will be garbage collected as needed, so it&apos;s not leaked. Also not using a parallel SymbolRegistry for now, we&apos;ll discuss this in a sync-up meeting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693733</commentid>
    <comment_count>5</comment_count>
      <attachid>410226</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-01 06:16:00 -0700</bug_when>
    <thetext>Created attachment 410226
Use symbols as identifiers, v3

Fix a mistake with changed default flags for registered symbols. There&apos;s still a bug with the bytecode cache, but just to make sure that&apos;s the only missing thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693797</commentid>
    <comment_count>6</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-01 11:04:10 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #5)
&gt; Created attachment 410226 [details]
&gt; Use symbols as identifiers, v3
&gt; 
&gt; Fix a mistake with changed default flags for registered symbols. There&apos;s
&gt; still a bug with the bytecode cache, but just to make sure that&apos;s the only
&gt; missing thing.

Will also update the patch to use a different SymbolRegistry, as discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699247</commentid>
    <comment_count>7</comment_count>
      <attachid>411746</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-19 07:54:38 -0700</bug_when>
    <thetext>Created attachment 411746
Use symbols as identifiers, v4

v4, attempts to fix the bytecode cache bugs (basically by teaching it about registered symbols) and uses a different hashshet for private symbols in SymbolRegistry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699676</commentid>
    <comment_count>8</comment_count>
      <attachid>411746</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-20 04:54:00 -0700</bug_when>
    <thetext>Comment on attachment 411746
Use symbols as identifiers, v4

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:2849
&gt; +    auto symbol = Symbol::create(vm, vm.symbolRegistry().privateSymbolForKey(symbolName));

After thinking this in more depth, I&apos;m uncomfortable with the fact we have a short lived heap object to return the uid here. This seems a bad choice for this API, since for a fresh created `SymbolImpl`, the only thing that is handling its ref is the Symbol we created. It means that if GC runs after `getOrCreateSymbolForComputedName`  and before we ever reference SymbolImpl somewhere else, we will end up with an invalid pointer that can cause UAF issues. I think it&apos;s not correct relying that such scenario won&apos;t happen. Is there a particular reason to have such function as a primitive? 

It sounds more correct if we have a less fine grain API to create/retrieve private identifier on `identifierArena` called `makePrivateIdentifier(VM&amp; vm, unsigned identifier)`. This way, we would be able to avoid a heap allocation (removing `Symbol::create`) and have full control of SymbolImpl lifetime.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:91
&gt; +    HashSet&lt;SymbolRegistryKey&gt; m_privateTable;

I don&apos;t think we need to include a `m_privateTable` on SymbolRegistry. I think this concept of private/public is more on the client side of this API than on SymbolRegistry itself. The alternative I&apos;d propose here is to have a new SymbolRegistry on `VM` that store private symbols. This way we would be achieving the same goal we want with current `SymbolRegistry` API we have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699707</commentid>
    <comment_count>9</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-20 07:42:07 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #8)

&gt; It sounds more correct if we have a less fine grain API to create/retrieve
&gt; private identifier on `identifierArena` called `makePrivateIdentifier(VM&amp;
&gt; vm, unsigned identifier)`. This way, we would be able to avoid a heap
&gt; allocation (removing `Symbol::create`) and have full control of SymbolImpl
&gt; lifetime.

This makes a lot of sense, even more so because the pending bytecode cache failures are also related to this! So we need a better API than wrapping things with a heap Symbol.

&gt; 
&gt; &gt; Source/WTF/wtf/text/SymbolRegistry.h:91
&gt; &gt; +    HashSet&lt;SymbolRegistryKey&gt; m_privateTable;
&gt; 
&gt; I don&apos;t think we need to include a `m_privateTable` on SymbolRegistry. I
&gt; think this concept of private/public is more on the client side of this API
&gt; than on SymbolRegistry itself. The alternative I&apos;d propose here is to have a
&gt; new SymbolRegistry on `VM` that store private symbols. This way we would be
&gt; achieving the same goal we want with current `SymbolRegistry` API we have.

Cool. What do you think about adding some code in SymbolRegistry so that it can be configured to store public or private symbols, but never both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699713</commentid>
    <comment_count>10</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-20 08:12:35 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #9)
&gt; (In reply to Caio Lima from comment #8)
&gt; 
&gt; &gt; It sounds more correct if we have a less fine grain API to create/retrieve
&gt; &gt; private identifier on `identifierArena` called `makePrivateIdentifier(VM&amp;
&gt; &gt; vm, unsigned identifier)`. This way, we would be able to avoid a heap
&gt; &gt; allocation (removing `Symbol::create`) and have full control of SymbolImpl
&gt; &gt; lifetime.
&gt; 
&gt; This makes a lot of sense, even more so because the pending bytecode cache
&gt; failures are also related to this! So we need a better API than wrapping
&gt; things with a heap Symbol.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/text/SymbolRegistry.h:91
&gt; &gt; &gt; +    HashSet&lt;SymbolRegistryKey&gt; m_privateTable;
&gt; &gt; 
&gt; &gt; I don&apos;t think we need to include a `m_privateTable` on SymbolRegistry. I
&gt; &gt; think this concept of private/public is more on the client side of this API
&gt; &gt; than on SymbolRegistry itself. The alternative I&apos;d propose here is to have a
&gt; &gt; new SymbolRegistry on `VM` that store private symbols. This way we would be
&gt; &gt; achieving the same goal we want with current `SymbolRegistry` API we have.
&gt; 
&gt; Cool. What do you think about adding some code in SymbolRegistry so that it
&gt; can be configured to store public or private symbols, but never both?

I personally would avoid including any info into SymbolRegistry for this change. We could definitely do that in the future, if we think it&apos;s necessary. I can see the advantage of this on cases where we don&apos;t want to mix Private and Public Symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700109</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-21 01:54:17 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #10)
&gt; &gt; Cool. What do you think about adding some code in SymbolRegistry so that it
&gt; &gt; can be configured to store public or private symbols, but never both?
&gt; 
&gt; I personally would avoid including any info into SymbolRegistry for this
&gt; change. We could definitely do that in the future, if we think it&apos;s
&gt; necessary. I can see the advantage of this on cases where we don&apos;t want to
&gt; mix Private and Public Symbols.

The thing is, SymbolRegistry is the one creating the symbols. If there&apos;s no way to configure it we need to subclass it, otherwise it will still create non-private symbols for all keys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700138</commentid>
    <comment_count>12</comment_count>
      <attachid>411971</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-21 04:27:30 -0700</bug_when>
    <thetext>Created attachment 411971
Use symbols as identifiers, v5

v5,

use makePrivateIdentifier to create private symbols as identifiers in the parser
use a new symbolregistry in VM, changing the class to create private symbols when asked to (in symbolKey())
(hopefully) fix the bytecode cache bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700162</commentid>
    <comment_count>13</comment_count>
      <attachid>411979</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-21 06:36:26 -0700</bug_when>
    <thetext>Created attachment 411979
Use symbols as identifiers, v6

v6,

since we need to make some changes in SymbolRegistry, set the type (public/private symbols) already in the constructor, that way we ensure we&apos;ll always store only one type of symbol and get rid of the extra parameter in symbolForKey()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700239</commentid>
    <comment_count>14</comment_count>
      <attachid>411979</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-21 09:41:10 -0700</bug_when>
    <thetext>Comment on attachment 411979
Use symbols as identifiers, v6

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

LGTM. I left one comment regarding changes on `Source/WTF/wtf/text/SymbolRegistry.h`

&gt; Source/WTF/wtf/text/SymbolRegistry.h:94
&gt; +    CreateSymbol m_createSymbol { nullptr };

Do you mind measuring mem usage with this change to double check if it&apos;s perf neutral?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700693</commentid>
    <comment_count>15</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-22 09:59:58 -0700</bug_when>
    <thetext>I run RAMification with v6 and without it (ToT), assuming that would give me a worst case of what the patch causes.

v6:

Footprint geomean: 58974859 (56.243 MB)
Peak Footprint geomean: 63023929 (60.104 MB)
Score: 60965788 (58.142 MB)

ToT:

Footprint geomean: 59780486 (57.011 MB)
Peak Footprint geomean: 63500091 (60.558 MB)
Score: 61612225 (58.758 MB)

Not sure if I understand how could this be, but I&apos;m happy to run other tests if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700701</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-22 10:12:29 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #15)
&gt; I run RAMification with v6 and without it (ToT), assuming that would give me
&gt; a worst case of what the patch causes.
&gt; 
&gt; v6:
&gt; 
&gt; Footprint geomean: 58974859 (56.243 MB)
&gt; Peak Footprint geomean: 63023929 (60.104 MB)
&gt; Score: 60965788 (58.142 MB)
&gt; 
&gt; ToT:
&gt; 
&gt; Footprint geomean: 59780486 (57.011 MB)
&gt; Peak Footprint geomean: 63500091 (60.558 MB)
&gt; Score: 61612225 (58.758 MB)
&gt; 
&gt; Not sure if I understand how could this be, but I&apos;m happy to run other tests
&gt; if needed.

I&apos;m told RAMification.py itself does not have super accurate averaging so just one execution is not enough, so I&apos;ll provide better numbers soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701465</commentid>
    <comment_count>17</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-26 08:40:53 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #16)
&gt; 
&gt; I&apos;m told RAMification.py itself does not have super accurate averaging so
&gt; just one execution is not enough, so I&apos;ll provide better numbers soon.

Here comparing a series of several ToT runs (A) and v6 runs (B). Again it seems somehow the v6 patch is slightly lower than ToT, but in any case if there are no errors it would seem we are good:

A Low Diff: 0.14497648057239587
A high Diff: -0.14497648057239587
B Low Diff: 0.12794076230601092
B high Diff: -0.12794076230601092
Are they different?: False
Mean Baseline: 58.83728571428571
Mean Changes: 58.63028571428571
Diff: 1.0035305985205112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701827</commentid>
    <comment_count>18</comment_count>
      <attachid>412410</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-27 05:02:41 -0700</bug_when>
    <thetext>Created attachment 412410
Use symbols as identifiers, v7

v7,

rebased
fix a bug uncovered while rebasing static fields on top of this, we were using the temporary private id for the computed property key as the function name in some cases; will update test262 accordingly, since by chance this was not tested properly in the instance test suite</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702017</commentid>
    <comment_count>19</comment_count>
      <attachid>412410</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-27 12:09:30 -0700</bug_when>
    <thetext>Comment on attachment 412410
Use symbols as identifiers, v7

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

overall it looks ok to me

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4827
&gt; +            setFunctionName = true;

it looks like this is only used by ComputedName, so we can probably get rid of it and just add `&amp;&amp; m_type != DefineFieldNode::Type::ComputedName` to the if condition

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4868
&gt; +        if (setFunctionName)

and replace this with `if (generator.shouldSetFunctionName(m_assign)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702018</commentid>
    <comment_count>20</comment_count>
      <attachid>412410</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-27 12:10:09 -0700</bug_when>
    <thetext>Comment on attachment 412410
Use symbols as identifiers, v7

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

overall it looks ok to me

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4827
&gt;&gt; +            setFunctionName = true;
&gt; 
&gt; it looks like this is only used by ComputedName, so we can probably get rid of it and just add `&amp;&amp; m_type != DefineFieldNode::Type::ComputedName` to the if condition

it looks like this is only used by ComputedName, so we can probably get rid of it and just add `&amp;&amp; m_type != DefineFieldNode::Type::ComputedName` to the if condition

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4868
&gt;&gt; +        if (setFunctionName)
&gt; 
&gt; and replace this with `if (generator.shouldSetFunctionName(m_assign)`

and replace this with `if (generator.shouldSetFunctionName(m_assign)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702254</commentid>
    <comment_count>21</comment_count>
      <attachid>412513</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-10-28 02:34:56 -0700</bug_when>
    <thetext>Created attachment 412513
Use symbols as identifiers, v8

v8,
Hrm, what you suggest does not seem to work (new failures introduced); a bit odd, since generator.shouldSetFunctionName() seems to be read-only.
I have rearranged the code a bit so that the boolean is used in both places and we keep a single call to the function. Seems a bit neater to me, let me know if that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705294</commentid>
    <comment_count>22</comment_count>
      <attachid>412513</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-06 10:14:12 -0800</bug_when>
    <thetext>Comment on attachment 412513
Use symbols as identifiers, v8

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

Patch LGTM. I left a comment below.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:94
&gt; +    CreateSymbol m_createSymbol { nullptr };

I&apos;m wondering if it is really worth it have those 2 new members on `SymbolRegistry`. I&apos;m neutral on `m_symbolType` but I&apos;m not sold on `m_createSymbol`, since we could call either `RegisteredSymbolImpl::createPrivate` or `RegisteredSymbolImpl::create` directly on `symbolForKey`  based on `m_symbolType`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705295</commentid>
    <comment_count>23</comment_count>
      <attachid>412513</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-06 10:17:54 -0800</bug_when>
    <thetext>Comment on attachment 412513
Use symbols as identifiers, v8

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        No new tests since no functionality was changed.

I think we are also fixing bug on `emitSetFunctionName` for computed fields, right? If that&apos;s the case, I think we should include tests that this patch is fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705301</commentid>
    <comment_count>24</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-06 10:46:31 -0800</bug_when>
    <thetext>(In reply to Caio Lima from comment #22)
&gt; Comment on attachment 412513 [details]
&gt; Use symbols as identifiers, v8
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412513&amp;action=review
&gt; 
&gt; Patch LGTM. I left a comment below.
&gt; 
&gt; &gt; Source/WTF/wtf/text/SymbolRegistry.h:94
&gt; &gt; +    CreateSymbol m_createSymbol { nullptr };
&gt; 
&gt; I&apos;m wondering if it is really worth it have those 2 new members on
&gt; `SymbolRegistry`. I&apos;m neutral on `m_symbolType` but I&apos;m not sold on
&gt; `m_createSymbol`, since we could call either
&gt; `RegisteredSymbolImpl::createPrivate` or `RegisteredSymbolImpl::create`
&gt; directly on `symbolForKey`  based on `m_symbolType`.

Yeah, I think a previous version did this. If memory is a concern we could do it again (also the opposite, just set the function once in the ctor and then forget the type).

About the test, there is one in test262 for static fields that verifies this works, but it won&apos;t land with this patch. We should add a test262 test for instance fields too, but it also would not land with this patch, right? I&apos;d say doing that is enough coverage, but I could add a test for it locally if you think that&apos;s important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705674</commentid>
    <comment_count>25</comment_count>
      <attachid>413571</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-09 02:12:44 -0800</bug_when>
    <thetext>Created attachment 413571
Use symbols as identifiers, v9

v9,
do not store the symbol creation method in SymbolRegistry. We&apos;ll figure out the correct one from the symbol type each time, this function is not called very often so there&apos;s no need for the micro-optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705678</commentid>
    <comment_count>26</comment_count>
      <attachid>413571</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-09 03:00:40 -0800</bug_when>
    <thetext>Comment on attachment 413571
Use symbols as identifiers, v9

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

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:56
&gt; +    CreateSymbol m_createSymbol;
&gt; +
&gt; +    if (m_symbolType == Type::PrivateSymbol)
&gt; +        m_createSymbol = &amp;RegisteredSymbolImpl::createPrivate;
&gt; +    else
&gt; +        m_createSymbol = &amp;RegisteredSymbolImpl::create;
&gt; +
&gt; +    auto symbol = m_createSymbol(*rep.impl(), *this);

Let&apos;s just switch 

if (m_symbolType == Type::PrivateSymbol)
    symbol = RegisteredSymbolImpl::createPrivate(...);
else
    symbol = RegisteredSymbolImpl::create(...);

We don&apos;t need to make this a indirect call, and it is slower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705684</commentid>
    <comment_count>27</comment_count>
      <attachid>413577</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-09 03:34:07 -0800</bug_when>
    <thetext>Created attachment 413577
Use symbols as identifiers, v10

v10,
do not use an indirect call to create symbols in the registry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705951</commentid>
    <comment_count>28</comment_count>
      <attachid>413577</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-09 17:45:21 -0800</bug_when>
    <thetext>Comment on attachment 413577
Use symbols as identifiers, v10

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

Looks good overall. Some nits.

&gt; Source/JavaScriptCore/parser/Parser.cpp:2840
&gt; +#define INSTANCE_COMPUTED_NAME_PREFIX &quot;instanceComputedName&quot;

Let&apos;s use `static constexpr ASCIILiteral instanceComputedNamePrefix { &quot;instanceComputedName&quot;_s };`

&gt; Source/JavaScriptCore/parser/ParserArena.cpp:110
&gt; +const Identifier&amp; IdentifierArena::makePrivateIdentifier(VM&amp; vm, const char* prefix, unsigned identifier)

Let&apos;s use `ASCIILiteral` instead of `const char*`.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:81
&gt; +    enum class Type { PublicSymbol, PrivateSymbol };

Make it `enum class Type : uint8_t`

&gt; Source/WTF/wtf/text/SymbolRegistry.h:83
&gt; +    SymbolRegistry(Type type) { m_symbolType = type; };

Set it in initializer list instead of function body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706027</commentid>
    <comment_count>29</comment_count>
      <attachid>413678</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-10 01:25:39 -0800</bug_when>
    <thetext>Created attachment 413678
Use symbols as identifiers, v11

v11,
fix style issues pointed out in previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706031</commentid>
    <comment_count>30</comment_count>
      <attachid>413679</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-10 01:42:32 -0800</bug_when>
    <thetext>Created attachment 413679
Use symbols as identifiers, 12

v12,
try to make the wincairo build happy with WTF_EXPORT_PRIVATE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706035</commentid>
    <comment_count>31</comment_count>
      <attachid>413681</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-10 02:14:14 -0800</bug_when>
    <thetext>Created attachment 413681
Use symbols as identifiers, v13

v13,
and remove the now unnecessary function body type initialization, forgot about it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706277</commentid>
    <comment_count>32</comment_count>
      <attachid>413681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-10 16:22:18 -0800</bug_when>
    <thetext>Comment on attachment 413681
Use symbols as identifiers, v13

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4827
&gt; +        if (m_ident &amp;&amp; shouldSetFunctionName &amp;&amp; m_type != DefineFieldNode::Type::ComputedName)

It seems that `m_type != DefineFieldNode::Type::ComputedName` is new behavior. Can you add a test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706383</commentid>
    <comment_count>33</comment_count>
      <attachid>413795</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-11 01:15:42 -0800</bug_when>
    <thetext>Created attachment 413795
Use symbols as identifiers, v14

v14,
add a test for computed fields+setFunctionName
(this will be also fully tested in test262 when class fields is feature complete in WebKit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706416</commentid>
    <comment_count>34</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-11 03:51:07 -0800</bug_when>
    <thetext>(In reply to Xan Lopez from comment #24)
&gt; (In reply to Caio Lima from comment #22)
&gt; 
&gt; About the test, there is one in test262 for static fields that verifies this
&gt; works, but it won&apos;t land with this patch. We should add a test262 test for
&gt; instance fields too, but it also would not land with this patch, right? I&apos;d
&gt; say doing that is enough coverage, but I could add a test for it locally if
&gt; you think that&apos;s important.

The problem with relying on Test262 coverage is that we don&apos;t run them on EWS yet. This makes our life harder to know when we break things not included on stress tests, since we will only figure out that they broke after landing it.

I think it&apos;s a very good practice try to have stress test to increase coverage of every change we make on a patch, with a few exceptions of cases where it&apos;s hard to reproduce them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706418</commentid>
    <comment_count>35</comment_count>
      <attachid>413795</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-11 04:05:35 -0800</bug_when>
    <thetext>Comment on attachment 413795
Use symbols as identifiers, v14

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

&gt; JSTests/stress/class-fields-harmony.js:922
&gt; +}

As I commented above, I think it&apos;s valuable have tests asserting that we are setting function name properly. I think there are at least 2 new cases we&apos;d like to include:

1. Computed field with some function expression on assignment.
2. Computed field with class expression on assignment.

So we&apos;d like to assert for those cases `assertSame(c[x].name, &lt;x evaluation to function name&gt;)`.
I&apos;d personally would include cases where `x` is not a trivial primitive, but also an object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706427</commentid>
    <comment_count>36</comment_count>
      <attachid>413811</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-11 04:40:08 -0800</bug_when>
    <thetext>Created attachment 413811
Use symbols as identifiers, v15

v15,
add a few more explicit tests as suggested by Caio. The previous test was testing setFunctionName but implicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707381</commentid>
    <comment_count>37</comment_count>
      <attachid>413811</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-13 14:00:21 -0800</bug_when>
    <thetext>Comment on attachment 413811
Use symbols as identifiers, v15

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707388</commentid>
    <comment_count>38</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-13 14:32:24 -0800</bug_when>
    <thetext>Committed r269801: &lt;https://trac.webkit.org/changeset/269801&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413811.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407975</attachid>
            <date>2020-09-04 08:27:39 -0700</date>
            <delta_ts>2020-10-01 02:34:23 -0700</delta_ts>
            <desc>Use symbols as identifiers</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>7009</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmYWEzNzU3OGY2OWEwODc2NmY3NDNhYzEyNGJiODdlMzcwODhlMTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBzeW1ib2xzIGZv
ciB0aGUgcHJvcGVydHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKY29tcHV0ZWQgbmFt
ZXMuIFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1lcmljIGlkZW50aWZpZXJzCmFu
ZCB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJdCBh
bHNvCnByZXZlbnRzIHBvdGVudGlhbCBjb2xsaXNpb25zIGlmIG90aGVyIGZlYXR1cmVzIHdhbnQg
dG8gc3RvcmUgZGF0YQppbiB0aGUgY2xhc3Mgc2NvcGUuCgpObyBuZXcgdGVzdHMgc2luY2Ugbm8g
ZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KCiogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CihKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUpOiBh
ZGFwdCBhIGNvbW1lbnQuCiogcGFyc2VyL1BhcnNlci5jcHA6CihKU0M6OmdldE9yQ3JlYXRlU3lt
Ym9sRm9yQ29tcHV0ZWROYW1lKTogY3JlYXRlcyAoYW5kIGFmdGVyIHRoYXQsCmdldHMpIGEgc3lt
Ym9sIGluIHRoZSBTeW1ib2xSZWdpc3RyeSBmb3IgdGhlIG50aCBjb21wdXRlZCBwcm9wZXJ0eQpr
ZXkgZm9yIGluc3RhbmNlIGZpZWxkcy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOiB1c2Ugc3ltYm9scyBpbnN0ZWFkIG9mIG51bWVyaWMgaWRlbnRpZmllcnMuCihKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1l
bnRzKTogZGl0dG8uCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrCiAuLi4vYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwICAgICAgIHwgMjUgKysrKysrKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFu
Z2VkLCA0NSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDU3OGM5Zjg0NWYxNy4uMzJmZjcwNDEyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wOS0wNCAgWGFuIExvcGV6ICA8eGFuQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNs
YXNzIGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtl
eXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlz
IGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVudGlmaWVycworICAgICAgICBh
bmQgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQg
YWxzbworICAgICAgICBwcmV2ZW50cyBwb3RlbnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0
dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEKKyAgICAgICAgaW4gdGhlIGNsYXNzIHNjb3BlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgor
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUpOiBhZGFwdCBhIGNv
bW1lbnQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OmdldE9y
Q3JlYXRlU3ltYm9sRm9yQ29tcHV0ZWROYW1lKTogY3JlYXRlcyAoYW5kIGFmdGVyIHRoYXQsCisg
ICAgICAgIGdldHMpIGEgc3ltYm9sIGluIHRoZSBTeW1ib2xSZWdpc3RyeSBmb3IgdGhlIG50aCBj
b21wdXRlZCBwcm9wZXJ0eQorICAgICAgICBrZXkgZm9yIGluc3RhbmNlIGZpZWxkcy4KKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2Ugc3ltYm9scyBpbnN0
ZWFkIG9mIG51bWVyaWMgaWRlbnRpZmllcnMuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKTogZGl0dG8u
CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBhbHdheXMgcGVyZm9ybSBbW1Nl
dF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggOTNmNjJjZGU2YzcwLi4yN2VkYTdjNWIwMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRT
YXZlQ29tcHV0ZWRGaWVsZE5hbWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUAogICAg
IEFTU0VSVChub2RlLmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wZXJ0eUV4cHI7CiAKLSAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRo
ZXRpYyBudW1lcmljIHZhcmlhYmxlIG5hbWUgaW4gdGhlIHByaXZhdGUgbmFtZSBzY29wZSwgd2hl
cmUgdGhlIHByb3BlcnR5IGtleSBpcyBzYXZlZCBmb3IgbGF0ZXIgdXNlLgorICAgIC8vIFRoZSAn
bmFtZScgcmVmZXJzIHRvIGEgc3ludGhldGljIHByaXZhdGUgbmFtZSBpbiB0aGUgY2xhc3Mgc2Nv
cGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KICAgICBj
b25zdCBJZGVudGlmaWVyJiBkZXNjcmlwdGlvbiA9ICpub2RlLm5hbWUoKTsKICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZGVzY3JpcHRpb24pOwogICAgIEFTU0VSVCghdmFy
LmxvY2FsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGM3
ZjliZTgxNGM1NS4uMDFiMWE2YTAzNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC0yODM5LDYgKzI4MzksMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIGNs
YXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNsYXNzU3RhcnRMaW5lLCBjbGFzc0VuZExp
bmUpOwogfQogCisvLyBXZSB1c2Ugc3ltYm9scyBhcyB0aGUgaWRlbnRpZmllcnMgb2YgdGhlIHZh
cmlhYmxlcyB0byBzdG9yZSB0aGUKKy8vIHByb3BlcnR5IGtleXMgZm9yIGNvbXB1dGVkIG5hbWUg
ZmllbGRzLCB0aGlzIHdheSB3ZSBhdm9pZCBhbnkKKy8vIGN1cnJlbnQgb3IgZnV0dXJlIGNvbGxp
c2lvbiB3aXRoIG90aGVyIGZlYXR1cmVzIHN0b3JpbmcgZGF0YSBpbiB0aGUKKy8vIGNsYXNzIHNj
b3BlLgorI2RlZmluZSBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCAiaW5zdGFuY2VDb21w
dXRlZE5hbWUiCisKK3N0YXRpYyBTeW1ib2xJbXBsKiBnZXRPckNyZWF0ZVN5bWJvbEZvckNvbXB1
dGVkTmFtZShWTSYgdm0sIHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJv
bE5hbWUgPSBtYWtlU3RyaW5nKElOU1RBTkNFX0NPTVBVVEVEX05BTUVfUFJFRklYLCBpZGVudGlm
aWVyKTsKKyAgICBTeW1ib2wqIHN5bWJvbCA9IFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5zeW1ib2xS
ZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lKSk7CisgICAgcmV0dXJuICZzeW1ib2wt
PnVpZCgpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUNsYXNzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMg
cmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+JiBpbmZvKQogewpAQCAt
Mjk5OCw3ICszMDExLDggQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewotICAgICAgICAgICAgICAgIGlkZW50ID0g
Jm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1f
dm0sIG51bUNvbXB1dGVkRmllbGRzKyspOworICAgICAgICAgICAgICAgIFN5bWJvbEltcGwqIHN5
bWJvbCA9IGdldE9yQ3JlYXRlU3ltYm9sRm9yQ29tcHV0ZWROYW1lKG1fdm0sIG51bUNvbXB1dGVk
RmllbGRzKyspOworICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRp
ZmllckFyZW5hKCkubWFrZUlkZW50aWZpZXIobV92bSwgc3ltYm9sKTsKICAgICAgICAgICAgICAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3BlLT5k
ZWNsYXJlTGV4aWNhbFZhcmlhYmxlKGlkZW50LCB0cnVlKTsKICAgICAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGRlY2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJh
dGlvblJlc3VsdDo6VmFsaWQpOwogICAgICAgICAgICAgICAgIGNsYXNzU2NvcGUtPnVzZVZhcmlh
YmxlKGlkZW50LCBmYWxzZSk7CkBAIC0zMDc5LDcgKzMwOTMsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bnN0YW5jZQogCiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBmaWVsZExvY2F0aW9uID0gdG9rZW5M
b2NhdGlvbigpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG51bGxwdHI7Ci0g
ICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKICAgICAgICAg
RGVmaW5lRmllbGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6Ok5hbWU7
CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBQUklWQVRF
TkFNRToKQEAgLTMxMDMsMTQgKzMxMTYsMTYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAg
ICAgICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDoKKyAgICAgICAgY2FzZSBPUEVOQlJB
Q0tFVDogewogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgY29tcHV0ZWRQcm9wZXJ0
eU5hbWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0
eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAg
ICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21w
dXRlZCBwcm9wZXJ0eSBuYW1lIik7Ci0gICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5h
LmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRl
ZEZpZWxkcysrKTsKKyAgICAgICAgICAgIFN5bWJvbEltcGwqIHN5bWJvbCA9IGdldE9yQ3JlYXRl
U3ltYm9sRm9yQ29tcHV0ZWROYW1lKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOworICAgICAg
ICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlSWRlbnRp
ZmllcihtX3ZtLCBzeW1ib2wpOwogICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6
VHlwZTo6Q29tcHV0ZWROYW1lOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tl
bkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7Ci0tIAoyLjI2LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410212</attachid>
            <date>2020-10-01 02:34:23 -0700</date>
            <delta_ts>2020-10-01 06:16:00 -0700</delta_ts>
            <desc>Use symbols as identifiers</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>12777</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkMjA5MDk2ZmQ4NGQ5MWIwMjMxNTUwODU3NzdiYzBlMDdhZGRlZDYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6Z2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUpOiBjcmVh
dGVzIChhbmQgYWZ0ZXIgdGhhdCwKZ2V0cykgYSBzeW1ib2wgaW4gdGhlIFN5bWJvbFJlZ2lzdHJ5
IGZvciB0aGUgbnRoIGNvbXB1dGVkIHByb3BlcnR5CmtleSBmb3IgaW5zdGFuY2UgZmllbGRzLgoo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBzeW1ib2xzIGluc3RlYWQg
b2YgbnVtZXJpYyBpZGVudGlmaWVycy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KClNvdXJjZS9XVEY6
CgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgooV1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6
Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZh
dGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKiB3
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6CihXVEY6OlN5bWJvbFJlZ2lzdHJ5Ojpwcml2YXRl
U3ltYm9sRm9yS2V5KTogYWxsb3cgdGhlIFN5bWJvbFJlZ2lzdHJ5IHRvIGhvbGQgcHJpdmF0ZSBz
eW1ib2xzLgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6Ci0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrCiAu
Li4vYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMjUgKysrKysrKysr
KysrKysrLS0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMjIgKysrKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNw
cCAgICAgICAgICAgIHwgIDkgKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmggICAgICAgICAgICAgIHwgIDkgKysrKy0tLQogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xS
ZWdpc3RyeS5jcHAgICAgICAgIHwgMTMgKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oICAgICAgICAgIHwgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNl
cnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OWQ3M2RlNmNiZjYuLmY3NmI3ZDM0MWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMjAtMTAtMDEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRz
IGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlz
IG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBp
cyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAg
IHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFs
c28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21t
ZW50LgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpnZXRPckNy
ZWF0ZVN5bWJvbEZvckNvbXB1dGVkTmFtZSk6IGNyZWF0ZXMgKGFuZCBhZnRlciB0aGF0LAorICAg
ICAgICBnZXRzKSBhIHN5bWJvbCBpbiB0aGUgU3ltYm9sUmVnaXN0cnkgZm9yIHRoZSBudGggY29t
cHV0ZWQgcHJvcGVydHkKKyAgICAgICAga2V5IGZvciBpbnN0YW5jZSBmaWVsZHMuCisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogdXNlIHN5bWJvbHMgaW5zdGVh
ZCBvZiBudW1lcmljIGlkZW50aWZpZXJzLgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgor
CiAyMDIwLTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gV2Ugc2hvdWxkIG5vdCB0YWcgQyBmdW5jdGlvbiB3aXRoIEpJVCBjb2RlIHJlbGF0
ZWQgcHRyIHRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCmluZGV4IDIyYTU1NWRhMDQ4NC4uZTRjMDMzZDNlZjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1
dGVkRmllbGROYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQo
bm9kZS5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlFeHByOwogCi0gICAgLy8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVt
ZXJpYyB2YXJpYWJsZSBuYW1lIGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBw
cm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJl
ZmVycyB0byBhIHN5bnRoZXRpYyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVy
ZSB0aGUgcHJvcGVydHkga2V5IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRl
bnRpZmllciYgZGVzY3JpcHRpb24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmNTUzNmJjZDA2
ZDUuLjgxNWVkNmQyMTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMjgzNSw2ICsyODM1LDE5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIs
IGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFzc1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0K
IAorLy8gV2UgdXNlIHN5bWJvbHMgYXMgdGhlIGlkZW50aWZpZXJzIG9mIHRoZSB2YXJpYWJsZXMg
dG8gc3RvcmUgdGhlCisvLyBwcm9wZXJ0eSBrZXlzIGZvciBjb21wdXRlZCBuYW1lIGZpZWxkcywg
dGhpcyB3YXkgd2UgYXZvaWQgYW55CisvLyBjdXJyZW50IG9yIGZ1dHVyZSBjb2xsaXNpb24gd2l0
aCBvdGhlciBmZWF0dXJlcyBzdG9yaW5nIGRhdGEgaW4gdGhlCisvLyBjbGFzcyBzY29wZS4KKyNk
ZWZpbmUgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9QUkVGSVggImluc3RhbmNlQ29tcHV0ZWROYW1l
IgorCitzdGF0aWMgU3ltYm9sSW1wbCogZ2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUo
Vk0mIHZtLCB1bnNpZ25lZCBpZGVudGlmaWVyKQoreworICAgIFN0cmluZyBzeW1ib2xOYW1lID0g
bWFrZVN0cmluZyhJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgaWRlbnRpZmllcik7Cisg
ICAgYXV0byBzeW1ib2wgPSBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0uc3ltYm9sUmVnaXN0cnkoKS5w
cml2YXRlU3ltYm9sRm9yS2V5KHN5bWJvbE5hbWUpKTsKKyAgICByZXR1cm4gJnN5bWJvbC0+dWlk
KCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q2xhc3MoVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1
aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8pCiB7CkBAIC0yOTk0
LDcgKzMwMDcsOCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9w
YXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwg
bnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICAgICAgYXV0byogc3ltYm9sID0gZ2V0
T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7
CisgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEo
KS5tYWtlSWRlbnRpZmllcihtX3ZtLCBzeW1ib2wpOwogICAgICAgICAgICAgICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhp
Y2FsVmFyaWFibGUoaWRlbnQsIHRydWUpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0
OjpWYWxpZCk7CiAgICAgICAgICAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoaWRlbnQs
IGZhbHNlKTsKQEAgLTMwNzUsNyArMzA4OSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJl
ZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVs
ZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAg
c3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgpAQCAt
MzA5OSwxNCArMzExMiwxNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICAgICAg
QVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOgorICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAg
ICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBh
cnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNh
bm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQ
cm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3Bl
cnR5IG5hbWUiKTsKLSAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmll
ckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKysp
OworICAgICAgICAgICAgYXV0byogc3ltYm9sID0gZ2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRl
ZE5hbWUobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZt
X3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VJZGVudGlmaWVyKG1fdm0sIHN5bWJv
bCk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5h
bWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAg
ICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTMwNjE5ZGJkYmE2Li5jOWQwNjZiZjhj
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTAtMDEgIFhhbiBMw7NwZXogIDx4YW5AaWdh
bGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3Ig
Y2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBw
cm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBu
YW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMg
YW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBm
aWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYg
b3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBz
Y29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMg
Y2hhbmdlZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAo
V1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0
byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5Lgor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHA6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5Ojpwcml2YXRlU3lt
Ym9sRm9yS2V5KTogYWxsb3cgdGhlIFN5bWJvbFJlZ2lzdHJ5IHRvIGhvbGQgcHJpdmF0ZSBzeW1i
b2xzLgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6CisKIDIwMjAtMDktMzAg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjY3Nzk1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAKaW5k
ZXggMjE4OTk4OTk4ODMwLi5lYWRlMDE2NGJmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmNwcApAQCAtNzksNCArNzksMTMgQEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBSZWdpc3Rl
cmVkU3ltYm9sSW1wbDo6Y3JlYXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmUKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYsIHJlcC5s
ZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSkpOwogfQogCitSZWY8UmVnaXN0ZXJl
ZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKFN0cmluZ0lt
cGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KQoreworICAgIGF1dG8qIG93
bmVyUmVwID0gKHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVw
LnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcDsKKyAgICBBU1NFUlQob3duZXJSZXAtPmJ1ZmZlck93
bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisgICAgaWYgKHJlcC5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0
YTgsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdp
c3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVn
aXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwg
c3ltYm9sUmVnaXN0cnksIHNfZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lzUHJpdmF0ZSkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKaW5kZXggNjMx
MGRjNTczY2Y1Li4yMTJmY2UxYjNkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCkBAIC0x
NTYsMTUgKzE1NiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJTeW1ib2xSZWdpc3RyeSgp
IHsgbV9zeW1ib2xSZWdpc3RyeSA9IG51bGxwdHI7IH0KIAogICAgIHN0YXRpYyBSZWY8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7
CisgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlUHJpdmF0ZShTdHJp
bmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1w
bChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1w
bD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1w
bChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkK
KyAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0
cnksIEZsYWdzIGZsYWdzID0gc19mbGFnRGVmYXVsdCkKKyAgICAgICAgOiBTeW1ib2xJbXBsKGNo
YXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgZmxhZ3MpCiAgICAgICAgICwgbV9zeW1i
b2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAgIH0KIAotICAgIFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJp
bmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1i
b2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3Rl
cmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiBy
ZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdEZWZhdWx0KQorICAgICAgICA6IFN5bWJvbElt
cGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBt
X3N5bWJvbFJlZ2lzdHJ5KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmNwcAppbmRleCAwZDkwYTUxN2UzMjQuLmQwZmQxZTBmMGE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKQEAgLTM2LDYgKzM2LDE5IEBAIFN5
bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQogICAgIH0KIH0KIAorUmVmPFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6cHJpdmF0ZVN5bWJvbEZvcktleShjb25zdCBT
dHJpbmcmIHJlcCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGFibGUuYWRkKFN5bWJvbFJl
Z2lzdHJ5S2V5KHJlcC5pbXBsKCkpKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKS0+aXNTeW1ib2woKSk7
CisgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGFkZFJlc3VsdC5pdGVy
YXRvci0+aW1wbCgpKS0+YXNSZWdpc3RlcmVkU3ltYm9sSW1wbCgpOworICAgIH0KKworICAgIGF1
dG8gc3ltYm9sID0gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUoKnJlcC5pbXBs
KCksICp0aGlzKTsKKyAgICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXko
JnN5bWJvbC5nZXQoKSk7CisgICAgcmV0dXJuIHN5bWJvbDsKK30KKwogUmVmPFJlZ2lzdGVyZWRT
eW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYgcmVw
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YWJsZS5hZGQoU3ltYm9sUmVnaXN0cnlLZXko
cmVwLmltcGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdp
c3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1ODk3
OWFlODE2NS4uNDk2MzEwZDJkMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5o
CkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN5bWJv
bFJlZ2lzdHJ5KCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFJlZ2lzdGVyZWRTeW1i
b2xJbXBsPiBzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gcHJpdmF0ZVN5bWJvbEZvcktleShjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgcmVtb3ZlKFJlZ2lzdGVyZWRTeW1ib2xJbXBsJik7CiAKLS0g
CjIuMjYuMgoK
</data>
<flag name="commit-queue"
          id="426091"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410226</attachid>
            <date>2020-10-01 06:16:00 -0700</date>
            <delta_ts>2020-10-19 07:54:38 -0700</delta_ts>
            <desc>Use symbols as identifiers, v3</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>12787</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiMTRkNDQ2OTgwZmY4YWU5N2MyMzQ3MjI5YWQ2OTgxNTVhMThmY2MyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6Z2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUpOiBjcmVh
dGVzIChhbmQgYWZ0ZXIgdGhhdCwKZ2V0cykgYSBzeW1ib2wgaW4gdGhlIFN5bWJvbFJlZ2lzdHJ5
IGZvciB0aGUgbnRoIGNvbXB1dGVkIHByb3BlcnR5CmtleSBmb3IgaW5zdGFuY2UgZmllbGRzLgoo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBzeW1ib2xzIGluc3RlYWQg
b2YgbnVtZXJpYyBpZGVudGlmaWVycy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KClNvdXJjZS9XVEY6
CgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgooV1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6
Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZh
dGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKiB3
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6CihXVEY6OlN5bWJvbFJlZ2lzdHJ5Ojpwcml2YXRl
U3ltYm9sRm9yS2V5KTogYWxsb3cgdGhlIFN5bWJvbFJlZ2lzdHJ5IHRvIGhvbGQgcHJpdmF0ZSBz
eW1ib2xzLgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6Ci0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrCiAu
Li4vYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMjUgKysrKysrKysr
KysrKysrLS0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMjIgKysrKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNw
cCAgICAgICAgICAgIHwgIDkgKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmggICAgICAgICAgICAgIHwgIDkgKysrKy0tLQogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xS
ZWdpc3RyeS5jcHAgICAgICAgIHwgMTMgKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oICAgICAgICAgIHwgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNl
cnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OWQ3M2RlNmNiZjYuLmY3NmI3ZDM0MWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMjAtMTAtMDEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRz
IGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlz
IG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBp
cyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAg
IHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFs
c28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21t
ZW50LgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpnZXRPckNy
ZWF0ZVN5bWJvbEZvckNvbXB1dGVkTmFtZSk6IGNyZWF0ZXMgKGFuZCBhZnRlciB0aGF0LAorICAg
ICAgICBnZXRzKSBhIHN5bWJvbCBpbiB0aGUgU3ltYm9sUmVnaXN0cnkgZm9yIHRoZSBudGggY29t
cHV0ZWQgcHJvcGVydHkKKyAgICAgICAga2V5IGZvciBpbnN0YW5jZSBmaWVsZHMuCisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogdXNlIHN5bWJvbHMgaW5zdGVh
ZCBvZiBudW1lcmljIGlkZW50aWZpZXJzLgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgor
CiAyMDIwLTA5LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gV2Ugc2hvdWxkIG5vdCB0YWcgQyBmdW5jdGlvbiB3aXRoIEpJVCBjb2RlIHJlbGF0
ZWQgcHRyIHRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCmluZGV4IDIyYTU1NWRhMDQ4NC4uZTRjMDMzZDNlZjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1
dGVkRmllbGROYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQo
bm9kZS5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlFeHByOwogCi0gICAgLy8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVt
ZXJpYyB2YXJpYWJsZSBuYW1lIGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBw
cm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJl
ZmVycyB0byBhIHN5bnRoZXRpYyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVy
ZSB0aGUgcHJvcGVydHkga2V5IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRl
bnRpZmllciYgZGVzY3JpcHRpb24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmNTUzNmJjZDA2
ZDUuLjgxNWVkNmQyMTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMjgzNSw2ICsyODM1LDE5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIs
IGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFzc1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0K
IAorLy8gV2UgdXNlIHN5bWJvbHMgYXMgdGhlIGlkZW50aWZpZXJzIG9mIHRoZSB2YXJpYWJsZXMg
dG8gc3RvcmUgdGhlCisvLyBwcm9wZXJ0eSBrZXlzIGZvciBjb21wdXRlZCBuYW1lIGZpZWxkcywg
dGhpcyB3YXkgd2UgYXZvaWQgYW55CisvLyBjdXJyZW50IG9yIGZ1dHVyZSBjb2xsaXNpb24gd2l0
aCBvdGhlciBmZWF0dXJlcyBzdG9yaW5nIGRhdGEgaW4gdGhlCisvLyBjbGFzcyBzY29wZS4KKyNk
ZWZpbmUgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9QUkVGSVggImluc3RhbmNlQ29tcHV0ZWROYW1l
IgorCitzdGF0aWMgU3ltYm9sSW1wbCogZ2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUo
Vk0mIHZtLCB1bnNpZ25lZCBpZGVudGlmaWVyKQoreworICAgIFN0cmluZyBzeW1ib2xOYW1lID0g
bWFrZVN0cmluZyhJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgaWRlbnRpZmllcik7Cisg
ICAgYXV0byBzeW1ib2wgPSBTeW1ib2w6OmNyZWF0ZSh2bSwgdm0uc3ltYm9sUmVnaXN0cnkoKS5w
cml2YXRlU3ltYm9sRm9yS2V5KHN5bWJvbE5hbWUpKTsKKyAgICByZXR1cm4gJnN5bWJvbC0+dWlk
KCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q2xhc3MoVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1
aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8pCiB7CkBAIC0yOTk0
LDcgKzMwMDcsOCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9w
YXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwg
bnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICAgICAgYXV0byogc3ltYm9sID0gZ2V0
T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7
CisgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEo
KS5tYWtlSWRlbnRpZmllcihtX3ZtLCBzeW1ib2wpOwogICAgICAgICAgICAgICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhp
Y2FsVmFyaWFibGUoaWRlbnQsIHRydWUpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0
OjpWYWxpZCk7CiAgICAgICAgICAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoaWRlbnQs
IGZhbHNlKTsKQEAgLTMwNzUsNyArMzA4OSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJl
ZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVs
ZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAg
c3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgpAQCAt
MzA5OSwxNCArMzExMiwxNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICAgICAg
QVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOgorICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAg
ICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBh
cnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNh
bm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQ
cm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3Bl
cnR5IG5hbWUiKTsKLSAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmll
ckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKysp
OworICAgICAgICAgICAgYXV0byogc3ltYm9sID0gZ2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRl
ZE5hbWUobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZt
X3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VJZGVudGlmaWVyKG1fdm0sIHN5bWJv
bCk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5h
bWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAg
ICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTMwNjE5ZGJkYmE2Li5jOWQwNjZiZjhj
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTAtMDEgIFhhbiBMw7NwZXogIDx4YW5AaWdh
bGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3Ig
Y2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBw
cm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBu
YW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMg
YW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBm
aWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYg
b3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBz
Y29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMg
Y2hhbmdlZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAo
V1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0
byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5Lgor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHA6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5Ojpwcml2YXRlU3lt
Ym9sRm9yS2V5KTogYWxsb3cgdGhlIFN5bWJvbFJlZ2lzdHJ5IHRvIGhvbGQgcHJpdmF0ZSBzeW1i
b2xzLgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6CisKIDIwMjAtMDktMzAg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjY3Nzk1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAKaW5k
ZXggMjE4OTk4OTk4ODMwLi5lYWRlMDE2NGJmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmNwcApAQCAtNzksNCArNzksMTMgQEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBSZWdpc3Rl
cmVkU3ltYm9sSW1wbDo6Y3JlYXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmUKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYsIHJlcC5s
ZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSkpOwogfQogCitSZWY8UmVnaXN0ZXJl
ZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKFN0cmluZ0lt
cGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KQoreworICAgIGF1dG8qIG93
bmVyUmVwID0gKHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVw
LnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcDsKKyAgICBBU1NFUlQob3duZXJSZXAtPmJ1ZmZlck93
bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisgICAgaWYgKHJlcC5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0
YTgsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdp
c3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVn
aXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwg
c3ltYm9sUmVnaXN0cnksIHNfZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lzUHJpdmF0ZSkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKaW5kZXggNjMx
MGRjNTczY2Y1Li40NzQ2YzQ5OGI3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCkBAIC0x
NTYsMTUgKzE1NiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJTeW1ib2xSZWdpc3RyeSgp
IHsgbV9zeW1ib2xSZWdpc3RyeSA9IG51bGxwdHI7IH0KIAogICAgIHN0YXRpYyBSZWY8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7
CisgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlUHJpdmF0ZShTdHJp
bmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1w
bChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1w
bD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1w
bChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkK
KyAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0
cnksIEZsYWdzIGZsYWdzID0gc19mbGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbElt
cGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBt
X3N5bWJvbFJlZ2lzdHJ5KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQogCi0gICAgUmVnaXN0ZXJl
ZFN5bWJvbEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVm
PFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQotICAgICAgICA6
IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBzX2ZsYWdJc1Jl
Z2lzdGVyZWQpCisgICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0
cnkmIHJlZ2lzdHJ5LCBGbGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICAgICAg
OiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgZmxhZ3MpCiAg
ICAgICAgICwgbV9zeW1ib2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKaW5kZXggMGQ5MGE1MTdlMzI0Li5kMGZkMWUw
ZjBhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCkBAIC0zNiw2ICsz
NiwxOSBAQCBTeW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKICAgICB9CiB9CiAKK1Jl
ZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnByaXZhdGVTeW1ib2xGb3JL
ZXkoY29uc3QgU3RyaW5nJiByZXApCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RhYmxlLmFk
ZChTeW1ib2xSZWdpc3RyeUtleShyZXAuaW1wbCgpKSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT5pbXBsKCktPmlz
U3ltYm9sKCkpOworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihhZGRS
ZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsKKyAgICB9
CisKKyAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRl
KCpyZXAuaW1wbCgpLCAqdGhpcyk7CisgICAgKmFkZFJlc3VsdC5pdGVyYXRvciA9IFN5bWJvbFJl
Z2lzdHJ5S2V5KCZzeW1ib2wuZ2V0KCkpOworICAgIHJldHVybiBzeW1ib2w7Cit9CisKIFJlZjxS
ZWdpc3RlcmVkU3ltYm9sSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25zdCBT
dHJpbmcmIHJlcCkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGFibGUuYWRkKFN5bWJvbFJl
Z2lzdHJ5S2V5KHJlcC5pbXBsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaApp
bmRleCA1NTg5NzlhZTgxNjUuLjQ5NjMxMGQyZDI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5TeW1ib2xSZWdpc3RyeSgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxSZWdp
c3RlcmVkU3ltYm9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IHByaXZhdGVTeW1ib2xGb3JL
ZXkoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHJlbW92ZShSZWdpc3RlcmVkU3ltYm9sSW1w
bCYpOwogCi0tIAoyLjI2LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411746</attachid>
            <date>2020-10-19 07:54:38 -0700</date>
            <delta_ts>2020-10-21 04:27:30 -0700</delta_ts>
            <desc>Use symbols as identifiers, v4</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>16851</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBlZjJiNmM1NmM1ZTA3YzE0Mjg0YzE1ZTA2NjI2MzY2NDY3YzljYjFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6Z2V0T3JDcmVhdGVTeW1ib2xGb3JDb21wdXRlZE5hbWUpOiBjcmVh
dGVzIChhbmQgYWZ0ZXIgdGhhdCwKZ2V0cykgYSBzeW1ib2wgaW4gdGhlIFN5bWJvbFJlZ2lzdHJ5
IGZvciB0aGUgbnRoIGNvbXB1dGVkIHByb3BlcnR5CmtleSBmb3IgaW5zdGFuY2UgZmllbGRzLgoo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBzeW1ib2xzIGluc3RlYWQg
b2YgbnVtZXJpYyBpZGVudGlmaWVycy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KKiBydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcDoKKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUp
OiBhZGQgc3VwcG9ydCBmb3IgcmVnaXN0ZXJlZCBzeW1ib2xzLgooSlNDOjpDYWNoZWRVbmlxdWVk
U3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25zdCk6IGRpdHRvLgoKU291cmNlL1dURjoKCiogd3Rm
L3RleHQvU3ltYm9sSW1wbC5jcHA6CihXVEY6OlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQ
cml2YXRlKTogYWRkIGEgbWV0aG9kIHRvIGNyZWF0ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1i
b2wgZnJvbSBhIHN0cmluZyBrZXkuCiogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgoqIHd0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmNwcDoKKFdURjo6U3ltYm9sUmVnaXN0cnk6OnByaXZhdGVTeW1ib2xG
b3JLZXkpOiBhbGxvdyB0aGUgU3ltYm9sUmVnaXN0cnkgdG8gaG9sZCBwcml2YXRlIHN5bWJvbHMu
CihXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUpOiByZW1vdmUgZnJvbSB0aGUgcHJpdmF0ZSBz
eW1ib2wgdGFibGUgdG9vLgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6Ci0tLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgMjcgKysrKysrKysrKysr
KysrKwogLi4uL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwICAgICAgICAgICAgIHwgIDIg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAgICAgICB8IDI1ICsr
KysrKysrKysrKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwIHwgMTggKysrKysrKysrLS0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJv
bEltcGwuY3BwICAgICAgICAgICAgfCAgOSArKysrKysKIFNvdXJjZS9XVEYvd3RmL3RleHQvU3lt
Ym9sSW1wbC5oICAgICAgICAgICAgICB8ICA5ICsrKy0tLQogU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5jcHAgICAgICAgIHwgMzEgKysrKysrKysrKysrKysrKystLQogU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oICAgICAgICAgIHwgIDIgKysKIDkgZmlsZXMg
Y2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IGI4ZTdiZmM0N2I0OC4uN2M3MTQ0NGNhNDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0xMC0xOSAgWGFuIEzDs3BleiAgPHhh
bkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50aWZpZXJz
IGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9scyBmb3Ig
dGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNvbXB1
dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVudGlm
aWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQgc3Rh
dGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29sbGlzaW9u
cyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNzCisgICAg
ICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFsaXR5
IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5h
bWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OmdldE9yQ3JlYXRlU3ltYm9sRm9yQ29tcHV0ZWROYW1lKTogY3JlYXRlcyAoYW5k
IGFmdGVyIHRoYXQsCisgICAgICAgIGdldHMpIGEgc3ltYm9sIGluIHRoZSBTeW1ib2xSZWdpc3Ry
eSBmb3IgdGhlIG50aCBjb21wdXRlZCBwcm9wZXJ0eQorICAgICAgICBrZXkgZm9yIGluc3RhbmNl
IGZpZWxkcy4KKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1
c2Ugc3ltYm9scyBpbnN0ZWFkIG9mIG51bWVyaWMgaWRlbnRpZmllcnMuCisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAg
ICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5jb2RlKTogYWRkIHN1cHBv
cnQgZm9yIHJlZ2lzdGVyZWQgc3ltYm9scy4KKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0
cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4KKwogMjAyMC0xMC0xOCAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAtV2RlcHJlY2F0ZWQt
Y29weSB3YXJuaW5ncyBpbiBXVEYgYW5kIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNWFkODQ5
ODA4NjRiLi5iMGRkNTk1ODU2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIFBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUAogICAgIEFTU0VSVChub2RlLmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eUV4cHI7CiAKLSAgICAvLyBUaGUgJ25h
bWUnIHJlZmVycyB0byBhIHN5bnRoZXRpYyBudW1lcmljIHZhcmlhYmxlIG5hbWUgaW4gdGhlIHBy
aXZhdGUgbmFtZSBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtleSBpcyBzYXZlZCBmb3IgbGF0
ZXIgdXNlLgorICAgIC8vIFRoZSAnbmFtZScgcmVmZXJzIHRvIGEgc3ludGhldGljIHByaXZhdGUg
bmFtZSBpbiB0aGUgY2xhc3Mgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2ZWQg
Zm9yIGxhdGVyIHVzZS4KICAgICBjb25zdCBJZGVudGlmaWVyJiBkZXNjcmlwdGlvbiA9ICpub2Rl
Lm5hbWUoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZGVzY3JpcHRp
b24pOwogICAgIEFTU0VSVCghdmFyLmxvY2FsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IDkyN2I4NWE3ZDVhOC4uMmQ2MWZlYmViYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODM3LDYgKzI4MzcsMTkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0RlY2xT
dGF0ZW1lbnQobG9jYXRpb24sIGNsYXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNsYXNz
U3RhcnRMaW5lLCBjbGFzc0VuZExpbmUpOwogfQogCisvLyBXZSB1c2Ugc3ltYm9scyBhcyB0aGUg
aWRlbnRpZmllcnMgb2YgdGhlIHZhcmlhYmxlcyB0byBzdG9yZSB0aGUKKy8vIHByb3BlcnR5IGtl
eXMgZm9yIGNvbXB1dGVkIG5hbWUgZmllbGRzLCB0aGlzIHdheSB3ZSBhdm9pZCBhbnkKKy8vIGN1
cnJlbnQgb3IgZnV0dXJlIGNvbGxpc2lvbiB3aXRoIG90aGVyIGZlYXR1cmVzIHN0b3JpbmcgZGF0
YSBpbiB0aGUKKy8vIGNsYXNzIHNjb3BlLgorI2RlZmluZSBJTlNUQU5DRV9DT01QVVRFRF9OQU1F
X1BSRUZJWCAiaW5zdGFuY2VDb21wdXRlZE5hbWUiCisKK3N0YXRpYyBTeW1ib2xJbXBsKiBnZXRP
ckNyZWF0ZVN5bWJvbEZvckNvbXB1dGVkTmFtZShWTSYgdm0sIHVuc2lnbmVkIGlkZW50aWZpZXIp
Cit7CisgICAgU3RyaW5nIHN5bWJvbE5hbWUgPSBtYWtlU3RyaW5nKElOU1RBTkNFX0NPTVBVVEVE
X05BTUVfUFJFRklYLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJvbCA9IFN5bWJvbDo6Y3Jl
YXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnByaXZhdGVTeW1ib2xGb3JLZXkoc3ltYm9sTmFt
ZSkpOworICAgIHJldHVybiAmc3ltYm9sLT51aWQoKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUcmVlQnVpbGRlciYgY29udGV4dCwg
RnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRy
ZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYsNyArMzAwOSw4IEBAIHBhcnNlTWV0aG9kOgog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsK
LSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgp
Lm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAg
ICAgICAgICAgICBhdXRvKiBzeW1ib2wgPSBnZXRPckNyZWF0ZVN5bWJvbEZvckNvbXB1dGVkTmFt
ZShtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVudCA9ICZt
X3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VJZGVudGlmaWVyKG1fdm0sIHN5bWJv
bCk7CiAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVz
dWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRp
b25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBj
bGFzc1Njb3BlLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDkxLDYg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmll
bGRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBudWxscHRyOwotICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5
TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmll
bGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAg
ICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CkBAIC0zMTAxLDE0ICszMTE0LDE2IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUluc3RhbmNlCiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6Cisg
ICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5
IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VU
LCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRl
bnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZp
ZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBhdXRvKiBzeW1ib2wg
PSBnZXRPckNyZWF0ZVN5bWJvbEZvckNvbXB1dGVkTmFtZShtX3ZtLCBudW1Db21wdXRlZEZpZWxk
cysrKTsKKyAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZUlkZW50aWZpZXIobV92bSwgc3ltYm9sKTsKICAgICAgICAgICAgIHR5cGUgPSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUg
JiBLZXl3b3JkVG9rZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGU0
NGMxYTM5Nzk0Yi4uNGQ2MTJlOWE5ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC03MDIsMTQgKzcwMiwxOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBtX2lzQXRvbWljID0gc3RyaW5nLmlzQXRvbSgpOwogICAgICAgICBtX2lzU3lt
Ym9sID0gc3RyaW5nLmlzU3ltYm9sKCk7CisgICAgICAgIG1faXNSZWdpc3RlcmVkID0gZmFsc2U7
CiAgICAgICAgIG1faXNXZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgbV9pc1ByaXZh
dGUgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBjb25zdF9jYXN0
PFN0cmluZ0ltcGwqPigmc3RyaW5nKTsKIAogICAgICAgICBpZiAobV9pc1N5bWJvbCkgewogICAg
ICAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGlt
cGwuZ2V0KCkpOworICAgICAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0
ZXJlZCgpOworICAgICAgICAgICAgbV9pc1ByaXZhdGUgPSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwog
ICAgICAgICAgICAgaWYgKCFzeW1ib2wtPmlzTnVsbFN5bWJvbCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB3ZWxsLWtub3duIHN5bWJvbHMuCi0g
ICAgICAgICAgICAgICAgaWYgKCFzeW1ib2wtPmlzUHJpdmF0ZSgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFtX2lzUHJpdmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2lzV2VsbEtub3du
U3ltYm9sID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgaW1wbCA9IHN5bWJvbC0+c3Vic3Ry
aW5nKHN0cmxlbigiU3ltYm9sLiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC03NDIsNyArNzQ2
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0ltcGw6OmFk
ZChidWZmZXIsIG1fbGVuZ3RoKS5sZWFrUmVmKCk7CiAKICAgICAgICAgICAgIFN5bWJvbEltcGwq
IHN5bWJvbDsKLSAgICAgICAgICAgIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQorICAgICAgICAg
ICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0cihidWZm
ZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbCogcmVn
aXN0ZXJlZFN5bWJvbDsKKyAgICAgICAgICAgICAgICBpZiAobV9pc1ByaXZhdGUpCisgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyZWRTeW1ib2wgPSBkZWNvZGVyLnZtKCkuc3ltYm9sUmVnaXN0
cnkoKS5wcml2YXRlU3ltYm9sRm9yS2V5KHN0cikucHRyKCk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkU3ltYm9sID0gZGVjb2Rlci52bSgpLnN5
bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cikucHRyKCk7CisgICAgICAgICAgICAgICAg
c3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KHJlZ2lzdGVyZWRTeW1ib2wpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQogICAgICAgICAgICAgICAg
IHN5bWJvbCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29r
VXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc3ltYm9sID0gZGVjb2Rlci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwgbV9sZW5ndGgpOwpAQCAtNzczLDYg
Kzc4NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3ltYm9sIDogMTsKICAgICBib29sIG1f
aXNXZWxsS25vd25TeW1ib2wgOiAxOwogICAgIGJvb2wgbV9pc0F0b21pYyA6IDE7CisgICAgYm9v
bCBtX2lzUmVnaXN0ZXJlZCA6IDE7CisgICAgYm9vbCBtX2lzUHJpdmF0ZSA6IDE7CiAgICAgdW5z
aWduZWQgbV9sZW5ndGg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdhYWI1ZGEzOTI3Yi4uN2Y1YjNjNzMxYjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTE5ICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNz
IGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0ZSBzeW1ib2xzIGZvciB0aGUgcHJvcGVy
dHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKKyAgICAgICAgY29tcHV0ZWQgbmFtZXMu
IFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1lcmljIGlkZW50aWZpZXJzIGFuZAor
ICAgICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRz
LiBJdCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVudGlhbCBjb2xsaXNpb25zIGlmIG90aGVy
IGZlYXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0aGUgY2xhc3MKKyAgICAgICAgc2NvcGUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5n
ZWQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6
UmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3Jl
YXRlIGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6cHJpdmF0ZVN5bWJvbEZv
cktleSk6IGFsbG93IHRoZSBTeW1ib2xSZWdpc3RyeSB0byBob2xkIHByaXZhdGUgc3ltYm9scy4K
KyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnJlbW92ZSk6IHJlbW92ZSBmcm9tIHRoZSBw
cml2YXRlIHN5bWJvbCB0YWJsZSB0b28uCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0
cnkuaDoKKwogMjAyMC0xMC0xOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCAtV2RlcHJlY2F0ZWQtY29weSB3YXJuaW5ncyBpbiBXVEYgYW5kIEphdmFT
Y3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAu
LmVhZGUwMTY0YmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3
OSwxMyBAQCBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpj
cmVhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJS
ZXAsIHN5bWJvbFJlZ2lzdHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xS
ZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1
ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVy
KCkgOiAmcmVwOworICAgIEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVm
ZmVyU3Vic3RyaW5nKTsKKyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgp
LCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJ
c1ByaXZhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1w
bChyZXAubV9kYXRhMTYsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwg
c19mbGFnSXNSZWdpc3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZj
NDk4Yjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lz
dHJ5ID0gbnVsbHB0cjsgfQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4g
Y3JlYXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVm
PFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3lt
Ym9sUmVnaXN0cnkmKTsKIAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJv
bFJlZ2lzdHJ5JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxl
bmd0aCwgV1RGTW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRT
eW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxT
dHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3Mg
PSBzX2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBs
ZW5ndGgsIFdURk1vdmUoYmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnko
JnJlZ2lzdHJ5KQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBi
YXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFy
YWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBS
ZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZs
YWdzIGZsYWdzID0gc19mbGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hh
cmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJv
bFJlZ2lzdHJ5KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5LmNwcAppbmRleCAwZDkwYTUxN2UzMjQuLmYzZmVmYjVhYjJiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKQEAgLTM0LDYgKzM0LDI0IEBAIFN5bWJvbFJl
Z2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQogICAgICAgICBBU1NFUlQoa2V5LmltcGwoKS0+aXNT
eW1ib2woKSk7CiAgICAgICAgIHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihrZXkuaW1wbCgpKS0+
YXNSZWdpc3RlcmVkU3ltYm9sSW1wbCgpLT5jbGVhclN5bWJvbFJlZ2lzdHJ5KCk7CiAgICAgfQor
CisgICAgZm9yIChhdXRvJiBrZXkgOiBtX3ByaXZhdGVUYWJsZSkgeworICAgICAgICBBU1NFUlQo
a2V5LmltcGwoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHN0YXRpY19jYXN0PFN5bWJvbEltcGwq
PihrZXkuaW1wbCgpKS0+YXNSZWdpc3RlcmVkU3ltYm9sSW1wbCgpLT5jbGVhclN5bWJvbFJlZ2lz
dHJ5KCk7CisgICAgfQorfQorCitSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFN5bWJvbFJlZ2lz
dHJ5Ojpwcml2YXRlU3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYgcmVwKQoreworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9wcml2YXRlVGFibGUuYWRkKFN5bWJvbFJlZ2lzdHJ5S2V5KHJlcC5pbXBs
KCkpKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVChh
ZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKS0+aXNTeW1ib2woKSk7CisgICAgICAgIHJldHVybiAq
c3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpKS0+YXNS
ZWdpc3RlcmVkU3ltYm9sSW1wbCgpOworICAgIH0KKworICAgIGF1dG8gc3ltYm9sID0gUmVnaXN0
ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUoKnJlcC5pbXBsKCksICp0aGlzKTsKKyAgICAq
YWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXkoJnN5bWJvbC5nZXQoKSk7Cisg
ICAgcmV0dXJuIHN5bWJvbDsKIH0KIAogUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xS
ZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYgcmVwKQpAQCAtNTEsMTAgKzY5LDE3
IEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktl
eShjb25zdCBTdHJpbmcmIHJlcCkKIAogdm9pZCBTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKFJlZ2lz
dGVyZWRTeW1ib2xJbXBsJiB1aWQpCiB7CisgICAgYXV0byByZW1vdmVTeW1ib2wgPSBbJl0gKEhh
c2hTZXQ8U3ltYm9sUmVnaXN0cnlLZXk+JiB0YWJsZSkgeworICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gdGFibGUuZmluZChTeW1ib2xSZWdpc3RyeUtleSgmdWlkKSk7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gdGFibGUuZW5kKCksICJUaGUgc3RyaW5nIGJlaW5nIHJl
bW92ZWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgc3RyaW5nIHRhYmxlIG9mIGFuIG90aGVyIHRocmVh
ZCEiKTsKKyAgICAgICAgdGFibGUucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB9OworCiAgICAgQVNT
RVJUKHVpZC5zeW1ib2xSZWdpc3RyeSgpID09IHRoaXMpOwotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3RhYmxlLmZpbmQoU3ltYm9sUmVnaXN0cnlLZXkoJnVpZCkpOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXRlcmF0b3IgIT0gbV90YWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcgYmVpbmcgcmVtb3Zl
ZCBpcyByZWdpc3RlcmVkIGluIHRoZSBzdHJpbmcgdGFibGUgb2YgYW4gb3RoZXIgdGhyZWFkISIp
OwotICAgIG1fdGFibGUucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICBpZiAoTElLRUxZKCF1aWQuaXNQ
cml2YXRlKCkpKQorICAgICAgICByZW1vdmVTeW1ib2wobV90YWJsZSk7CisgICAgZWxzZQorICAg
ICAgICByZW1vdmVTeW1ib2wobV9wcml2YXRlVGFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmgKaW5kZXggNTU4OTc5YWU4MTY1Li4zYzA2YTZlN2IyMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKQEAgLTgyLDExICs4MiwxMyBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TeW1ib2xSZWdpc3RyeSgpOwogCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0
IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbElt
cGw+IHByaXZhdGVTeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHJlbW92
ZShSZWdpc3RlcmVkU3ltYm9sSW1wbCYpOwogCiBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3ltYm9s
UmVnaXN0cnlLZXk+IG1fdGFibGU7CisgICAgSGFzaFNldDxTeW1ib2xSZWdpc3RyeUtleT4gbV9w
cml2YXRlVGFibGU7CiB9OwogCiBpbmxpbmUgU3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lz
dHJ5S2V5KFN0cmluZ0ltcGwqIHVpZCkKLS0gCjIuMjguMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411971</attachid>
            <date>2020-10-21 04:27:30 -0700</date>
            <delta_ts>2020-10-21 06:36:26 -0700</delta_ts>
            <desc>Use symbols as identifiers, v5</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>18052</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA5YzVhMmM2NzUxNGMzOWIwNDg2OTZjYTY5Nzg2Njk5ZjA1MWNmZWRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmg6CihKU0M6OlZNOjpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBhbGxvdyBw
cml2YXRlIHN5bWJvbHMgaW4gdGhlIHJlZ2lzdHJ5LgoKU291cmNlL1dURjoKCiogd3RmL3RleHQv
U3ltYm9sSW1wbC5jcHA6CihXVEY6OlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRl
KTogYWRkIGEgbWV0aG9kIHRvIGNyZWF0ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJv
bSBhIHN0cmluZyBrZXkuCiogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgoqIHd0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5LmNwcDoKKFdURjo6U3ltYm9sUmVnaXN0cnk6OnByaXZhdGVTeW1ib2xGb3JLZXkp
OiBhbGxvdyB0aGUgU3ltYm9sUmVnaXN0cnkgdG8gaG9sZCBwcml2YXRlIHN5bWJvbHMuCiogd3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrKysrCiAuLi4vYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwICB8ICA4ICsrKysrCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggICAgfCAgMSArCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgfCAyMSArKysrKysrKysrKy0tLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCAgICAgICAgICAgIHwgIDIgKysKIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysr
KysrCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwICAgICAgICAgICAgfCAgOSAr
KysrKysKIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oICAgICAgICAgICAgICB8ICA5
ICsrKy0tLQogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAgICAgICAgIHwg
IDQgKy0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmggICAgICAgICAgfCAg
MyArLQogMTIgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZlOWRmMzI3NzBkNS4uYThlMDAxMGMwM2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMC0yMSAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xz
IGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZh
dGUgc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRo
CisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcg
bnVtZXJpYyBpZGVudGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUg
d2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3Rl
bnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4g
dGhlIGNsYXNzCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBu
byBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZl
Q29tcHV0ZWRGaWVsZE5hbWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTog
dXNlIHByaXZhdGUgaWRlbnRpZmllcnMgZm9yIGNvbXB1dGVkIGZpZWxkcyBwcm9wZXJ0eSBrZXlz
LgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJB
cmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVu
dGlmaWVyKTogbWV0aG9kIHRvIGNyZWF0ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUpOiBj
b25zaWRlciByZWdpc3RlcmVkIHN5bWJvbHMsIHRoZXkgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBu
b3cuCisgICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZGVjb2RlIGNv
bnN0KTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KTogYWxsb3cgcHJpdmF0ZSBzeW1ib2xzIGluIHRoZSByZWdp
c3RyeS4KKwogMjAyMC0xMC0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBZGQgc2V0U2NyZWVuU2l6ZU92ZXJyaWRlIEFQSSB0byB0aGUgUGFn
ZSBhZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDVhZDg0OTgwODY0Yi4uYjBkZDU5NTg1NmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC04MDIsNyArODAyLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVk
RmllbGROYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9k
ZS5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVy
dHlFeHByOwogCi0gICAgLy8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJp
YyB2YXJpYWJsZSBuYW1lIGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9w
ZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVy
cyB0byBhIHN5bnRoZXRpYyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0
aGUgcHJvcGVydHkga2V5IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRp
ZmllciYgZGVzY3JpcHRpb24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBlMTkwZTY5MzY5OTUu
LjkxOTVlY2E2MWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtMjgzNyw2ICsyODM3LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVDbGFzc0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIGNsYXNzRXhwciwgY2xh
c3NTdGFydCwgY2xhc3NFbmQsIGNsYXNzU3RhcnRMaW5lLCBjbGFzc0VuZExpbmUpOwogfQogCisj
ZGVmaW5lIElOU1RBTkNFX0NPTVBVVEVEX05BTUVfUFJFRklYICJpbnN0YW5jZUNvbXB1dGVkTmFt
ZSIKKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVt
ZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYsNyAr
Mjk5OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
Y29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNl
ckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1D
b21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5h
LmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9D
T01QVVRFRF9OQU1FX1BSRUZJWCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFy
YXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJp
YWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwot
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAg
IERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFU
RU5BTUU6CkBAIC0zMTAxLDE0ICszMTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJS
QUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVy
dHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAg
ICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29t
cHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9O
QU1FX1BSRUZJWCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVm
aW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBl
ICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcx
OTg4NjI0MWQzLi5kNjNmNWQ2M2QxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXIm
IElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29u
c3QgSWRlCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVu
dGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIGNv
bnN0IGNoYXIqIHByZWZpeCwgdW5zaWduZWQgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgc3lt
Ym9sTmFtZSA9IG1ha2VTdHJpbmcocHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJv
bCA9IHZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lLCBX
VEY6OlN5bWJvbFJlZ2lzdHJ5OjpUeXBlOjpQcml2YXRlU3ltYm9sKTsKKyAgICBtX2lkZW50aWZp
ZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lk
ZW50aWZpZXJzLmxhc3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCmluZGV4IDhiYjlkNWViOTA5Mi4uMjM5NDQxMTNiYWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC01Miw2ICs1Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNp
bWFsSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91Ymxl
IG51bWJlcik7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmll
cihWTSYsIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGU0NGMxYTM5Nzk0
Yi4uMjQwZDQ0NzQ2YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC03MDIsMTQgKzcwMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2lzQXRvbWljID0gc3RyaW5nLmlzQXRvbSgpOwogICAgICAgICBtX2lzU3ltYm9sID0gc3Ry
aW5nLmlzU3ltYm9sKCk7CisgICAgICAgIG1faXNSZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAg
IG1faXNXZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgbV9pc1ByaXZhdGUgPSBmYWxz
ZTsKICAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBjb25zdF9jYXN0PFN0cmluZ0lt
cGwqPigmc3RyaW5nKTsKIAogICAgICAgICBpZiAobV9pc1N5bWJvbCkgewogICAgICAgICAgICAg
U3ltYm9sSW1wbCogc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGltcGwuZ2V0KCkp
OworICAgICAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0ZXJlZCgpOwor
ICAgICAgICAgICAgbV9pc1ByaXZhdGUgPSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwogICAgICAgICAg
ICAgaWYgKCFzeW1ib2wtPmlzTnVsbFN5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2Ug
aGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB3ZWxsLWtub3duIHN5bWJvbHMuCi0gICAgICAgICAg
ICAgICAgaWYgKCFzeW1ib2wtPmlzUHJpdmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2lzUHJpdmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2lzV2VsbEtub3duU3ltYm9sID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgaW1wbCA9IHN5bWJvbC0+c3Vic3RyaW5nKHN0cmxl
bigiU3ltYm9sLiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC03NDIsMTAgKzc0NiwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGQoYnVmZmVy
LCBtX2xlbmd0aCkubGVha1JlZigpOwogCiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2w7
Ci0gICAgICAgICAgICBpZiAobV9pc1dlbGxLbm93blN5bWJvbCkKLSAgICAgICAgICAgICAgICBz
eW1ib2wgPSBkZWNvZGVyLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1Vw
V2VsbEtub3duU3ltYm9sKGJ1ZmZlciwgbV9sZW5ndGgpOworICAgICAgICAgICAgVk0mIHZtID0g
ZGVjb2Rlci52bSgpOworICAgICAgICAgICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIHN0cihidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9pc1ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0
PFN5bWJvbEltcGwqPigmdm0ucHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0
ciwgV1RGOjpTeW1ib2xSZWdpc3RyeTo6VHlwZTo6UHJpdmF0ZVN5bWJvbCkubGVha1JlZigpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRp
Y19jYXN0PFN5bWJvbEltcGwqPigmdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3Ry
KS5sZWFrUmVmKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtub3duU3ltYm9s
KQorICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzeW1ib2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJvbDsKICAgICAg
ICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQoKTsKQEAgLTc3
Myw2ICs3ODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N5bWJvbCA6IDE7CiAgICAgYm9v
bCBtX2lzV2VsbEtub3duU3ltYm9sIDogMTsKICAgICBib29sIG1faXNBdG9taWMgOiAxOworICAg
IGJvb2wgbV9pc1JlZ2lzdGVyZWQgOiAxOworICAgIGJvb2wgbV9pc1ByaXZhdGUgOiAxOwogICAg
IHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggNDEyOTI0N2NkMjQ1Li45MjllMTUxYWM0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtNzMzLDYgKzczMyw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmdUYWJsZSog
bV9hdG9tU3RyaW5nVGFibGU7CiAgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3N5bWJvbFJlZ2lz
dHJ5OworICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9wcml2YXRlU3ltYm9sUmVnaXN0cnk7CiAg
ICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAgICAgY29uc3QgQXJnTGlzdCog
ZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0cmluZ3M7CkBAIC03NDQsNiArNzQ1
LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1RhYmxlKiBhdG9tU3RyaW5nVGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0
cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeTsgfQorICAgIFdU
Rjo6U3ltYm9sUmVnaXN0cnkmIHByaXZhdGVTeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fcHJp
dmF0ZVN5bWJvbFJlZ2lzdHJ5OyB9CiAKICAgICBTdHJvbmc8SlNCaWdJbnQ+IGhlYXBCaWdJbnRD
b25zdGFudE9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA2OWNiNGE2ZTgxODkuLjFjYjNlNDBhNmU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMC0xMC0yMSAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMg
Y29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtleXMg
b2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlz
IGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVudGlmaWVycyBhbmQKKyAgICAgICAg
d2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxz
byBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0dXJl
cyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNzCisgICAgICAgIHNjb3BlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgorCisg
ICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlJlZ2lzdGVy
ZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKTogYWRkIGEgbWV0aG9kIHRvIGNyZWF0ZSBhIHJl
Z2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJvbSBhIHN0cmluZyBrZXkuCisgICAgICAgICogd3Rm
L3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnByaXZhdGVTeW1ib2xGb3JLZXkpOiBh
bGxvdyB0aGUgU3ltYm9sUmVnaXN0cnkgdG8gaG9sZCBwcml2YXRlIHN5bWJvbHMuCisgICAgICAg
ICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKIDIwMjAtMTAtMTkgIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY4MTE1KSBbR1RLXSBC
dWlsZCBmYWlsdXJlcyB3aXRoIEdDQyA3IChVYnVudHUgMTguMDQpIGFuZCBHQ0MgOCAoRGViaWFu
IEJ1c3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCmluZGV4IDIxODk5ODk5ODgzMC4u
ZWFkZTAxNjRiZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAKQEAgLTc5LDQgKzc5
LDEzIEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNy
ZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJl
cCwgc3ltYm9sUmVnaXN0cnkpKTsKIH0KIAorUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBSZWdp
c3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJl
Z2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSkKK3sKKyAgICBhdXRvKiBvd25lclJlcCA9IChyZXAuYnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIo
KSA6ICZyZXA7CisgICAgQVNTRVJUKG93bmVyUmVwLT5idWZmZXJPd25lcnNoaXAoKSAhPSBCdWZm
ZXJTdWJzdHJpbmcpOworICAgIGlmIChyZXAuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGE4LCByZXAubGVuZ3RoKCks
ICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnksIHNfZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lz
UHJpdmF0ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBs
KHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lzdHJ5LCBz
X2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCmluZGV4IDYzMTBkYzU3M2NmNS4uNDc0NmM0
OThiNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaApAQCAtMTU2LDE1ICsxNTYsMTYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNsZWFyU3ltYm9sUmVnaXN0cnkoKSB7IG1fc3ltYm9sUmVnaXN0
cnkgPSBudWxscHRyOyB9CiAKICAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBj
cmVhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOworICAgIHN0YXRpYyBSZWY8
UmVnaXN0ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1i
b2xSZWdpc3RyeSYpOwogCi0gICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9s
UmVnaXN0cnkmIHJlZ2lzdHJ5KQotICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVu
Z3RoLCBXVEZNb3ZlKGJhc2UpLCBzX2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAgUmVnaXN0ZXJlZFN5
bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0
cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5LCBGbGFncyBmbGFncyA9
IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxl
bmd0aCwgV1RGTW92ZShiYXNlKSwgZmxhZ3MpCiAgICAgICAgICwgbV9zeW1ib2xSZWdpc3RyeSgm
cmVnaXN0cnkpCiAgICAgewogICAgIH0KIAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJh
Y3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJl
Z2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxh
Z3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFy
YWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9s
UmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuY3BwCmluZGV4IDBkOTBhNTE3ZTMyNC4uZThiZTVhZGM1OWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApAQCAtMzYsNyArMzYsNyBAQCBTeW1ib2xSZWdp
c3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKICAgICB9CiB9CiAKLVJlZjxSZWdpc3RlcmVkU3ltYm9s
SW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmIHJlcCkKK1Jl
ZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25z
dCBTdHJpbmcmIHJlcCwgVHlwZSB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YWJs
ZS5hZGQoU3ltYm9sUmVnaXN0cnlLZXkocmVwLmltcGwoKSkpOwogICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBs
PiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYgcmVwKQogICAgICAg
ICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihhZGRSZXN1bHQuaXRlcmF0b3ItPmlt
cGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsKICAgICB9CiAKLSAgICBhdXRvIHN5bWJv
bCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5pbXBsKCksICp0aGlzKTsKKyAg
ICBhdXRvIHN5bWJvbCA9IHR5cGUgPT0gVHlwZTo6UHJpdmF0ZVN5bWJvbCA/IFJlZ2lzdGVyZWRT
eW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKCpyZXAuaW1wbCgpLCAqdGhpcykgOiBSZWdpc3RlcmVk
U3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CiAgICAgKmFkZFJlc3VsdC5p
dGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KCZzeW1ib2wuZ2V0KCkpOwogICAgIHJldHVybiBz
eW1ib2w7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKaW5kZXggNTU4OTc5YWU4
MTY1Li43ZTQ4NDg5YjkxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKQEAg
LTc4LDEwICs3OCwxMSBAQCBjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnkpOwog
cHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7IFB1YmxpY1N5bWJvbCwgUHJpdmF0ZVN5bWJv
bCB9OwogICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8UmVn
aXN0ZXJlZFN5bWJvbEltcGw+IHN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBzeW1ib2xGb3JLZXkoY29u
c3QgU3RyaW5nJiwgVHlwZSA9IFR5cGU6OlB1YmxpY1N5bWJvbCk7CiAKICAgICB2b2lkIHJlbW92
ZShSZWdpc3RlcmVkU3ltYm9sSW1wbCYpOwogCi0tIAoyLjI4LjAKCg==
</data>
<flag name="commit-queue"
          id="428317"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411979</attachid>
            <date>2020-10-21 06:36:26 -0700</date>
            <delta_ts>2020-10-27 05:02:41 -0700</delta_ts>
            <desc>Use symbols as identifiers, v6</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>19040</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAwM2M0MDEwNDE0Mzk5OTA1NThkYzRmZDg0MWI1NDY4Yjc0YzkzNWY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBhbGxvdyBwcml2YXRlIHN5bWJvbHMgaW4gdGhlIHJl
Z2lzdHJ5LgoKU291cmNlL1dURjoKCiogd3RmL3RleHQvU3ltYm9sSW1wbC5jcHA6CihXVEY6OlJl
Z2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKTogYWRkIGEgbWV0aG9kIHRvIGNyZWF0
ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJvbSBhIHN0cmluZyBrZXkuCiogd3RmL3Rl
eHQvU3ltYm9sSW1wbC5oOgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDoKKFdURjo6U3lt
Ym9sUmVnaXN0cnk6OnN5bWJvbEZvcktleSk6IGNvbnNpZGVyIHRoYXQgd2UgY2FuIGhvbGQgcHJp
dmF0ZSBzeW1ib2xzIG5vdyB0b28uCiogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKKFdURjo6
U3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJlZ2lzdHJ5KTogbmV3IGVudW0gdHlwZSBmb3IgcHVibGlj
L3ByaXZhdGUgc3ltYm9scy4KLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgfCAzMSArKysrKysrKysrKysrKysrKysrCiAuLi4vYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0KIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8ICA4ICsrKystCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmggICAgICAgICAgfCAgNSArKysKIDEz
IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTlkZjMyNzcwZDUuLmMwMTliMDBiOWU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMTAtMjEgIFhhbiBMw7Nw
ZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVu
dGlmaWVycyBmb3IgY2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJv
bHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAg
ICBjb21wdXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMg
aWRlbnRpZmllcnMgYW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2Ug
YWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNv
bGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFz
cworICAgICAgICBzY29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rp
b25hbGl0eSB3YXMgY2hhbmdlZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVk
RmllbGROYW1lKTogYWRhcHQgYSBjb21tZW50LgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBwcml2
YXRlIGlkZW50aWZpZXJzIGZvciBjb21wdXRlZCBmaWVsZHMgcHJvcGVydHkga2V5cy4KKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVy
U291cmNlRWxlbWVudHMpOiBkaXR0by4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3Bw
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6
IG1ldGhvZCB0byBjcmVhdGUgYSBwcml2YXRlIGlkZW50aWZpZXIuCisgICAgICAgICogcGFyc2Vy
L1BhcnNlckFyZW5hLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAg
ICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5jb2RlKTogY29uc2lkZXIg
cmVnaXN0ZXJlZCBzeW1ib2xzLCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgbm93LgorICAg
ICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25zdCk6IGRp
dHRvLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnByaXZhdGVTeW1ib2xS
ZWdpc3RyeSk6IGFsbG93IHByaXZhdGUgc3ltYm9scyBpbiB0aGUgcmVnaXN0cnkuCisKIDIwMjAt
MTAtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgUGF2ZWwg
RmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIHNldFNjcmVlblNpemVPdmVycmlkZSBBUEkgdG8gdGhlIFBhZ2UgYWdlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApp
bmRleCA1YWQ4NDk4MDg2NGIuLmIwZGQ1OTU4NTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtODAyLDcgKzgwMiw3
IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBQCiAgICAgQVNTRVJUKG5vZGUuaXNDb21wdXRlZENs
YXNzRmllbGQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5RXhwcjsKIAotICAg
IC8vIFRoZSAnbmFtZScgcmVmZXJzIHRvIGEgc3ludGhldGljIG51bWVyaWMgdmFyaWFibGUgbmFt
ZSBpbiB0aGUgcHJpdmF0ZSBuYW1lIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5IGlzIHNh
dmVkIGZvciBsYXRlciB1c2UuCisgICAgLy8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0
aWMgcHJpdmF0ZSBuYW1lIGluIHRoZSBjbGFzcyBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtl
eSBpcyBzYXZlZCBmb3IgbGF0ZXIgdXNlLgogICAgIGNvbnN0IElkZW50aWZpZXImIGRlc2NyaXB0
aW9uID0gKm5vZGUubmFtZSgpOwogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShkZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKCF2YXIubG9jYWwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li45MTk1ZWNhNjFiYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4MzcsNiArMjgz
Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q2xhc3NEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIsIGNsYXNzU3RhcnQsIGNsYXNz
RW5kLCBjbGFzc1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0KIAorI2RlZmluZSBJTlNUQU5D
RV9DT01QVVRFRF9OQU1FX1BSRUZJWCAiaW5zdGFuY2VDb21wdXRlZE5hbWUiCisKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVD
bGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFBhcnNlckNs
YXNzSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8pCiB7CkBAIC0yOTk2LDcgKzI5OTgsNyBAQCBwYXJz
ZU1ldGhvZDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVy
dHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlm
aWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMr
Kyk7CisgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJl
bmEoKS5tYWtlUHJpdmF0ZUlkZW50aWZpZXIobV92bSwgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9Q
UkVGSVgsIG51bUNvbXB1dGVkRmllbGRzKyspOwogICAgICAgICAgICAgICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2Fs
VmFyaWFibGUoaWRlbnQsIHRydWUpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVj
bGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpW
YWxpZCk7CiAgICAgICAgICAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoaWRlbnQsIGZh
bHNlKTsKQEAgLTMwNzcsNyArMzA3OSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAKICAg
ICAgICAgSlNUb2tlbkxvY2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJlZUV4
cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5v
ZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dp
dGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgpAQCAtMzEw
MSwxNCArMzEwMiwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICAgICAgQVNT
RVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE9QRU5CUkFDS0VUOgorICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAg
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNl
QXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lv
biBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5v
dCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9k
dWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5
IG5hbWUiKTsKLSAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFy
ZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwor
ICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtl
UHJpdmF0ZUlkZW50aWZpZXIobV92bSwgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9QUkVGSVgsIG51
bUNvbXB1dGVkRmllbGRzKyspOwogICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6
VHlwZTo6Q29tcHV0ZWROYW1lOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tl
bkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IGM3MTk4ODYyNDFkMy4uZmM1
NWUxNzM3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmNwcApAQCAtMTA3LDQgKzEwNywxMiBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJl
bmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIHJl
dHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKIH0KIAorY29uc3QgSWRlbnRpZmllciYgSWRlbnRp
ZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBjaGFyKiBwcmVm
aXgsIHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJvbE5hbWUgPSBtYWtl
U3RyaW5nKHByZWZpeCwgaWRlbnRpZmllcik7CisgICAgYXV0byBzeW1ib2wgPSB2bS5wcml2YXRl
U3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7CisgICAgbV9pZGVudGlm
aWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAgICByZXR1cm4gbV9p
ZGVudGlmaWVycy5sYXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuaAppbmRleCA4YmI5ZDVlYjkwOTIuLjIzOTQ0MTEzYmFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNTIsNiArNTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlQmlnSW50RGVj
aW1hbElkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmllcihWTSYsIGRvdWJs
ZSBudW1iZXIpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlkZW50aWZp
ZXIoVk0mLCBjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogCiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgY29uc3QgaW50IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBlNDRjMWEzOTc5
NGIuLjU2MTljZGU0MTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtNzAyLDE0ICs3MDIsMTggQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgbV9pc0F0b21pYyA9IHN0cmluZy5pc0F0b20oKTsKICAgICAgICAgbV9pc1N5bWJvbCA9IHN0
cmluZy5pc1N5bWJvbCgpOworICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IGZhbHNlOwogICAgICAg
ICBtX2lzV2VsbEtub3duU3ltYm9sID0gZmFsc2U7CisgICAgICAgIG1faXNQcml2YXRlID0gZmFs
c2U7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsID0gY29uc3RfY2FzdDxTdHJpbmdJ
bXBsKj4oJnN0cmluZyk7CiAKICAgICAgICAgaWYgKG1faXNTeW1ib2wpIHsKICAgICAgICAgICAg
IFN5bWJvbEltcGwqIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihpbXBsLmdldCgp
KTsKKyAgICAgICAgICAgIG1faXNSZWdpc3RlcmVkID0gc3ltYm9sLT5pc1JlZ2lzdGVyZWQoKTsK
KyAgICAgICAgICAgIG1faXNQcml2YXRlID0gc3ltYm9sLT5pc1ByaXZhdGUoKTsKICAgICAgICAg
ICAgIGlmICghc3ltYm9sLT5pc051bGxTeW1ib2woKSkgewogICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgc3BlY2lhbCBoYW5kbGluZyBmb3Igd2VsbC1rbm93biBzeW1ib2xzLgotICAgICAgICAg
ICAgICAgIGlmICghc3ltYm9sLT5pc1ByaXZhdGUoKSkgeworICAgICAgICAgICAgICAgIGlmICgh
bV9pc1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGltcGwgPSBzeW1ib2wtPnN1YnN0cmluZyhzdHJs
ZW4oIlN5bWJvbC4iKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzQyLDEwICs3NDYsMTcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRkKGJ1ZmZl
ciwgbV9sZW5ndGgpLmxlYWtSZWYoKTsKIAogICAgICAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9s
OwotICAgICAgICAgICAgaWYgKG1faXNXZWxsS25vd25TeW1ib2wpCi0gICAgICAgICAgICAgICAg
c3ltYm9sID0gZGVjb2Rlci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tV
cFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9
IGRlY29kZXIudm0oKTsKKyAgICAgICAgICAgIGlmIChtX2lzUmVnaXN0ZXJlZCkgeworICAgICAg
ICAgICAgICAgIFN0cmluZyBzdHIoYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAgICAgICAgICAg
aWYgKG1faXNQcml2YXRlKQorICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBzdGF0aWNfY2Fz
dDxTeW1ib2xJbXBsKj4oJnZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShz
dHIpLmxlYWtSZWYoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4oJnZtLnN5bWJvbFJlZ2lzdHJ5KCku
c3ltYm9sRm9yS2V5KHN0cikubGVha1JlZigpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9p
c1dlbGxLbm93blN5bWJvbCkKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0
aCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3ltYm9sID0gZGVjb2Rlci52
bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZl
ciwgbV9sZW5ndGgpOworICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwgbV9sZW5ndGgpOwogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3ltYm9sKTsKICAgICAgICAgICAgIFN0cmluZyBzdHIg
PSBzeW1ib2w7CiAgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLnJlbGVhc2VJbXBs
KCkuZ2V0KCk7CkBAIC03NzMsNiArNzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTeW1i
b2wgOiAxOwogICAgIGJvb2wgbV9pc1dlbGxLbm93blN5bWJvbCA6IDE7CiAgICAgYm9vbCBtX2lz
QXRvbWljIDogMTsKKyAgICBib29sIG1faXNSZWdpc3RlcmVkIDogMTsKKyAgICBib29sIG1faXNQ
cml2YXRlIDogMTsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5YjY0NGY4ODkyZmIuLmMwOWY2ZjFmN2E4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzgwLDYgKzM4MCw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBi
b29sKiBzdWNjZXNzKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkK
ICAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRoaXMp
KQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCisgICAgLCBt
X3ByaXZhdGVTeW1ib2xSZWdpc3RyeShXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpUeXBlOjpQcml2YXRl
U3ltYm9sKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5l
dyBBcmdMaXN0KQogICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2Vs
aW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA0MTI5MjQ3Y2QyNDUuLjkyOWUxNTFhYzRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC03MzMsNiArNzMzLDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmlu
Z1RhYmxlKiBtX2F0b21TdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3lt
Ym9sUmVnaXN0cnk7CisgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3ByaXZhdGVTeW1ib2xSZWdp
c3RyeTsKICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBB
cmdMaXN0KiBlbXB0eUxpc3Q7CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTc0
NCw2ICs3NDUsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIGF0b21TdHJpbmdU
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbVN0cmluZ1RhYmxlOyB9CiAgICAgV1RGOjpTeW1i
b2xSZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9
CisgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSYgcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1
cm4gbV9wcml2YXRlU3ltYm9sUmVnaXN0cnk7IH0KIAogICAgIFN0cm9uZzxKU0JpZ0ludD4gaGVh
cEJpZ0ludENvbnN0YW50T25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY5Y2I0YTZlODE4OS4uMjI5ZmZjMmNkZTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTIxICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNz
IGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0ZSBzeW1ib2xzIGZvciB0aGUgcHJvcGVy
dHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKKyAgICAgICAgY29tcHV0ZWQgbmFtZXMu
IFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1lcmljIGlkZW50aWZpZXJzIGFuZAor
ICAgICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRz
LiBJdCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVudGlhbCBjb2xsaXNpb25zIGlmIG90aGVy
IGZlYXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0aGUgY2xhc3MKKyAgICAgICAgc2NvcGUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5n
ZWQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6
UmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3Jl
YXRlIGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTog
Y29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2YXRlIHN5bWJvbHMgbm93IHRvby4KKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdp
c3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMvcHJpdmF0ZSBz
eW1ib2xzLgorCiAyMDIwLTEwLTE5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjI2ODExNSkgW0dUS10gQnVpbGQgZmFpbHVyZXMgd2l0aCBH
Q0MgNyAoVWJ1bnR1IDE4LjA0KSBhbmQgR0NDIDggKERlYmlhbiBCdXN0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0YmYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBSZWY8UmVnaXN0ZXJl
ZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1wbCYgcmVw
LCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBs
KHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lzdHJ5KSk7
CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNy
ZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYgc3ltYm9sUmVnaXN0
cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1
ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwOworICAgIEFTU0VS
VChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKKyAgICBp
ZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVk
U3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJl
Z2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYsIHJlcC5s
ZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdpc3RlcmVkIHwg
c19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
bGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVsbHB0cjsgfQogCiAg
ICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0cmluZ0ltcGwmIHJl
cCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBs
PiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKIAotICAg
IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSkK
LSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwg
c19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5
bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lzdGVyZWQp
CisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSks
IGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAgIHsKICAg
ICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYg
cmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1v
dmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4m
JiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdzID0gc19mbGFnSXNS
ZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZN
b3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdpc3RyeSkK
ICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAppbmRleCAw
ZDkwYTUxN2UzMjQuLjViMGE1ZWYzNWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdp
c3RyeS5jcHAKQEAgLTQ0LDcgKzQ0LDEzIEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gU3lt
Ym9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmIHJlcCkKICAgICAgICAgcmV0
dXJuICpzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4oYWRkUmVzdWx0Lml0ZXJhdG9yLT5pbXBsKCkp
LT5hc1JlZ2lzdGVyZWRTeW1ib2xJbXBsKCk7CiAgICAgfQogCi0gICAgYXV0byBzeW1ib2wgPSBS
ZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisgICAgaWYg
KFVOTElLRUxZKCFtX2NyZWF0ZVN5bWJvbCkpIHsKKyAgICAgICAgaWYgKG1fc3ltYm9sVHlwZSA9
PSBUeXBlOjpQcml2YXRlU3ltYm9sKQorICAgICAgICAgICAgbV9jcmVhdGVTeW1ib2wgPSAmUmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fY3JlYXRlU3ltYm9sID0gJlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGU7CisgICAg
fQorICAgIGF1dG8gc3ltYm9sID0gbV9jcmVhdGVTeW1ib2woKnJlcC5pbXBsKCksICp0aGlzKTsK
ICAgICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXkoJnN5bWJvbC5nZXQo
KSk7CiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3ltYm9sUmVnaXN0cnkuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnku
aAppbmRleCA1NTg5NzlhZTgxNjUuLmI3OGMwNGM4ZTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3lt
Ym9sUmVnaXN0cnkuaApAQCAtNzgsNyArNzgsOSBAQCBjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3lt
Ym9sUmVnaXN0cnkpOwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7IFB1YmxpY1N5bWJv
bCwgUHJpdmF0ZVN5bWJvbCB9OwogICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworICAg
IFN5bWJvbFJlZ2lzdHJ5KFR5cGUgdHlwZSkgeyBtX3N5bWJvbFR5cGUgPSB0eXBlOyB9OwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKIAogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IHN5bWJvbEZvcktleShjb25zdCBTdHJp
bmcmKTsKQEAgLTg3LDYgKzg5LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhhc2hTZXQ8
U3ltYm9sUmVnaXN0cnlLZXk+IG1fdGFibGU7CisgICAgVHlwZSBtX3N5bWJvbFR5cGUgeyBUeXBl
OjpQdWJsaWNTeW1ib2wgfTsKKyAgICB0eXBlZGVmIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4g
KCpDcmVhdGVTeW1ib2wpKFN0cmluZ0ltcGwmLCBTeW1ib2xSZWdpc3RyeSYpOworICAgIENyZWF0
ZVN5bWJvbCBtX2NyZWF0ZVN5bWJvbCB7IG51bGxwdHIgfTsKIH07CiAKIGlubGluZSBTeW1ib2xS
ZWdpc3RyeUtleTo6U3ltYm9sUmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKQotLSAKMi4yOC4w
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412410</attachid>
            <date>2020-10-27 05:02:41 -0700</date>
            <delta_ts>2020-10-28 02:34:56 -0700</delta_ts>
            <desc>Use symbols as identifiers, v7</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21523</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhYmQ5YzYzZTY1NjYxMzA5ZmRkYzgyNjA3NDkxOTcwY2NlMWM4ZTRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDE3ICsrKysrKystLS0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAgICAgICB8IDEyICsrKystLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwICB8ICA4ICsrKysrCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggICAgfCAgMSArCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgfCAyMSArKysrKysrKysrLS0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgfCAgMSArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAgfCAgMiArKwogU291cmNlL1dU
Ri9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysK
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAgICAgICAgICAgICB8ICA5ICsrKysr
KwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggICAgICAgICAgICAgIHwgIDkgKysr
LS0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCAgICAgICAgfCAgOCAr
KysrLQogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oICAgICAgICAgIHwgIDUg
KysrCiAxMyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDI5OGI1ZGFiNzcyLi4xODFjZDBjNjdhNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTIxICBY
YW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMg
YXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0
ZSBzeW1ib2xzIGZvciB0aGUgcHJvcGVydHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgK
KyAgICAgICAgY29tcHV0ZWQgbmFtZXMuIFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBu
dW1lcmljIGlkZW50aWZpZXJzIGFuZAorICAgICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3
aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJdCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVu
dGlhbCBjb2xsaXNpb25zIGlmIG90aGVyIGZlYXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0
aGUgY2xhc3MKKyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5v
IGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFNhdmVD
b21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1
c2UgcHJpdmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMu
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0
aWFsaXplclNvdXJjZUVsZW1lbnRzKTogZGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFy
ZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50
aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0ZSBpZGVudGlmaWVyLgorICAgICAgICAq
IHBhcnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNv
bnNpZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5v
dy4KKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29u
c3QpOiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpwcml2YXRl
U3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3RyeSB0b28uCisK
IDIwMjAtMTAtMjYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUgY29tbWFuZCBsaW5lIEFQSSBzaG91bGQgYmUgZXhwb3Nl
ZCB0byBicmVha3BvaW50IGNvbmRpdGlvbnMvYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDVhZDg0OTgwODY0
Yi4uZjNmNDI5NzMyZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9kZS5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlFeHByOwogCi0gICAgLy8gVGhlICduYW1lJyBy
ZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJpYyB2YXJpYWJsZSBuYW1lIGluIHRoZSBwcml2YXRl
IG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVz
ZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRpYyBwcml2YXRlIG5hbWUg
aW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5IGlzIHNhdmVkIGZvciBs
YXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRpZmllciYgZGVzY3JpcHRpb24gPSAqbm9kZS5uYW1l
KCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGRlc2NyaXB0aW9uKTsK
ICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsKQEAgLTQ4MTcsMTMgKzQ4MTcsMjAgQEAgUmVnaXN0
ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQKIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGJvb2wgc2V0
RnVuY3Rpb25OYW1lID0gZmFsc2U7CiAKICAgICBpZiAoIW1fYXNzaWduKQogICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVsc2Ugewog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fYXNzaWduKTsKLSAgICAg
ICAgaWYgKG1faWRlbnQgJiYgZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0aW9uTmFtZShtX2Fzc2ln
bikpCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQo
KSwgKm1faWRlbnQpOworICAgICAgICBpZiAobV9pZGVudCAmJiBnZW5lcmF0b3Iuc2hvdWxkU2V0
RnVuY3Rpb25OYW1lKG1fYXNzaWduKSkgeworICAgICAgICAgICAgc2V0RnVuY3Rpb25OYW1lID0g
dHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbHJlYWR5IHNldCB0aGUgZnVuY3Rpb24gbmFt
ZSBoZXJlIHVubGVzcyB0aGlzCisgICAgICAgICAgICAvLyBpcyBhIGNvbXB1dGVkIGZpZWxkLCB3
aGVyZSB0aGUgYWN0dWFsIG5hbWUgb2YgdGhlIGZpZWxkCisgICAgICAgICAgICAvLyB3b24ndCBi
ZSByZXRyaWV2ZWQgdW50aWwgbGF0ZXIgb24uCisgICAgICAgICAgICBpZiAobV90eXBlICE9IERl
ZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lKQorICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0U2V0RnVuY3Rpb25OYW1lKHZhbHVlLmdldCgpLCAqbV9pZGVudCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewpAQCAtNDg1MCw3ICs0ODU3LDcgQEAg
dm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODMzMAogCiAgICAgICAgIC8vIEZvciBDb21wdXRlZE5hbWVzLCB0
aGUgZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBlYXJsaWVyIGR1cmluZyBl
dmFsdWF0aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KLSAgICAgICAgLy8gSGVyZSwgYG1faWRlbnRg
IHJlZmVycyB0byBhbiBpbnRlZ2VyIElEIGluIGEgY2xhc3MgbGV4aWNhbCBzY29wZSwgY29udGFp
bmluZyB0aGUgdmFsdWUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gRXhwcmVzc2lvbi4KKyAgICAg
ICAgLy8gSGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJvbCBJRCBpbiBhIGNs
YXNzIGxleGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVk
IHRvIGFuIEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZSgqbV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiQ29tcHV0ZWQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7
CiAKQEAgLTQ4NTgsNiArNDg2NSw4IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgIGlmIChzZXRGdW5jdGlvbk5hbWUpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNl
dEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRp
b24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24p
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCBlMTkwZTY5MzY5OTUuLjkxOTVlY2E2MWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjgzNyw2ICsyODM3LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVj
bGFyYXQKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0RlY2xTdGF0ZW1lbnQobG9jYXRp
b24sIGNsYXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNsYXNzU3RhcnRMaW5lLCBjbGFz
c0VuZExpbmUpOwogfQogCisjZGVmaW5lIElOU1RBTkNFX0NPTVBVVEVEX05BTUVfUFJFRklYICJp
bnN0YW5jZUNvbXB1dGVkTmFtZSIKKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVx
dWlyZW1lbnRzIHJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5m
bykKIHsKQEAgLTI5OTYsNyArMjk5OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAg
ICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRl
bnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVu
dCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmll
cihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgbnVtQ29tcHV0ZWRGaWVsZHMr
Kyk7CiAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVz
dWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRp
b25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBj
bGFzc1Njb3BlLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDc5LDYg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmll
bGRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBudWxscHRyOwotICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5
TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmll
bGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAg
ICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CkBAIC0zMTAxLDE0ICszMTAyLDE1IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUluc3RhbmNlCiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6Cisg
ICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5
IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VU
LCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRl
bnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZp
ZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZtX3Bh
cnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBJ
TlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAg
ICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
aWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBn
b3RvIG5hbWVkS2V5d29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJB
cmVuYS5jcHAKaW5kZXggYzcxOTg4NjI0MWQzLi5mYzU1ZTE3Mzc5YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC0xMDcsNCArMTA3LDEyIEBA
IGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVu
dGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgp
OwogfQogCitjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRl
bnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIHByZWZpeCwgdW5zaWduZWQgaWRlbnRpZmllcikK
K3sKKyAgICBTdHJpbmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJpbmcocHJlZml4LCBpZGVudGlmaWVy
KTsKKyAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZv
cktleShzeW1ib2xOYW1lKTsKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpm
cm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IDhiYjlk
NWViOTA5Mi4uMjM5NDQxMTNiYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYsIGNvbnN0
IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91YmxlIG51bWJlcik7CisgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYsIGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4aW11bUNh
Y2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IGZlYjRkNzFhNGQ4MC4uZjFkYzJmNzJmZTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC03MDIsMTQg
KzcwMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lzQXRvbWljID0gc3RyaW5nLmlz
QXRvbSgpOwogICAgICAgICBtX2lzU3ltYm9sID0gc3RyaW5nLmlzU3ltYm9sKCk7CisgICAgICAg
IG1faXNSZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAgIG1faXNXZWxsS25vd25TeW1ib2wgPSBm
YWxzZTsKKyAgICAgICAgbV9pc1ByaXZhdGUgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IGltcGwgPSBjb25zdF9jYXN0PFN0cmluZ0ltcGwqPigmc3RyaW5nKTsKIAogICAgICAg
ICBpZiAobV9pc1N5bWJvbCkgewogICAgICAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9sID0gc3Rh
dGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGltcGwuZ2V0KCkpOworICAgICAgICAgICAgbV9pc1JlZ2lz
dGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0ZXJlZCgpOworICAgICAgICAgICAgbV9pc1ByaXZhdGUg
PSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwogICAgICAgICAgICAgaWYgKCFzeW1ib2wtPmlzTnVsbFN5
bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGZv
ciB3ZWxsLWtub3duIHN5bWJvbHMuCi0gICAgICAgICAgICAgICAgaWYgKCFzeW1ib2wtPmlzUHJp
dmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2lzUHJpdmF0ZSkgewogICAgICAgICAg
ICAgICAgICAgICBtX2lzV2VsbEtub3duU3ltYm9sID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgaW1wbCA9IHN5bWJvbC0+c3Vic3RyaW5nKHN0cmxlbigiU3ltYm9sLiIpKTsKICAgICAgICAg
ICAgICAgICB9CkBAIC03NDIsMTAgKzc0NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGQoYnVmZmVyLCBtX2xlbmd0aCkubGVha1JlZigpOwog
CiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2w7Ci0gICAgICAgICAgICBpZiAobV9pc1dl
bGxLbm93blN5bWJvbCkKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3ltYm9sKGJ1ZmZlciwg
bV9sZW5ndGgpOworICAgICAgICAgICAgVk0mIHZtID0gZGVjb2Rlci52bSgpOworICAgICAgICAg
ICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0cihidWZm
ZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9pc1ByaXZhdGUpCisgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPigmdm0ucHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cikubGVha1JlZigpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5
bWJvbEltcGwqPigmdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3RyKS5sZWFrUmVm
KCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQorICAgICAg
ICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tV
cFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAgICAg
ICAgICAgc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwUHJp
dmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
eW1ib2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJvbDsKICAgICAgICAgICAgIFN0
cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQoKTsKQEAgLTc3Myw2ICs3ODQs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N5bWJvbCA6IDE7CiAgICAgYm9vbCBtX2lzV2Vs
bEtub3duU3ltYm9sIDogMTsKICAgICBib29sIG1faXNBdG9taWMgOiAxOworICAgIGJvb2wgbV9p
c1JlZ2lzdGVyZWQgOiAxOworICAgIGJvb2wgbV9pc1ByaXZhdGUgOiAxOwogICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGM5
NTFhMzhiY2I4NC4uNmQxMThiYWUwMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0zODIsNiArMzgyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCB0b3BD
YWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgZGVmZXJyZWRXb3JrVGltZXIo
RGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJs
ZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgp
IDogbmV3IEF0b21TdHJpbmdUYWJsZSkKKyAgICAsIG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KFdU
Rjo6U3ltYm9sUmVnaXN0cnk6OlR5cGU6OlByaXZhdGVTeW1ib2wpCiAgICAgLCBwcm9wZXJ0eU5h
bWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCiAgICAgLCBtYWNoaW5l
Q29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQobWFrZVVuaXF1ZTxTaW1wbGVT
dGF0cz4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDZlNzk5ZDQ1MmY1Ny4u
NzBjYTI3NmY4NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTczNiw2ICs3
MzYsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIG1fYXRvbVN0cmluZ1RhYmxl
OwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsKKyAgICBXVEY6OlN5
bWJvbFJlZ2lzdHJ5IG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OwogICAgIENvbW1vbklkZW50aWZp
ZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IEFyZ0xpc3QqIGVtcHR5TGlzdDsKICAgICBT
bWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtNzQ3LDYgKzc0OCw3IEBAIHB1YmxpYzoKIAog
ICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9h
dG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3Ry
eSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5
JiBwcml2YXRlU3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3ByaXZhdGVTeW1ib2xSZWdpc3Ry
eTsgfQogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29uc3RhbnRPbmU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNGEwNGYwNTIwYTcxLi5mMjM0YzQ2NzJiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAt
MTAtMjEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ug
c3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0
b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVs
ZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNp
bmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1i
ZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAg
ICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBk
YXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
c2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAoV1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3Jl
YXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZhdGUg
c3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwu
aDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6CisgICAgICAgIChXVEY6
OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRlciB0aGF0IHdlIGNhbiBob2xk
IHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5Lmg6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSk6IG5l
dyBlbnVtIHR5cGUgZm9yIHB1YmxpYy9wcml2YXRlIHN5bWJvbHMuCisKIDIwMjAtMTAtMTUgIFRh
ZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lnbiBNYWNyb0Fz
c2VtYmxlcjo6anVtcHNUb0xpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3lt
Ym9sSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCmluZGV4IDIx
ODk5ODk5ODgzMC4uZWFkZTAxNjRiZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N5bWJvbEltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAK
QEAgLTc5LDQgKzc5LDEzIEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5
bWJvbEltcGw6OmNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3Ro
KCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnkpKTsKIH0KIAorUmVmPFJlZ2lzdGVyZWRTeW1i
b2xJbXBsPiBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZShTdHJpbmdJbXBsJiBy
ZXAsIFN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSkKK3sKKyAgICBhdXRvKiBvd25lclJl
cCA9IChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC5zdWJz
dHJpbmdCdWZmZXIoKSA6ICZyZXA7CisgICAgQVNTRVJUKG93bmVyUmVwLT5idWZmZXJPd25lcnNo
aXAoKSAhPSBCdWZmZXJTdWJzdHJpbmcpOworICAgIGlmIChyZXAuaXM4Qml0KCkpCisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGE4LCBy
ZXAubGVuZ3RoKCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnksIHNfZmxhZ0lzUmVnaXN0ZXJl
ZCB8IHNfZmxhZ0lzUHJpdmF0ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJv
bFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJv
bEltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCmluZGV4IDYzMTBkYzU3
M2NmNS4uNDc0NmM0OThiNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJv
bEltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaApAQCAtMTU2LDE1
ICsxNTYsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyU3ltYm9sUmVnaXN0cnkoKSB7IG1f
c3ltYm9sUmVnaXN0cnkgPSBudWxscHRyOyB9CiAKICAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRT
eW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOworICAg
IHN0YXRpYyBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZVByaXZhdGUoU3RyaW5nSW1w
bCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOwogCi0gICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYg
YmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQotICAgICAgICA6IFN5bWJvbEltcGwoY2hh
cmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBzX2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAg
UmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5LCBG
bGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICAgICAgOiBTeW1ib2xJbXBsKGNo
YXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgZmxhZ3MpCiAgICAgICAgICwgbV9zeW1i
b2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAgIH0KIAotICAgIFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJp
bmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1i
b2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3Rl
cmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiBy
ZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAgICAgIDogU3lt
Ym9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIGZsYWdzKQogICAgICAg
ICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCmluZGV4IDBkOTBhNTE3ZTMyNC4uNWIwYTVlZjM1ZjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApAQCAtNDQsNyArNDQsMTMg
QEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5
KGNvbnN0IFN0cmluZyYgcmVwKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbElt
cGwqPihhZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwo
KTsKICAgICB9CiAKLSAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVh
dGUoKnJlcC5pbXBsKCksICp0aGlzKTsKKyAgICBpZiAoVU5MSUtFTFkoIW1fY3JlYXRlU3ltYm9s
KSkgeworICAgICAgICBpZiAobV9zeW1ib2xUeXBlID09IFR5cGU6OlByaXZhdGVTeW1ib2wpCisg
ICAgICAgICAgICBtX2NyZWF0ZVN5bWJvbCA9ICZSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRl
UHJpdmF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jcmVhdGVTeW1ib2wgPSAmUmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZTsKKyAgICB9CisgICAgYXV0byBzeW1ib2wgPSBtX2Ny
ZWF0ZVN5bWJvbCgqcmVwLmltcGwoKSwgKnRoaXMpOwogICAgICphZGRSZXN1bHQuaXRlcmF0b3Ig
PSBTeW1ib2xSZWdpc3RyeUtleSgmc3ltYm9sLmdldCgpKTsKICAgICByZXR1cm4gc3ltYm9sOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1ODk3OWFlODE2NS4uYjc4
YzA0YzhlMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCkBAIC03OCw3ICs3
OCw5IEBAIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7CiBwdWJsaWM6Cisg
ICAgZW51bSBjbGFzcyBUeXBlIHsgUHVibGljU3ltYm9sLCBQcml2YXRlU3ltYm9sIH07CiAgICAg
U3ltYm9sUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisgICAgU3ltYm9sUmVnaXN0cnkoVHlwZSB0eXBl
KSB7IG1fc3ltYm9sVHlwZSA9IHR5cGU7IH07CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TeW1i
b2xSZWdpc3RyeSgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxSZWdpc3RlcmVkU3lt
Ym9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYpOwpAQCAtODcsNiArODksOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTeW1ib2xSZWdpc3RyeUtleT4gbV90YWJs
ZTsKKyAgICBUeXBlIG1fc3ltYm9sVHlwZSB7IFR5cGU6OlB1YmxpY1N5bWJvbCB9OworICAgIHR5
cGVkZWYgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiAoKkNyZWF0ZVN5bWJvbCkoU3RyaW5nSW1w
bCYsIFN5bWJvbFJlZ2lzdHJ5Jik7CisgICAgQ3JlYXRlU3ltYm9sIG1fY3JlYXRlU3ltYm9sIHsg
bnVsbHB0ciB9OwogfTsKIAogaW5saW5lIFN5bWJvbFJlZ2lzdHJ5S2V5OjpTeW1ib2xSZWdpc3Ry
eUtleShTdHJpbmdJbXBsKiB1aWQpCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412513</attachid>
            <date>2020-10-28 02:34:56 -0700</date>
            <delta_ts>2020-11-09 02:12:44 -0800</delta_ts>
            <desc>Use symbols as identifiers, v8</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21196</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA1MDE5ZjA5NTk3ZThjNWU3YzFhODZhM2U5NTAwMmVjODJiNjAyY2UwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8ICA4ICsrKyst
CiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmggICAgICAgICAgfCAgNSArKysK
IDEzIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0N2JjZjhiZGE2MGYuLjcwNzg2NDExMDYxYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMTAtMjEgIFhhbiBM
w7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBp
ZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAg
ICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVy
aWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4g
d2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFs
IGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBj
bGFzcworICAgICAgICBzY29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVu
Y3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1
dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21tZW50LgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBw
cml2YXRlIGlkZW50aWZpZXJzIGZvciBjb21wdXRlZCBmaWVsZHMgcHJvcGVydHkga2V5cy4KKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmll
cik6IG1ldGhvZCB0byBjcmVhdGUgYSBwcml2YXRlIGlkZW50aWZpZXIuCisgICAgICAgICogcGFy
c2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5jb2RlKTogY29uc2lk
ZXIgcmVnaXN0ZXJlZCBzeW1ib2xzLCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgbm93Lgor
ICAgICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25zdCk6
IGRpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnByaXZhdGVTeW1i
b2xSZWdpc3RyeSk6IGNyZWF0ZSBhIHByaXZhdGUgc3ltYm9sIHJlZ2lzdHJ5IHRvby4KKwogMjAy
MC0xMC0yNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAg
ICAgICAtV3BhcmVudGhlc2VzIHdhcm5pbmcgaW4gT3B0aW9uc0xpc3QuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDVh
ZDg0OTgwODY0Yi4uMWUyNWQ4ZGMwZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9p
ZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9kZS5pc0NvbXB1dGVkQ2xhc3NGaWVs
ZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlFeHByOwogCi0gICAgLy8gVGhl
ICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJpYyB2YXJpYWJsZSBuYW1lIGluIHRo
ZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9y
IGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRpYyBwcml2
YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5IGlzIHNh
dmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRpZmllciYgZGVzY3JpcHRpb24gPSAq
bm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGRlc2Ny
aXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsKQEAgLTQ4MTcsMTIgKzQ4MTcsMTQg
QEAgUmVnaXN0ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
IGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZmFsc2U7CiAKICAgICBpZiAoIW1fYXNzaWdu
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkp
OwogICAgIGVsc2UgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1f
YXNzaWduKTsKLSAgICAgICAgaWYgKG1faWRlbnQgJiYgZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0
aW9uTmFtZShtX2Fzc2lnbikpCisgICAgICAgIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVy
YXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobV9hc3NpZ24pOworICAgICAgICBpZiAobV9pZGVu
dCAmJiBzaG91bGRTZXRGdW5jdGlvbk5hbWUgJiYgbV90eXBlICE9IERlZmluZUZpZWxkTm9kZTo6
VHlwZTo6Q29tcHV0ZWROYW1lKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlv
bk5hbWUodmFsdWUuZ2V0KCksICptX2lkZW50KTsKICAgICB9CiAKQEAgLTQ4NTAsNyArNDg1Miw3
IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAKIAogICAgICAgICAvLyBGb3IgQ29tcHV0ZWROYW1l
cywgdGhlIGV4cHJlc3Npb24gaGFzIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgZWFybGllciBkdXJp
bmcgZXZhbHVhdGlvbiBvZiBhIENsYXNzRXhwck5vZGUuCi0gICAgICAgIC8vIEhlcmUsIGBtX2lk
ZW50YCByZWZlcnMgdG8gYW4gaW50ZWdlciBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2NvcGUsIGNv
bnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Npb24uCisg
ICAgICAgIC8vIEhlcmUsIGBtX2lkZW50YCByZWZlcnMgdG8gcHJpdmF0ZSBzeW1ib2wgSUQgaW4g
YSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1ZSBhbHJlYWR5IGNvbnZl
cnRlZCB0byBhbiBFeHByZXNzaW9uLgogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoKm1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9j
YWwoKSwgIkNvbXB1dGVkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxl
cyIpOwogCkBAIC00ODU4LDYgKzQ4NjAsOCBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShu
dWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNj
b3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQp
OworICAgICAgICBpZiAoc2hvdWxkU2V0RnVuY3Rpb25OYW1lKQorICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRTZXRGdW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFy
LCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCks
IHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNv
ZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlBy
b3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBt
X3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li45MTk1ZWNhNjFiYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4MzcsNiArMjgzNyw4IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNsU3RhdGVt
ZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIsIGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFzc1N0YXJ0
TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0KIAorI2RlZmluZSBJTlNUQU5DRV9DT01QVVRFRF9OQU1F
X1BSRUZJWCAiaW5zdGFuY2VDb21wdXRlZE5hbWUiCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0
aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVp
bGRlcj4mIGluZm8pCiB7CkBAIC0yOTk2LDcgKzI5OTgsNyBAQCBwYXJzZU1ldGhvZDoKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtl
TnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAgICAg
ICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlUHJpdmF0
ZUlkZW50aWZpZXIobV92bSwgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9QUkVGSVgsIG51bUNvbXB1
dGVkRmllbGRzKyspOwogICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoaWRlbnQs
IHRydWUpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQs
IGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CiAgICAgICAg
ICAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKQEAgLTMwNzcs
NyArMzA3OSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAKICAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0
ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9
IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1f
dHlwZSkgewogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgpAQCAtMzEwMSwxNCArMzEwMiwxNSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAg
ICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9QRU5C
UkFDS0VUOgorICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgICAgICBuZXh0KCk7
Ci0gICAgICAgICAgICBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3Bl
cnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRl
ZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENM
T1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKLSAgICAg
ICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVy
aWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOworICAgICAgICAgICAgaWRl
bnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlUHJpdmF0ZUlkZW50aWZp
ZXIobV92bSwgSU5TVEFOQ0VfQ09NUFVURURfTkFNRV9QUkVGSVgsIG51bUNvbXB1dGVkRmllbGRz
KyspOwogICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWRO
YW1lOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAgICAg
ICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IGM3MTk4ODYyNDFkMy4uZmM1NWUxNzM3OWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtMTA3LDQg
KzEwNywxMiBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnRE
ZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIHJldHVybiBtX2lkZW50aWZp
ZXJzLmxhc3QoKTsKIH0KIAorY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtl
UHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBjaGFyKiBwcmVmaXgsIHVuc2lnbmVkIGlk
ZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJvbE5hbWUgPSBtYWtlU3RyaW5nKHByZWZpeCwg
aWRlbnRpZmllcik7CisgICAgYXV0byBzeW1ib2wgPSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnko
KS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7CisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRl
bnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApp
bmRleCA4YmI5ZDVlYjkwOTIuLjIzOTQ0MTEzYmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIo
Vk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmllcihWTSYsIGRvdWJsZSBudW1iZXIpOworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQpOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50
IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBmZWI0ZDcxYTRkODAuLmYxZGMyZjcyZmU4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApA
QCAtNzAyLDE0ICs3MDIsMTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc0F0b21pYyA9
IHN0cmluZy5pc0F0b20oKTsKICAgICAgICAgbV9pc1N5bWJvbCA9IHN0cmluZy5pc1N5bWJvbCgp
OworICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IGZhbHNlOwogICAgICAgICBtX2lzV2VsbEtub3du
U3ltYm9sID0gZmFsc2U7CisgICAgICAgIG1faXNQcml2YXRlID0gZmFsc2U7CiAgICAgICAgIFJl
ZlB0cjxTdHJpbmdJbXBsPiBpbXBsID0gY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oJnN0cmluZyk7
CiAKICAgICAgICAgaWYgKG1faXNTeW1ib2wpIHsKICAgICAgICAgICAgIFN5bWJvbEltcGwqIHN5
bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihpbXBsLmdldCgpKTsKKyAgICAgICAgICAg
IG1faXNSZWdpc3RlcmVkID0gc3ltYm9sLT5pc1JlZ2lzdGVyZWQoKTsKKyAgICAgICAgICAgIG1f
aXNQcml2YXRlID0gc3ltYm9sLT5pc1ByaXZhdGUoKTsKICAgICAgICAgICAgIGlmICghc3ltYm9s
LT5pc051bGxTeW1ib2woKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgc3BlY2lhbCBo
YW5kbGluZyBmb3Igd2VsbC1rbm93biBzeW1ib2xzLgotICAgICAgICAgICAgICAgIGlmICghc3lt
Ym9sLT5pc1ByaXZhdGUoKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9pc1ByaXZhdGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIGltcGwgPSBzeW1ib2wtPnN1YnN0cmluZyhzdHJsZW4oIlN5bWJvbC4iKSk7
CiAgICAgICAgICAgICAgICAgfQpAQCAtNzQyLDEwICs3NDYsMTcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRkKGJ1ZmZlciwgbV9sZW5ndGgpLmxl
YWtSZWYoKTsKIAogICAgICAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9sOwotICAgICAgICAgICAg
aWYgKG1faXNXZWxsS25vd25TeW1ib2wpCi0gICAgICAgICAgICAgICAgc3ltYm9sID0gZGVjb2Rl
ci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJv
bChidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGRlY29kZXIudm0oKTsK
KyAgICAgICAgICAgIGlmIChtX2lzUmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgICAgIFN0cmlu
ZyBzdHIoYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKG1faXNQcml2YXRl
KQorICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4o
JnZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHIpLmxlYWtSZWYoKSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBzdGF0
aWNfY2FzdDxTeW1ib2xJbXBsKj4oJnZtLnN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0
cikubGVha1JlZigpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9pc1dlbGxLbm93blN5bWJv
bCkKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgc3ltYm9sID0gZGVjb2Rlci52bSgpLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwgbV9sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwgbV9sZW5ndGgpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3ltYm9sKTsKICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBzeW1ib2w7CiAgICAg
ICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLnJlbGVhc2VJbXBsKCkuZ2V0KCk7CkBAIC03
NzMsNiArNzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTeW1ib2wgOiAxOwogICAgIGJv
b2wgbV9pc1dlbGxLbm93blN5bWJvbCA6IDE7CiAgICAgYm9vbCBtX2lzQXRvbWljIDogMTsKKyAg
ICBib29sIG1faXNSZWdpc3RlcmVkIDogMTsKKyAgICBib29sIG1faXNQcml2YXRlIDogMTsKICAg
ICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBjOTUxYTM4YmNiODQuLjZkMTE4YmFlMDA5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtMzgyLDYgKzM4Miw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQog
ICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIGRlZmVycmVk
V29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9hdG9t
U3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3Ry
aW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCisgICAgLCBtX3ByaXZhdGVTeW1ib2xS
ZWdpc3RyeShXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpUeXBlOjpQcml2YXRlU3ltYm9sKQogICAgICwg
cHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQogICAg
ICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlx
dWU8U2ltcGxlU3RhdHM+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA2ZTc5
OWQ0NTJmNTcuLjcwY2EyNzZmODcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC03MzYsNiArNzM2LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1RhYmxlKiBtX2F0b21T
dHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7Cisg
ICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3ByaXZhdGVTeW1ib2xSZWdpc3RyeTsKICAgICBDb21t
b25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBBcmdMaXN0KiBlbXB0eUxp
c3Q7CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTc0Nyw2ICs3NDgsNyBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIGF0b21TdHJpbmdUYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXRvbVN0cmluZ1RhYmxlOyB9CiAgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSYgc3lt
Ym9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9CisgICAgV1RGOjpTeW1i
b2xSZWdpc3RyeSYgcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9wcml2YXRlU3lt
Ym9sUmVnaXN0cnk7IH0KIAogICAgIFN0cm9uZzxKU0JpZ0ludD4gaGVhcEJpZ0ludENvbnN0YW50
T25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDVhOTAyOGIwNmFhMC4uNmRhYjg5ZjI4YTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIwLTEwLTIxICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBjb21wdXRl
ZCBuYW1lcyBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgcHJpdmF0ZSBzeW1ib2xzIGZvciB0aGUgcHJvcGVydHkga2V5cyBvZiB0aGUg
Y2xhc3MgZmllbGRzIHdpdGgKKyAgICAgICAgY29tcHV0ZWQgbmFtZXMuIFRoaXMgaXMgY2xlYW5l
ciB0aGFuIHVzaW5nIHJhdyBudW1lcmljIGlkZW50aWZpZXJzIGFuZAorICAgICAgICB3aWxsIGJl
IGxlc3MgY3VtYmVyc29tZSB3aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJdCBhbHNvIHByZXZl
bnRzCisgICAgICAgIHBvdGVudGlhbCBjb2xsaXNpb25zIGlmIG90aGVyIGZlYXR1cmVzIHdhbnQg
dG8gc3RvcmUgZGF0YSBpbiB0aGUgY2xhc3MKKyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIHNpbmNlIG5vIGZ1bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6UmVnaXN0ZXJlZFN5bWJv
bEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRlIGEgcmVnaXN0ZXJl
ZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKyAgICAgICAgKiB3dGYvdGV4dC9T
eW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3
ZSBjYW4gaG9sZCBwcml2YXRlIHN5bWJvbHMgbm93IHRvby4KKyAgICAgICAgKiB3dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVn
aXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMvcHJpdmF0ZSBzeW1ib2xzLgorCiAyMDIw
LTEwLTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IHRoZSBVSVBvaW50ZXJJbnRlcmFjdGlvbiBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbElt
cGwuY3BwCmluZGV4IDIxODk5ODk5ODgzMC4uZWFkZTAxNjRiZjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5jcHAKQEAgLTc5LDQgKzc5LDEzIEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1w
bD4gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJl
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0
YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnkpKTsKIH0KIAorUmVm
PFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0
ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSkKK3sKKyAg
ICBhdXRvKiBvd25lclJlcCA9IChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXA7CisgICAgQVNTRVJUKG93bmVyUmVw
LT5idWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJTdWJzdHJpbmcpOworICAgIGlmIChyZXAuaXM4
Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBs
KHJlcC5tX2RhdGE4LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnksIHNf
ZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lzUHJpdmF0ZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAq
b3duZXJSZXAsIHN5bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1By
aXZhdGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5o
CmluZGV4IDYzMTBkYzU3M2NmNS4uNDc0NmM0OThiNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbEltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbElt
cGwuaApAQCAtMTU2LDE1ICsxNTYsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyU3ltYm9s
UmVnaXN0cnkoKSB7IG1fc3ltYm9sUmVnaXN0cnkgPSBudWxscHRyOyB9CiAKICAgICBzdGF0aWMg
UmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xS
ZWdpc3RyeSYpOworICAgIHN0YXRpYyBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZVBy
aXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOwogCi0gICAgUmVnaXN0ZXJl
ZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVm
PFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQotICAgICAgICA6
IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBzX2ZsYWdJc1Jl
Z2lzdGVyZWQpCisgICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0
cnkmIHJlZ2lzdHJ5LCBGbGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICAgICAg
OiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgZmxhZ3MpCiAg
ICAgICAgICwgbV9zeW1ib2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAgIH0KIAotICAg
IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSkK
LSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwg
c19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5
bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lzdGVyZWQp
CisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSks
IGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCmluZGV4IDBkOTBhNTE3ZTMy
NC4uNWIwYTVlZjM1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApA
QCAtNDQsNyArNDQsMTMgQEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3Ry
eTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYgcmVwKQogICAgICAgICByZXR1cm4gKnN0YXRp
Y19jYXN0PFN5bWJvbEltcGwqPihhZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0
ZXJlZFN5bWJvbEltcGwoKTsKICAgICB9CiAKLSAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRT
eW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5pbXBsKCksICp0aGlzKTsKKyAgICBpZiAoVU5MSUtFTFko
IW1fY3JlYXRlU3ltYm9sKSkgeworICAgICAgICBpZiAobV9zeW1ib2xUeXBlID09IFR5cGU6OlBy
aXZhdGVTeW1ib2wpCisgICAgICAgICAgICBtX2NyZWF0ZVN5bWJvbCA9ICZSZWdpc3RlcmVkU3lt
Ym9sSW1wbDo6Y3JlYXRlUHJpdmF0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jcmVh
dGVTeW1ib2wgPSAmUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZTsKKyAgICB9CisgICAgYXV0
byBzeW1ib2wgPSBtX2NyZWF0ZVN5bWJvbCgqcmVwLmltcGwoKSwgKnRoaXMpOwogICAgICphZGRS
ZXN1bHQuaXRlcmF0b3IgPSBTeW1ib2xSZWdpc3RyeUtleSgmc3ltYm9sLmdldCgpKTsKICAgICBy
ZXR1cm4gc3ltYm9sOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xS
ZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1
ODk3OWFlODE2NS4uYjc4YzA0YzhlMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oCkBAIC03OCw3ICs3OCw5IEBAIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3Ry
eSk7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsgUHVibGljU3ltYm9sLCBQcml2YXRl
U3ltYm9sIH07CiAgICAgU3ltYm9sUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisgICAgU3ltYm9sUmVn
aXN0cnkoVHlwZSB0eXBlKSB7IG1fc3ltYm9sVHlwZSA9IHR5cGU7IH07CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5TeW1ib2xSZWdpc3RyeSgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYpOwpAQCAt
ODcsNiArODksOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTeW1ib2xSZWdp
c3RyeUtleT4gbV90YWJsZTsKKyAgICBUeXBlIG1fc3ltYm9sVHlwZSB7IFR5cGU6OlB1YmxpY1N5
bWJvbCB9OworICAgIHR5cGVkZWYgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiAoKkNyZWF0ZVN5
bWJvbCkoU3RyaW5nSW1wbCYsIFN5bWJvbFJlZ2lzdHJ5Jik7CisgICAgQ3JlYXRlU3ltYm9sIG1f
Y3JlYXRlU3ltYm9sIHsgbnVsbHB0ciB9OwogfTsKIAogaW5saW5lIFN5bWJvbFJlZ2lzdHJ5S2V5
OjpTeW1ib2xSZWdpc3RyeUtleShTdHJpbmdJbXBsKiB1aWQpCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413571</attachid>
            <date>2020-11-09 02:12:44 -0800</date>
            <delta_ts>2020-11-09 03:34:07 -0800</delta_ts>
            <desc>Use symbols as identifiers, v9</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21355</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhNzAxNThjOTNiNGQxYmYzOWJkNWQyYTk0ODQyYjAwNWFiOTA5Yjg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8IDExICsrKysr
Ky0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICAzICsr
CiAxMyBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNGJiMTAxMzQ5OTY5Li4yYjY1MGZhZWQxNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTIxICBYYW4g
TMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMg
aWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0ZSBz
eW1ib2xzIGZvciB0aGUgcHJvcGVydHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKKyAg
ICAgICAgY29tcHV0ZWQgbmFtZXMuIFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1l
cmljIGlkZW50aWZpZXJzIGFuZAorICAgICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVu
IHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJdCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVudGlh
bCBjb2xsaXNpb25zIGlmIG90aGVyIGZlYXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0aGUg
Y2xhc3MKKyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGZ1
bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFNhdmVDb21w
dXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2Ug
cHJpdmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFs
aXplclNvdXJjZUVsZW1lbnRzKTogZGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
LmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZp
ZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0ZSBpZGVudGlmaWVyLgorICAgICAgICAqIHBh
cnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3Qp
OiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpwcml2YXRlU3lt
Ym9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3RyeSB0b28uCisKIDIw
MjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBBZGQgVGltZVpvbmUgcmFuZ2UgY2FjaGUgb3ZlciBJQ1UgVGltZVpvbmUgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggNWFkODQ5ODA4NjRiLi4xZTI1ZDhkYzBlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTgwMiw3ICs4MDIs
NyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUAogICAgIEFTU0VSVChub2RlLmlzQ29tcHV0ZWRD
bGFzc0ZpZWxkKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eUV4cHI7CiAKLSAg
ICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRpYyBudW1lcmljIHZhcmlhYmxlIG5h
bWUgaW4gdGhlIHByaXZhdGUgbmFtZSBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtleSBpcyBz
YXZlZCBmb3IgbGF0ZXIgdXNlLgorICAgIC8vIFRoZSAnbmFtZScgcmVmZXJzIHRvIGEgc3ludGhl
dGljIHByaXZhdGUgbmFtZSBpbiB0aGUgY2xhc3Mgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBr
ZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KICAgICBjb25zdCBJZGVudGlmaWVyJiBkZXNjcmlw
dGlvbiA9ICpub2RlLm5hbWUoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoZGVzY3JpcHRpb24pOwogICAgIEFTU0VSVCghdmFyLmxvY2FsKCkpOwpAQCAtNDgxNywxMiAr
NDgxNywxNCBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogdm9pZCBEZWZpbmVGaWVsZE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBmYWxzZTsKIAogICAgIGlmICgh
bV9hc3NpZ24pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRl
ZmluZWQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5n
ZXQoKSwgbV9hc3NpZ24pOwotICAgICAgICBpZiAobV9pZGVudCAmJiBnZW5lcmF0b3Iuc2hvdWxk
U2V0RnVuY3Rpb25OYW1lKG1fYXNzaWduKSkKKyAgICAgICAgc2hvdWxkU2V0RnVuY3Rpb25OYW1l
ID0gZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0aW9uTmFtZShtX2Fzc2lnbik7CisgICAgICAgIGlm
IChtX2lkZW50ICYmIHNob3VsZFNldEZ1bmN0aW9uTmFtZSAmJiBtX3R5cGUgIT0gRGVmaW5lRmll
bGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWUpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNl
dEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgKm1faWRlbnQpOwogICAgIH0KIApAQCAtNDg1MCw3
ICs0ODUyLDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMAogCiAgICAgICAgIC8vIEZvciBDb21w
dXRlZE5hbWVzLCB0aGUgZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBlYXJs
aWVyIGR1cmluZyBldmFsdWF0aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KLSAgICAgICAgLy8gSGVy
ZSwgYG1faWRlbnRgIHJlZmVycyB0byBhbiBpbnRlZ2VyIElEIGluIGEgY2xhc3MgbGV4aWNhbCBz
Y29wZSwgY29udGFpbmluZyB0aGUgdmFsdWUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gRXhwcmVz
c2lvbi4KKyAgICAgICAgLy8gSGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJv
bCBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVh
ZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQg
dmFyaWFibGVzIik7CiAKQEAgLTQ4NTgsNiArNDg2MCw4IEBAIHZvaWQgRGVmaW5lRmllbGROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRl
TmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRH
ZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisgICAgICAgIGlmIChzaG91bGRTZXRGdW5jdGlvbk5hbWUpCisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdl
dCgpLCB2YXIsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1l
cmFibGUsIG1fcG9zaXRpb24pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCBlMTkwZTY5MzY5OTUuLjkxOTVlY2E2MWJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjgzNyw2ICsyODM3LDggQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0Rl
Y2xTdGF0ZW1lbnQobG9jYXRpb24sIGNsYXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNs
YXNzU3RhcnRMaW5lLCBjbGFzc0VuZExpbmUpOwogfQogCisjZGVmaW5lIElOU1RBTkNFX0NPTVBV
VEVEX05BTUVfUFJFRklYICJpbnN0YW5jZUNvbXB1dGVkTmFtZSIKKwogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUcmVlQnVpbGRlciYgY29udGV4
dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZv
PFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYsNyArMjk5OCw3IEBAIHBhcnNlTWV0aG9k
OgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUp
IHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVu
YSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAg
ICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwg
bnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJs
ZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlv
blJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsK
ICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwpA
QCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKIAogICAgICAgICBK
U1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwotICAgICAgICBUcmVlRXhwcmVzc2lv
biBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlw
ZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1f
dG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CkBAIC0zMTAxLDE0ICsz
MTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAg
IG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1
dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNl
IGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25P
ckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIp
OwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5t
YWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAg
ICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRl
SWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpD
b21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykK
ICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcxOTg4NjI0MWQzLi5mYzU1ZTE3Mzc5
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBA
IC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFr
ZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJl
bmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIHByZWZpeCwgdW5z
aWduZWQgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJpbmco
cHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1ib2xS
ZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lKTsKKyAgICBtX2lkZW50aWZpZXJzLmFw
cGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50aWZp
ZXJzLmxhc3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJB
cmVuYS5oCmluZGV4IDhiYjlkNWViOTA5Mi4uMjM5NDQxMTNiYWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNpbWFsSWRl
bnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91YmxlIG51bWJl
cik7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYs
IGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDhhYjBmOWUzOTk4YS4uYzM1
NGMyYjljMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCkBAIC03MDIsMTQgKzcwMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lz
QXRvbWljID0gc3RyaW5nLmlzQXRvbSgpOwogICAgICAgICBtX2lzU3ltYm9sID0gc3RyaW5nLmlz
U3ltYm9sKCk7CisgICAgICAgIG1faXNSZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAgIG1faXNX
ZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgbV9pc1ByaXZhdGUgPSBmYWxzZTsKICAg
ICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBjb25zdF9jYXN0PFN0cmluZ0ltcGwqPigm
c3RyaW5nKTsKIAogICAgICAgICBpZiAobV9pc1N5bWJvbCkgewogICAgICAgICAgICAgU3ltYm9s
SW1wbCogc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGltcGwuZ2V0KCkpOworICAg
ICAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0ZXJlZCgpOworICAgICAg
ICAgICAgbV9pc1ByaXZhdGUgPSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwogICAgICAgICAgICAgaWYg
KCFzeW1ib2wtPmlzTnVsbFN5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBz
cGVjaWFsIGhhbmRsaW5nIGZvciB3ZWxsLWtub3duIHN5bWJvbHMuCi0gICAgICAgICAgICAgICAg
aWYgKCFzeW1ib2wtPmlzUHJpdmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2lzUHJp
dmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2lzV2VsbEtub3duU3ltYm9sID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgaW1wbCA9IHN5bWJvbC0+c3Vic3RyaW5nKHN0cmxlbigiU3lt
Ym9sLiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC03NDIsMTAgKzc0NiwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGQoYnVmZmVyLCBtX2xl
bmd0aCkubGVha1JlZigpOwogCiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2w7Ci0gICAg
ICAgICAgICBpZiAobV9pc1dlbGxLbm93blN5bWJvbCkKLSAgICAgICAgICAgICAgICBzeW1ib2wg
PSBkZWNvZGVyLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtu
b3duU3ltYm9sKGJ1ZmZlciwgbV9sZW5ndGgpOworICAgICAgICAgICAgVk0mIHZtID0gZGVjb2Rl
ci52bSgpOworICAgICAgICAgICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIHN0cihidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9p
c1ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJv
bEltcGwqPigmdm0ucHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cikubGVh
a1JlZigpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN5bWJv
bCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPigmdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xG
b3JLZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtu
b3duU3ltYm9sKQorICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xl
bmd0aCk7CisgICAgICAgICAgICAgICAgc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzeW1ib2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJv
bDsKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQo
KTsKQEAgLTc3Myw2ICs3ODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N5bWJvbCA6IDE7
CiAgICAgYm9vbCBtX2lzV2VsbEtub3duU3ltYm9sIDogMTsKICAgICBib29sIG1faXNBdG9taWMg
OiAxOworICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWQgOiAxOworICAgIGJvb2wgbV9pc1ByaXZhdGUg
OiAxOwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IGFkOGZiMDkyNjAxMS4uZjVhYTVkNDMxZmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zODIsNiArMzgyLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1
Y2Nlc3MpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwg
ZGVmZXJyZWRXb3JrVGltZXIoRGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAg
LCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgp
LmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKKyAgICAsIG1fcHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KFdURjo6U3ltYm9sUmVnaXN0cnk6OlR5cGU6OlByaXZhdGVTeW1ib2wp
CiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xp
c3QpCiAgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQo
bWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IDcxZmEyYTYwNjkyOC4uMjdhYWZjMDMyNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTcxNCw2ICs3MTQsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUq
IG1fYXRvbVN0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdp
c3RyeTsKKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5Owog
ICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IEFyZ0xpc3Qq
IGVtcHR5TGlzdDsKICAgICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtNzI1LDYgKzcy
Niw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lz
dHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KKyAgICBX
VEY6OlN5bWJvbFJlZ2lzdHJ5JiBwcml2YXRlU3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3By
aXZhdGVTeW1ib2xSZWdpc3RyeTsgfQogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50
Q29uc3RhbnRPbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggODU3NGUwMTc2ZDljLi45YzgyMjZkODZmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjAtMTAtMjEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRz
IGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlz
IG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBp
cyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAg
IHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFs
c28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAoV1RGOjpSZWdpc3Rl
cmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSBy
ZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgorICAgICAgICAqIHd0
Zi90ZXh0L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5j
cHA6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRl
ciB0aGF0IHdlIGNhbiBob2xkIHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgorICAgICAgICAqIHd0
Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpT
eW1ib2xSZWdpc3RyeSk6IG5ldyBlbnVtIHR5cGUgZm9yIHB1YmxpYy9wcml2YXRlIHN5bWJvbHMu
CisKIDIwMjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBBZGQgVGltZVpvbmUgcmFuZ2UgY2FjaGUgb3ZlciBJQ1UgVGltZVpvbmUgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0
YmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBS
ZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3Ry
aW5nSW1wbCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJv
bFJlZ2lzdHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5
bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYg
c3ltYm9sUmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVy
c2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVw
OworICAgIEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3Ry
aW5nKTsKKyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJS
ZXAsIHN5bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9k
YXRhMTYsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNS
ZWdpc3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVs
bHB0cjsgfQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0
cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0
cnkmKTsKIAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5
JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RG
TW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBs
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBs
PiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJ
c1JlZ2lzdGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdU
Rk1vdmUoYmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5
KQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1i
b2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBs
ZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVk
U3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8
U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdz
ID0gc19mbGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywg
bGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5
KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcAppbmRleCAwZDkwYTUxN2UzMjQuLjRlNTQ5ZjQ0YmYyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAKQEAgLTM2LDYgKzM2LDggQEAgU3ltYm9sUmVnaXN0cnk6On5T
eW1ib2xSZWdpc3RyeSgpCiAgICAgfQogfQogCit0eXBlZGVmIFJlZjxSZWdpc3RlcmVkU3ltYm9s
SW1wbD4gKCpDcmVhdGVTeW1ib2wpKFN0cmluZ0ltcGwmLCBTeW1ib2xSZWdpc3RyeSYpOworCiBS
ZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkoY29u
c3QgU3RyaW5nJiByZXApCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RhYmxlLmFkZChTeW1i
b2xSZWdpc3RyeUtleShyZXAuaW1wbCgpKSk7CkBAIC00NCw3ICs0NiwxNCBAQCBSZWY8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IFN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5n
JiByZXApCiAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGFkZFJlc3Vs
dC5pdGVyYXRvci0+aW1wbCgpKS0+YXNSZWdpc3RlcmVkU3ltYm9sSW1wbCgpOwogICAgIH0KIAot
ICAgIGF1dG8gc3ltYm9sID0gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZSgqcmVwLmltcGwo
KSwgKnRoaXMpOworICAgIENyZWF0ZVN5bWJvbCBtX2NyZWF0ZVN5bWJvbDsKKworICAgIGlmICht
X3N5bWJvbFR5cGUgPT0gVHlwZTo6UHJpdmF0ZVN5bWJvbCkKKyAgICAgICAgbV9jcmVhdGVTeW1i
b2wgPSAmUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGU7CisgICAgZWxzZQorICAg
ICAgICBtX2NyZWF0ZVN5bWJvbCA9ICZSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlOworCisg
ICAgYXV0byBzeW1ib2wgPSBtX2NyZWF0ZVN5bWJvbCgqcmVwLmltcGwoKSwgKnRoaXMpOwogICAg
ICphZGRSZXN1bHQuaXRlcmF0b3IgPSBTeW1ib2xSZWdpc3RyeUtleSgmc3ltYm9sLmdldCgpKTsK
ICAgICByZXR1cm4gc3ltYm9sOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCmlu
ZGV4IDU1ODk3OWFlODE2NS4uZjBmZGUwY2FlMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xS
ZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw5IEBAIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xS
ZWdpc3RyeSk7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsgUHVibGljU3ltYm9sLCBQ
cml2YXRlU3ltYm9sIH07CiAgICAgU3ltYm9sUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisgICAgU3lt
Ym9sUmVnaXN0cnkoVHlwZSB0eXBlKSB7IG1fc3ltYm9sVHlwZSA9IHR5cGU7IH07CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5TeW1ib2xSZWdpc3RyeSgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYp
OwpAQCAtODcsNiArODksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTeW1i
b2xSZWdpc3RyeUtleT4gbV90YWJsZTsKKyAgICBUeXBlIG1fc3ltYm9sVHlwZSB7IFR5cGU6OlB1
YmxpY1N5bWJvbCB9OwogfTsKIAogaW5saW5lIFN5bWJvbFJlZ2lzdHJ5S2V5OjpTeW1ib2xSZWdp
c3RyeUtleShTdHJpbmdJbXBsKiB1aWQpCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413577</attachid>
            <date>2020-11-09 03:34:07 -0800</date>
            <delta_ts>2020-11-10 01:25:39 -0800</delta_ts>
            <desc>Use symbols as identifiers, v10</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21191</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhOWE3OWUzNDRjMGE4NzcwMjFmNTNiOTQzYzRkYThjYjNlOWRhMjYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8IDExICsrKysr
LS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICAzICsr
CiAxMyBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNGJiMTAxMzQ5OTY5Li4yYjY1MGZhZWQxNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTIxICBYYW4g
TMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMg
aWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0ZSBz
eW1ib2xzIGZvciB0aGUgcHJvcGVydHkga2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKKyAg
ICAgICAgY29tcHV0ZWQgbmFtZXMuIFRoaXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1l
cmljIGlkZW50aWZpZXJzIGFuZAorICAgICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVu
IHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJdCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVudGlh
bCBjb2xsaXNpb25zIGlmIG90aGVyIGZlYXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0aGUg
Y2xhc3MKKyAgICAgICAgc2NvcGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGZ1
bmN0aW9uYWxpdHkgd2FzIGNoYW5nZWQuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFNhdmVDb21w
dXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2Ug
cHJpdmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFs
aXplclNvdXJjZUVsZW1lbnRzKTogZGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
LmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZp
ZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0ZSBpZGVudGlmaWVyLgorICAgICAgICAqIHBh
cnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3Qp
OiBkaXR0by4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpwcml2YXRlU3lt
Ym9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3RyeSB0b28uCisKIDIw
MjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBBZGQgVGltZVpvbmUgcmFuZ2UgY2FjaGUgb3ZlciBJQ1UgVGltZVpvbmUgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggNWFkODQ5ODA4NjRiLi4xZTI1ZDhkYzBlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTgwMiw3ICs4MDIs
NyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUAogICAgIEFTU0VSVChub2RlLmlzQ29tcHV0ZWRD
bGFzc0ZpZWxkKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eUV4cHI7CiAKLSAg
ICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRpYyBudW1lcmljIHZhcmlhYmxlIG5h
bWUgaW4gdGhlIHByaXZhdGUgbmFtZSBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtleSBpcyBz
YXZlZCBmb3IgbGF0ZXIgdXNlLgorICAgIC8vIFRoZSAnbmFtZScgcmVmZXJzIHRvIGEgc3ludGhl
dGljIHByaXZhdGUgbmFtZSBpbiB0aGUgY2xhc3Mgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBr
ZXkgaXMgc2F2ZWQgZm9yIGxhdGVyIHVzZS4KICAgICBjb25zdCBJZGVudGlmaWVyJiBkZXNjcmlw
dGlvbiA9ICpub2RlLm5hbWUoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoZGVzY3JpcHRpb24pOwogICAgIEFTU0VSVCghdmFyLmxvY2FsKCkpOwpAQCAtNDgxNywxMiAr
NDgxNywxNCBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogdm9pZCBEZWZpbmVGaWVsZE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBmYWxzZTsKIAogICAgIGlmICgh
bV9hc3NpZ24pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRl
ZmluZWQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5n
ZXQoKSwgbV9hc3NpZ24pOwotICAgICAgICBpZiAobV9pZGVudCAmJiBnZW5lcmF0b3Iuc2hvdWxk
U2V0RnVuY3Rpb25OYW1lKG1fYXNzaWduKSkKKyAgICAgICAgc2hvdWxkU2V0RnVuY3Rpb25OYW1l
ID0gZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0aW9uTmFtZShtX2Fzc2lnbik7CisgICAgICAgIGlm
IChtX2lkZW50ICYmIHNob3VsZFNldEZ1bmN0aW9uTmFtZSAmJiBtX3R5cGUgIT0gRGVmaW5lRmll
bGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWUpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNl
dEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgKm1faWRlbnQpOwogICAgIH0KIApAQCAtNDg1MCw3
ICs0ODUyLDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMAogCiAgICAgICAgIC8vIEZvciBDb21w
dXRlZE5hbWVzLCB0aGUgZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBlYXJs
aWVyIGR1cmluZyBldmFsdWF0aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KLSAgICAgICAgLy8gSGVy
ZSwgYG1faWRlbnRgIHJlZmVycyB0byBhbiBpbnRlZ2VyIElEIGluIGEgY2xhc3MgbGV4aWNhbCBz
Y29wZSwgY29udGFpbmluZyB0aGUgdmFsdWUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gRXhwcmVz
c2lvbi4KKyAgICAgICAgLy8gSGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJv
bCBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVh
ZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQg
dmFyaWFibGVzIik7CiAKQEAgLTQ4NTgsNiArNDg2MCw4IEBAIHZvaWQgRGVmaW5lRmllbGROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRl
TmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRH
ZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisgICAgICAgIGlmIChzaG91bGRTZXRGdW5jdGlvbk5hbWUpCisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdl
dCgpLCB2YXIsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1l
cmFibGUsIG1fcG9zaXRpb24pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCBlMTkwZTY5MzY5OTUuLjkxOTVlY2E2MWJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjgzNyw2ICsyODM3LDggQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0Rl
Y2xTdGF0ZW1lbnQobG9jYXRpb24sIGNsYXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNs
YXNzU3RhcnRMaW5lLCBjbGFzc0VuZExpbmUpOwogfQogCisjZGVmaW5lIElOU1RBTkNFX0NPTVBV
VEVEX05BTUVfUFJFRklYICJpbnN0YW5jZUNvbXB1dGVkTmFtZSIKKwogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUcmVlQnVpbGRlciYgY29udGV4
dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZv
PFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYsNyArMjk5OCw3IEBAIHBhcnNlTWV0aG9k
OgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUp
IHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVu
YSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAg
ICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwg
bnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJs
ZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlv
blJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsK
ICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwpA
QCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKIAogICAgICAgICBK
U1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwotICAgICAgICBUcmVlRXhwcmVzc2lv
biBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlw
ZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1f
dG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CkBAIC0zMTAxLDE0ICsz
MTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAg
IG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1
dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNl
IGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25P
ckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIp
OwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5t
YWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CisgICAgICAg
ICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRl
SWRlbnRpZmllcihtX3ZtLCBJTlNUQU5DRV9DT01QVVRFRF9OQU1FX1BSRUZJWCwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpD
b21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykK
ICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcxOTg4NjI0MWQzLi5mYzU1ZTE3Mzc5
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBA
IC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFr
ZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJl
bmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IGNoYXIqIHByZWZpeCwgdW5z
aWduZWQgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJpbmco
cHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1ib2xS
ZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lKTsKKyAgICBtX2lkZW50aWZpZXJzLmFw
cGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50aWZp
ZXJzLmxhc3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJB
cmVuYS5oCmluZGV4IDhiYjlkNWViOTA5Mi4uMjM5NDQxMTNiYWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNpbWFsSWRl
bnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91YmxlIG51bWJl
cik7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYs
IGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDhhYjBmOWUzOTk4YS4uYzM1
NGMyYjljMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCkBAIC03MDIsMTQgKzcwMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lz
QXRvbWljID0gc3RyaW5nLmlzQXRvbSgpOwogICAgICAgICBtX2lzU3ltYm9sID0gc3RyaW5nLmlz
U3ltYm9sKCk7CisgICAgICAgIG1faXNSZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAgIG1faXNX
ZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgbV9pc1ByaXZhdGUgPSBmYWxzZTsKICAg
ICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBjb25zdF9jYXN0PFN0cmluZ0ltcGwqPigm
c3RyaW5nKTsKIAogICAgICAgICBpZiAobV9pc1N5bWJvbCkgewogICAgICAgICAgICAgU3ltYm9s
SW1wbCogc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGltcGwuZ2V0KCkpOworICAg
ICAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0ZXJlZCgpOworICAgICAg
ICAgICAgbV9pc1ByaXZhdGUgPSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwogICAgICAgICAgICAgaWYg
KCFzeW1ib2wtPmlzTnVsbFN5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBz
cGVjaWFsIGhhbmRsaW5nIGZvciB3ZWxsLWtub3duIHN5bWJvbHMuCi0gICAgICAgICAgICAgICAg
aWYgKCFzeW1ib2wtPmlzUHJpdmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2lzUHJp
dmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2lzV2VsbEtub3duU3ltYm9sID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgaW1wbCA9IHN5bWJvbC0+c3Vic3RyaW5nKHN0cmxlbigiU3lt
Ym9sLiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC03NDIsMTAgKzc0NiwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGQoYnVmZmVyLCBtX2xl
bmd0aCkubGVha1JlZigpOwogCiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2w7Ci0gICAg
ICAgICAgICBpZiAobV9pc1dlbGxLbm93blN5bWJvbCkKLSAgICAgICAgICAgICAgICBzeW1ib2wg
PSBkZWNvZGVyLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtu
b3duU3ltYm9sKGJ1ZmZlciwgbV9sZW5ndGgpOworICAgICAgICAgICAgVk0mIHZtID0gZGVjb2Rl
ci52bSgpOworICAgICAgICAgICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIHN0cihidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9p
c1ByaXZhdGUpCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJv
bEltcGwqPigmdm0ucHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cikubGVh
a1JlZigpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN5bWJv
bCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPigmdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xG
b3JLZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtu
b3duU3ltYm9sKQorICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xl
bmd0aCk7CisgICAgICAgICAgICAgICAgc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzeW1ib2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJv
bDsKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQo
KTsKQEAgLTc3Myw2ICs3ODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N5bWJvbCA6IDE7
CiAgICAgYm9vbCBtX2lzV2VsbEtub3duU3ltYm9sIDogMTsKICAgICBib29sIG1faXNBdG9taWMg
OiAxOworICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWQgOiAxOworICAgIGJvb2wgbV9pc1ByaXZhdGUg
OiAxOwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IGFkOGZiMDkyNjAxMS4uZjVhYTVkNDMxZmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zODIsNiArMzgyLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1
Y2Nlc3MpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwg
ZGVmZXJyZWRXb3JrVGltZXIoRGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAg
LCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgp
LmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKKyAgICAsIG1fcHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KFdURjo6U3ltYm9sUmVnaXN0cnk6OlR5cGU6OlByaXZhdGVTeW1ib2wp
CiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xp
c3QpCiAgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQo
bWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IDcxZmEyYTYwNjkyOC4uMjdhYWZjMDMyNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTcxNCw2ICs3MTQsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUq
IG1fYXRvbVN0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdp
c3RyeTsKKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5Owog
ICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IEFyZ0xpc3Qq
IGVtcHR5TGlzdDsKICAgICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtNzI1LDYgKzcy
Niw3IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lz
dHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KKyAgICBX
VEY6OlN5bWJvbFJlZ2lzdHJ5JiBwcml2YXRlU3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3By
aXZhdGVTeW1ib2xSZWdpc3RyeTsgfQogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50
Q29uc3RhbnRPbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggODU3NGUwMTc2ZDljLi45YzgyMjZkODZmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjAtMTAtMjEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRz
IGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlz
IG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBp
cyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAg
IHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFs
c28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgc2luY2Ugbm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAoV1RGOjpSZWdpc3Rl
cmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSBy
ZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgorICAgICAgICAqIHd0
Zi90ZXh0L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5j
cHA6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRl
ciB0aGF0IHdlIGNhbiBob2xkIHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgorICAgICAgICAqIHd0
Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpT
eW1ib2xSZWdpc3RyeSk6IG5ldyBlbnVtIHR5cGUgZm9yIHB1YmxpYy9wcml2YXRlIHN5bWJvbHMu
CisKIDIwMjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBBZGQgVGltZVpvbmUgcmFuZ2UgY2FjaGUgb3ZlciBJQ1UgVGltZVpvbmUgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0
YmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBS
ZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3Ry
aW5nSW1wbCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJv
bFJlZ2lzdHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5
bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYg
c3ltYm9sUmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVy
c2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVw
OworICAgIEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3Ry
aW5nKTsKKyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJS
ZXAsIHN5bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9k
YXRhMTYsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNS
ZWdpc3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVs
bHB0cjsgfQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0
cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0
cnkmKTsKIAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5
JiByZWdpc3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RG
TW92ZShiYXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBs
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBs
PiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJ
c1JlZ2lzdGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdU
Rk1vdmUoYmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5
KQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1i
b2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBs
ZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVk
U3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8
U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdz
ID0gc19mbGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywg
bGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5
KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcAppbmRleCAwZDkwYTUxN2UzMjQuLjcwMzhhMjJhZjA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAKQEAgLTQ0LDkgKzQ0LDE0IEBAIFJlZjxSZWdpc3RlcmVkU3lt
Ym9sSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmIHJlcCkK
ICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4oYWRkUmVzdWx0Lml0ZXJh
dG9yLT5pbXBsKCkpLT5hc1JlZ2lzdGVyZWRTeW1ib2xJbXBsKCk7CiAgICAgfQogCi0gICAgYXV0
byBzeW1ib2wgPSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhp
cyk7Ci0gICAgKmFkZFJlc3VsdC5pdGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KCZzeW1ib2wu
Z2V0KCkpOwotICAgIHJldHVybiBzeW1ib2w7CisgICAgUmVmUHRyPFJlZ2lzdGVyZWRTeW1ib2xJ
bXBsPiBzeW1ib2w7CisgICAgaWYgKG1fc3ltYm9sVHlwZSA9PSBUeXBlOjpQcml2YXRlU3ltYm9s
KQorICAgICAgICBzeW1ib2wgPSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSgq
cmVwLmltcGwoKSwgKnRoaXMpOworICAgIGVsc2UKKyAgICAgICAgc3ltYm9sID0gUmVnaXN0ZXJl
ZFN5bWJvbEltcGw6OmNyZWF0ZSgqcmVwLmltcGwoKSwgKnRoaXMpOworCisgICAgKmFkZFJlc3Vs
dC5pdGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KHN5bWJvbC5nZXQoKSk7CisgICAgcmV0dXJu
IHN5bWJvbC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN5bWJvbFJlZ2lzdHJ5OjpyZW1v
dmUoUmVnaXN0ZXJlZFN5bWJvbEltcGwmIHVpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0
cnkuaAppbmRleCA1NTg5NzlhZTgxNjUuLmYwZmRlMGNhZTA5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaApAQCAtNzgsNyArNzgsOSBAQCBjbGFzcyBTeW1ib2xSZWdpc3RyeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3ltYm9sUmVnaXN0cnkpOwogcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7IFB1YmxpY1N5
bWJvbCwgUHJpdmF0ZVN5bWJvbCB9OwogICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0Owor
ICAgIFN5bWJvbFJlZ2lzdHJ5KFR5cGUgdHlwZSkgeyBtX3N5bWJvbFR5cGUgPSB0eXBlOyB9Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IHN5bWJvbEZvcktleShjb25zdCBT
dHJpbmcmKTsKQEAgLTg3LDYgKzg5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8U3ltYm9sUmVnaXN0cnlLZXk+IG1fdGFibGU7CisgICAgVHlwZSBtX3N5bWJvbFR5cGUgeyBU
eXBlOjpQdWJsaWNTeW1ib2wgfTsKIH07CiAKIGlubGluZSBTeW1ib2xSZWdpc3RyeUtleTo6U3lt
Ym9sUmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKQotLSAKMi4yOC4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413678</attachid>
            <date>2020-11-10 01:25:39 -0800</date>
            <delta_ts>2020-11-10 02:16:58 -0800</delta_ts>
            <desc>Use symbols as identifiers, v11</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21374</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA3ZDFkNmVkMzFmZWNiZjFlMTkyMjU5YWM0MjRmZDQyMWI0NTdiNmU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8IDE2ICsrKysr
KysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICA0
ICsrLQogMTMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQzNzNhZjNiMzgyYi4uNzUwM2FlYjA3ODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0xMC0yMSAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xz
IGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZh
dGUgc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRo
CisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcg
bnVtZXJpYyBpZGVudGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUg
d2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3Rl
bnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4g
dGhlIGNsYXNzCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBu
byBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZl
Q29tcHV0ZWRGaWVsZE5hbWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTog
dXNlIHByaXZhdGUgaWRlbnRpZmllcnMgZm9yIGNvbXB1dGVkIGZpZWxkcyBwcm9wZXJ0eSBrZXlz
LgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJB
cmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVu
dGlmaWVyKTogbWV0aG9kIHRvIGNyZWF0ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUpOiBj
b25zaWRlciByZWdpc3RlcmVkIHN5bWJvbHMsIHRoZXkgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBu
b3cuCisgICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZGVjb2RlIGNv
bnN0KTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6cHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KTogY3JlYXRlIGEgcHJpdmF0ZSBzeW1ib2wgcmVnaXN0cnkgdG9vLgor
CiAyMDIwLTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCB0b3RhbCBjb3VudHMgdG8gc2FtcGxpbmcgcHJvZmlsZXIgZHVtcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IDVhZDg0OTgwODY0Yi4uMWUyNWQ4ZGMwZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC04MDIsNyArODAyLDcg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9kZS5pc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlFeHByOwogCi0gICAg
Ly8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJpYyB2YXJpYWJsZSBuYW1l
IGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2
ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRp
YyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5
IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRpZmllciYgZGVzY3JpcHRp
b24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsKQEAgLTQ4MTcsMTIgKzQ4
MTcsMTQgQEAgUmVnaXN0ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIHZvaWQgRGVmaW5lRmllbGROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZmFsc2U7CiAKICAgICBpZiAoIW1f
YXNzaWduKQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZp
bmVkKCkpOwogICAgIGVsc2UgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0
KCksIG1fYXNzaWduKTsKLSAgICAgICAgaWYgKG1faWRlbnQgJiYgZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShtX2Fzc2lnbikpCisgICAgICAgIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9
IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobV9hc3NpZ24pOworICAgICAgICBpZiAo
bV9pZGVudCAmJiBzaG91bGRTZXRGdW5jdGlvbk5hbWUgJiYgbV90eXBlICE9IERlZmluZUZpZWxk
Tm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRG
dW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksICptX2lkZW50KTsKICAgICB9CiAKQEAgLTQ4NTAsNyAr
NDg1Miw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAKIAogICAgICAgICAvLyBGb3IgQ29tcHV0
ZWROYW1lcywgdGhlIGV4cHJlc3Npb24gaGFzIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgZWFybGll
ciBkdXJpbmcgZXZhbHVhdGlvbiBvZiBhIENsYXNzRXhwck5vZGUuCi0gICAgICAgIC8vIEhlcmUs
IGBtX2lkZW50YCByZWZlcnMgdG8gYW4gaW50ZWdlciBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2Nv
cGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Np
b24uCisgICAgICAgIC8vIEhlcmUsIGBtX2lkZW50YCByZWZlcnMgdG8gcHJpdmF0ZSBzeW1ib2wg
SUQgaW4gYSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1ZSBhbHJlYWR5
IGNvbnZlcnRlZCB0byBhbiBFeHByZXNzaW9uLgogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoKm1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2
YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZh
cmlhYmxlcyIpOwogCkBAIC00ODU4LDYgKzQ4NjAsOCBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5h
bWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICBpZiAoc2hvdWxkU2V0RnVuY3Rpb25OYW1lKQorICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksIHByaXZhdGVOYW1lLmdl
dCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQo
KSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0
b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJh
YmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li41MDAxNDBjNWMzYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4MzcsNiArMjgzNyw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNs
U3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIsIGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFz
c1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxp
dGVyYWwgaW5zdGFuY2VDb21wdXRlZE5hbWVQcmVmaXggeyAiaW5zdGFuY2VDb21wdXRlZE5hbWUi
X3MgfTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzcyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYs
NyArMjk5OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3Bh
cnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBu
dW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFy
ZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5j
ZUNvbXB1dGVkTmFtZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFy
YXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJp
YWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwot
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAg
IERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFU
RU5BTUU6CkBAIC0zMTAxLDE0ICszMTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJS
QUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVy
dHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAg
ICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29t
cHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5jZUNvbXB1dGVkTmFt
ZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcxOTg4
NjI0MWQzLi5jNTllMDY4YWY0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCkBAIC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXImIElk
ZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
SWRlCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlm
aWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIEFTQ0lJ
TGl0ZXJhbCBwcmVmaXgsIHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJv
bE5hbWUgPSBtYWtlU3RyaW5nKHByZWZpeCwgaWRlbnRpZmllcik7CisgICAgYXV0byBzeW1ib2wg
PSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7Cisg
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAg
ICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA4YmI5ZDVlYjkwOTIuLmJlMjdmMzRiMWM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNTIs
NiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
YWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhf
dCByYWRpeCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmll
cihWTSYsIGRvdWJsZSBudW1iZXIpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJp
dmF0ZUlkZW50aWZpZXIoVk0mLCBBU0NJSUxpdGVyYWwsIHVuc2lnbmVkKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIgPSAx
Mjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggOGFiMGY5ZTM5OThhLi5jMzU0YzJiOWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTcwMiwxNCArNzAyLDE4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1faXNBdG9taWMgPSBzdHJpbmcuaXNBdG9tKCk7CiAgICAgICAgIG1f
aXNTeW1ib2wgPSBzdHJpbmcuaXNTeW1ib2woKTsKKyAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBm
YWxzZTsKICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOworICAgICAgICBtX2lz
UHJpdmF0ZSA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCA9IGNvbnN0
X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpOwogCiAgICAgICAgIGlmIChtX2lzU3ltYm9sKSB7
CiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Kj4oaW1wbC5nZXQoKSk7CisgICAgICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IHN5bWJvbC0+aXNS
ZWdpc3RlcmVkKCk7CisgICAgICAgICAgICBtX2lzUHJpdmF0ZSA9IHN5bWJvbC0+aXNQcml2YXRl
KCk7CiAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNOdWxsU3ltYm9sKCkpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdlbGwta25vd24gc3ltYm9s
cy4KLSAgICAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNQcml2YXRlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1faXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faXNXZWxs
S25vd25TeW1ib2wgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbXBsID0gc3ltYm9sLT5z
dWJzdHJpbmcoc3RybGVuKCJTeW1ib2wuIikpOwogICAgICAgICAgICAgICAgIH0KQEAgLTc0Miwx
MCArNzQ2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0lt
cGw6OmFkZChidWZmZXIsIG1fbGVuZ3RoKS5sZWFrUmVmKCk7CiAKICAgICAgICAgICAgIFN5bWJv
bEltcGwqIHN5bWJvbDsKLSAgICAgICAgICAgIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQotICAg
ICAgICAgICAgICAgIHN5bWJvbCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAg
ICAgICBWTSYgdm0gPSBkZWNvZGVyLnZtKCk7CisgICAgICAgICAgICBpZiAobV9pc1JlZ2lzdGVy
ZWQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyKGJ1ZmZlciwgbV9sZW5ndGgpOworICAg
ICAgICAgICAgICAgIGlmIChtX2lzUHJpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9s
ID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5z
eW1ib2xGb3JLZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5zeW1i
b2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHIpLmxlYWtSZWYoKSk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKG1faXNXZWxsS25vd25TeW1ib2wpCisgICAgICAgICAgICAgICAgc3ltYm9sID0g
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3ltYm9sKGJ1
ZmZlciwgbV9sZW5ndGgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN5bWJv
bCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2
YXRlTmFtZShidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2YXRlTmFtZShidWZmZXIsIG1f
bGVuZ3RoKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN5bWJvbCk7CiAgICAgICAgICAg
ICBTdHJpbmcgc3RyID0gc3ltYm9sOwogICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHN0
ci5yZWxlYXNlSW1wbCgpLmdldCgpOwpAQCAtNzczLDYgKzc4NCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzU3ltYm9sIDogMTsKICAgICBib29sIG1faXNXZWxsS25vd25TeW1ib2wgOiAxOwog
ICAgIGJvb2wgbV9pc0F0b21pYyA6IDE7CisgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZCA6IDE7Cisg
ICAgYm9vbCBtX2lzUHJpdmF0ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWQ4ZmIwOTI2MDExLi5mNWFhNWQ0
MzFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTM4Miw2ICszODIs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9v
cCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkpCiAgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1lcjo6
Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0
ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1Rh
YmxlKQorICAgICwgbV9wcml2YXRlU3ltYm9sUmVnaXN0cnkoV1RGOjpTeW1ib2xSZWdpc3RyeTo6
VHlwZTo6UHJpdmF0ZVN5bWJvbCkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAs
IGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29k
ZVdvcmRGb3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzFmYTJhNjA2OTI4Li4yN2FhZmMwMzI2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzE0LDYgKzcxNCw3IEBAIHB1YmxpYzoKIAog
ICAgIEF0b21TdHJpbmdUYWJsZSogbV9hdG9tU3RyaW5nVGFibGU7CiAgICAgV1RGOjpTeW1ib2xS
ZWdpc3RyeSBtX3N5bWJvbFJlZ2lzdHJ5OworICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9wcml2
YXRlU3ltYm9sUmVnaXN0cnk7CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7
CiAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0
cmluZ3M7CkBAIC03MjUsNiArNzI2LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1RhYmxl
KiBhdG9tU3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQog
ICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1i
b2xSZWdpc3RyeTsgfQorICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHByaXZhdGVTeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OyB9CiAKICAgICBTdHJvbmc8
SlNCaWdJbnQ+IGhlYXBCaWdJbnRDb25zdGFudE9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmNkMjRmOWI3MTcuLjE3
MWIyMTVjYzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0xMC0yMSAgWGFuIEzDs3BleiAg
PHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50aWZp
ZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9scyBm
b3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNv
bXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVu
dGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQg
c3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29sbGlz
aW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNzCisg
ICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFs
aXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5jcHA6Cisg
ICAgICAgIChXVEY6OlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKTogYWRkIGEg
bWV0aG9kIHRvIGNyZWF0ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJvbSBhIHN0cmlu
ZyBrZXkuCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAqIHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnN5
bWJvbEZvcktleSk6IGNvbnNpZGVyIHRoYXQgd2UgY2FuIGhvbGQgcHJpdmF0ZSBzeW1ib2xzIG5v
dyB0b28uCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKKyAgICAgICAgKFdU
Rjo6U3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJlZ2lzdHJ5KTogbmV3IGVudW0gdHlwZSBmb3IgcHVi
bGljL3ByaXZhdGUgc3ltYm9scy4KKwogMjAyMC0xMS0wOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2MDMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0YmYwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBSZWY8UmVn
aXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lz
dHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbElt
cGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYgc3ltYm9s
UmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVyc2hpcCgp
ID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwOworICAg
IEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsK
KyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdp
c3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5
bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYs
IHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdpc3Rl
cmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVsbHB0cjsg
fQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0cmluZ0lt
cGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1i
b2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsK
IAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdp
c3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShi
YXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lz
dGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUo
YmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAg
IHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdp
c3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgs
IFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVkU3ltYm9s
SW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5n
SW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdzID0gc19m
bGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3Ro
LCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdp
c3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApp
bmRleCAwZDkwYTUxN2UzMjQuLmM0N2ViODBlNjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoVHlwZSB0eXBlKQorICAgIDogbV9zeW1ib2xU
eXBlKHR5cGUpCit7Cit9CisKIFN5bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQogewog
ICAgIGZvciAoYXV0byYga2V5IDogbV90YWJsZSkgewpAQCAtNDQsOSArNDksMTQgQEAgUmVmPFJl
Z2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0
cmluZyYgcmVwKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihhZGRS
ZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsKICAgICB9
CiAKLSAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5p
bXBsKCksICp0aGlzKTsKLSAgICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlL
ZXkoJnN5bWJvbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN5bWJvbDsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IHN5bWJvbDsKKyAgICBpZiAobV9zeW1ib2xUeXBlID09IFR5cGU6OlBy
aXZhdGVTeW1ib2wpCisgICAgICAgIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVh
dGVQcml2YXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisgICAgZWxzZQorICAgICAgICBzeW1ib2wg
PSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisKKyAg
ICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXkoc3ltYm9sLmdldCgpKTsK
KyAgICByZXR1cm4gc3ltYm9sLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgU3ltYm9sUmVn
aXN0cnk6OnJlbW92ZShSZWdpc3RlcmVkU3ltYm9sSW1wbCYgdWlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1ODk3OWFlODE2NS4uZjAzNGYzNDIyZmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw4IEBAIGNsYXNzIFN5bWJv
bFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7CiBwdWJsaWM6Ci0gICAgU3ltYm9sUmVnaXN0cnko
KSA9IGRlZmF1bHQ7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IFB1YmxpY1N5bWJv
bCwgUHJpdmF0ZVN5bWJvbCB9OworICAgIFN5bWJvbFJlZ2lzdHJ5KFR5cGUgPSBUeXBlOjpQdWJs
aWNTeW1ib2wpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IHN5bWJvbEZv
cktleShjb25zdCBTdHJpbmcmKTsKQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEhhc2hTZXQ8U3ltYm9sUmVnaXN0cnlLZXk+IG1fdGFibGU7CisgICAgVHlwZSBtX3N5
bWJvbFR5cGUgeyBUeXBlOjpQdWJsaWNTeW1ib2wgfTsKIH07CiAKIGlubGluZSBTeW1ib2xSZWdp
c3RyeUtleTo6U3ltYm9sUmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKQotLSAKMi4yOC4wCgo=
</data>
<flag name="commit-queue"
          id="430318"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413679</attachid>
            <date>2020-11-10 01:42:32 -0800</date>
            <delta_ts>2020-11-10 02:14:14 -0800</delta_ts>
            <desc>Use symbols as identifiers, 12</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21393</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA3ODZmNzMzNjBlNWIzNmU2ODM2YTAzYWIyNTExYTMwMzViYTU4ZWE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8IDE2ICsrKysr
KysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICA0
ICsrLQogMTMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQzNzNhZjNiMzgyYi4uNzUwM2FlYjA3ODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0xMC0yMSAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xz
IGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZh
dGUgc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRo
CisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcg
bnVtZXJpYyBpZGVudGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUg
d2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3Rl
bnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4g
dGhlIGNsYXNzCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBu
byBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZl
Q29tcHV0ZWRGaWVsZE5hbWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTog
dXNlIHByaXZhdGUgaWRlbnRpZmllcnMgZm9yIGNvbXB1dGVkIGZpZWxkcyBwcm9wZXJ0eSBrZXlz
LgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJB
cmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVu
dGlmaWVyKTogbWV0aG9kIHRvIGNyZWF0ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUpOiBj
b25zaWRlciByZWdpc3RlcmVkIHN5bWJvbHMsIHRoZXkgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBu
b3cuCisgICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZGVjb2RlIGNv
bnN0KTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6cHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KTogY3JlYXRlIGEgcHJpdmF0ZSBzeW1ib2wgcmVnaXN0cnkgdG9vLgor
CiAyMDIwLTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCB0b3RhbCBjb3VudHMgdG8gc2FtcGxpbmcgcHJvZmlsZXIgZHVtcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IDVhZDg0OTgwODY0Yi4uMWUyNWQ4ZGMwZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC04MDIsNyArODAyLDcg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9kZS5pc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlFeHByOwogCi0gICAg
Ly8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJpYyB2YXJpYWJsZSBuYW1l
IGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2
ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRp
YyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5
IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRpZmllciYgZGVzY3JpcHRp
b24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsKQEAgLTQ4MTcsMTIgKzQ4
MTcsMTQgQEAgUmVnaXN0ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIHZvaWQgRGVmaW5lRmllbGROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZmFsc2U7CiAKICAgICBpZiAoIW1f
YXNzaWduKQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZp
bmVkKCkpOwogICAgIGVsc2UgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0
KCksIG1fYXNzaWduKTsKLSAgICAgICAgaWYgKG1faWRlbnQgJiYgZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShtX2Fzc2lnbikpCisgICAgICAgIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9
IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobV9hc3NpZ24pOworICAgICAgICBpZiAo
bV9pZGVudCAmJiBzaG91bGRTZXRGdW5jdGlvbk5hbWUgJiYgbV90eXBlICE9IERlZmluZUZpZWxk
Tm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRG
dW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksICptX2lkZW50KTsKICAgICB9CiAKQEAgLTQ4NTAsNyAr
NDg1Miw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAKIAogICAgICAgICAvLyBGb3IgQ29tcHV0
ZWROYW1lcywgdGhlIGV4cHJlc3Npb24gaGFzIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgZWFybGll
ciBkdXJpbmcgZXZhbHVhdGlvbiBvZiBhIENsYXNzRXhwck5vZGUuCi0gICAgICAgIC8vIEhlcmUs
IGBtX2lkZW50YCByZWZlcnMgdG8gYW4gaW50ZWdlciBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2Nv
cGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Np
b24uCisgICAgICAgIC8vIEhlcmUsIGBtX2lkZW50YCByZWZlcnMgdG8gcHJpdmF0ZSBzeW1ib2wg
SUQgaW4gYSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1ZSBhbHJlYWR5
IGNvbnZlcnRlZCB0byBhbiBFeHByZXNzaW9uLgogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoKm1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2
YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZh
cmlhYmxlcyIpOwogCkBAIC00ODU4LDYgKzQ4NjAsOCBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5h
bWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICBpZiAoc2hvdWxkU2V0RnVuY3Rpb25OYW1lKQorICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksIHByaXZhdGVOYW1lLmdl
dCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQo
KSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0
b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJh
YmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li41MDAxNDBjNWMzYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4MzcsNiArMjgzNyw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNs
U3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIsIGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFz
c1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxp
dGVyYWwgaW5zdGFuY2VDb21wdXRlZE5hbWVQcmVmaXggeyAiaW5zdGFuY2VDb21wdXRlZE5hbWUi
X3MgfTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzcyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYs
NyArMjk5OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3Bh
cnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBu
dW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFy
ZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5j
ZUNvbXB1dGVkTmFtZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFy
YXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJp
YWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwot
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAg
IERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFU
RU5BTUU6CkBAIC0zMTAxLDE0ICszMTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJS
QUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVy
dHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAg
ICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29t
cHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5jZUNvbXB1dGVkTmFt
ZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcxOTg4
NjI0MWQzLi5jNTllMDY4YWY0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCkBAIC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXImIElk
ZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
SWRlCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlm
aWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIEFTQ0lJ
TGl0ZXJhbCBwcmVmaXgsIHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJv
bE5hbWUgPSBtYWtlU3RyaW5nKHByZWZpeCwgaWRlbnRpZmllcik7CisgICAgYXV0byBzeW1ib2wg
PSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7Cisg
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAg
ICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA4YmI5ZDVlYjkwOTIuLmJlMjdmMzRiMWM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNTIs
NiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
YWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhf
dCByYWRpeCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmll
cihWTSYsIGRvdWJsZSBudW1iZXIpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJp
dmF0ZUlkZW50aWZpZXIoVk0mLCBBU0NJSUxpdGVyYWwsIHVuc2lnbmVkKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIgPSAx
Mjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggOGFiMGY5ZTM5OThhLi5jMzU0YzJiOWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTcwMiwxNCArNzAyLDE4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1faXNBdG9taWMgPSBzdHJpbmcuaXNBdG9tKCk7CiAgICAgICAgIG1f
aXNTeW1ib2wgPSBzdHJpbmcuaXNTeW1ib2woKTsKKyAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBm
YWxzZTsKICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOworICAgICAgICBtX2lz
UHJpdmF0ZSA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCA9IGNvbnN0
X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpOwogCiAgICAgICAgIGlmIChtX2lzU3ltYm9sKSB7
CiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Kj4oaW1wbC5nZXQoKSk7CisgICAgICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IHN5bWJvbC0+aXNS
ZWdpc3RlcmVkKCk7CisgICAgICAgICAgICBtX2lzUHJpdmF0ZSA9IHN5bWJvbC0+aXNQcml2YXRl
KCk7CiAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNOdWxsU3ltYm9sKCkpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdlbGwta25vd24gc3ltYm9s
cy4KLSAgICAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNQcml2YXRlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1faXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faXNXZWxs
S25vd25TeW1ib2wgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbXBsID0gc3ltYm9sLT5z
dWJzdHJpbmcoc3RybGVuKCJTeW1ib2wuIikpOwogICAgICAgICAgICAgICAgIH0KQEAgLTc0Miwx
MCArNzQ2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0lt
cGw6OmFkZChidWZmZXIsIG1fbGVuZ3RoKS5sZWFrUmVmKCk7CiAKICAgICAgICAgICAgIFN5bWJv
bEltcGwqIHN5bWJvbDsKLSAgICAgICAgICAgIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQotICAg
ICAgICAgICAgICAgIHN5bWJvbCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAg
ICAgICBWTSYgdm0gPSBkZWNvZGVyLnZtKCk7CisgICAgICAgICAgICBpZiAobV9pc1JlZ2lzdGVy
ZWQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyKGJ1ZmZlciwgbV9sZW5ndGgpOworICAg
ICAgICAgICAgICAgIGlmIChtX2lzUHJpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9s
ID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5z
eW1ib2xGb3JLZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5zeW1i
b2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHIpLmxlYWtSZWYoKSk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKG1faXNXZWxsS25vd25TeW1ib2wpCisgICAgICAgICAgICAgICAgc3ltYm9sID0g
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3ltYm9sKGJ1
ZmZlciwgbV9sZW5ndGgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN5bWJv
bCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2
YXRlTmFtZShidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2YXRlTmFtZShidWZmZXIsIG1f
bGVuZ3RoKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN5bWJvbCk7CiAgICAgICAgICAg
ICBTdHJpbmcgc3RyID0gc3ltYm9sOwogICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHN0
ci5yZWxlYXNlSW1wbCgpLmdldCgpOwpAQCAtNzczLDYgKzc4NCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzU3ltYm9sIDogMTsKICAgICBib29sIG1faXNXZWxsS25vd25TeW1ib2wgOiAxOwog
ICAgIGJvb2wgbV9pc0F0b21pYyA6IDE7CisgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZCA6IDE7Cisg
ICAgYm9vbCBtX2lzUHJpdmF0ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWQ4ZmIwOTI2MDExLi5mNWFhNWQ0
MzFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTM4Miw2ICszODIs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9v
cCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkpCiAgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1lcjo6
Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0
ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1Rh
YmxlKQorICAgICwgbV9wcml2YXRlU3ltYm9sUmVnaXN0cnkoV1RGOjpTeW1ib2xSZWdpc3RyeTo6
VHlwZTo6UHJpdmF0ZVN5bWJvbCkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAs
IGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29k
ZVdvcmRGb3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzFmYTJhNjA2OTI4Li4yN2FhZmMwMzI2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzE0LDYgKzcxNCw3IEBAIHB1YmxpYzoKIAog
ICAgIEF0b21TdHJpbmdUYWJsZSogbV9hdG9tU3RyaW5nVGFibGU7CiAgICAgV1RGOjpTeW1ib2xS
ZWdpc3RyeSBtX3N5bWJvbFJlZ2lzdHJ5OworICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9wcml2
YXRlU3ltYm9sUmVnaXN0cnk7CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7
CiAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0
cmluZ3M7CkBAIC03MjUsNiArNzI2LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1RhYmxl
KiBhdG9tU3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQog
ICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1i
b2xSZWdpc3RyeTsgfQorICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHByaXZhdGVTeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OyB9CiAKICAgICBTdHJvbmc8
SlNCaWdJbnQ+IGhlYXBCaWdJbnRDb25zdGFudE9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmNkMjRmOWI3MTcuLjE3
MWIyMTVjYzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0xMC0yMSAgWGFuIEzDs3BleiAg
PHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50aWZp
ZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9scyBm
b3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNv
bXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVu
dGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQg
c3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29sbGlz
aW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNzCisg
ICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFs
aXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5jcHA6Cisg
ICAgICAgIChXVEY6OlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKTogYWRkIGEg
bWV0aG9kIHRvIGNyZWF0ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJvbSBhIHN0cmlu
ZyBrZXkuCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAqIHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnN5
bWJvbEZvcktleSk6IGNvbnNpZGVyIHRoYXQgd2UgY2FuIGhvbGQgcHJpdmF0ZSBzeW1ib2xzIG5v
dyB0b28uCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKKyAgICAgICAgKFdU
Rjo6U3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJlZ2lzdHJ5KTogbmV3IGVudW0gdHlwZSBmb3IgcHVi
bGljL3ByaXZhdGUgc3ltYm9scy4KKwogMjAyMC0xMS0wOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2MDMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0YmYwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBSZWY8UmVn
aXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lz
dHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbElt
cGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYgc3ltYm9s
UmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVyc2hpcCgp
ID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwOworICAg
IEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsK
KyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdp
c3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5
bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYs
IHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdpc3Rl
cmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVsbHB0cjsg
fQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0cmluZ0lt
cGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1i
b2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsK
IAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdp
c3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShi
YXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lz
dGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUo
YmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAg
IHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdp
c3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgs
IFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVkU3ltYm9s
SW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5n
SW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdzID0gc19m
bGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3Ro
LCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdp
c3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApp
bmRleCAwZDkwYTUxN2UzMjQuLmM0N2ViODBlNjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoVHlwZSB0eXBlKQorICAgIDogbV9zeW1ib2xU
eXBlKHR5cGUpCit7Cit9CisKIFN5bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQogewog
ICAgIGZvciAoYXV0byYga2V5IDogbV90YWJsZSkgewpAQCAtNDQsOSArNDksMTQgQEAgUmVmPFJl
Z2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0
cmluZyYgcmVwKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihhZGRS
ZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsKICAgICB9
CiAKLSAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5p
bXBsKCksICp0aGlzKTsKLSAgICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlL
ZXkoJnN5bWJvbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN5bWJvbDsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IHN5bWJvbDsKKyAgICBpZiAobV9zeW1ib2xUeXBlID09IFR5cGU6OlBy
aXZhdGVTeW1ib2wpCisgICAgICAgIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVh
dGVQcml2YXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisgICAgZWxzZQorICAgICAgICBzeW1ib2wg
PSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisKKyAg
ICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXkoc3ltYm9sLmdldCgpKTsK
KyAgICByZXR1cm4gc3ltYm9sLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgU3ltYm9sUmVn
aXN0cnk6OnJlbW92ZShSZWdpc3RlcmVkU3ltYm9sSW1wbCYgdWlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1ODk3OWFlODE2NS4uMzllZmQ2NzE1MzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw4IEBAIGNsYXNzIFN5bWJv
bFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7CiBwdWJsaWM6Ci0gICAgU3ltYm9sUmVnaXN0cnko
KSA9IGRlZmF1bHQ7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IFB1YmxpY1N5bWJv
bCwgUHJpdmF0ZVN5bWJvbCB9OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTeW1ib2xSZWdpc3Ry
eShUeXBlID0gVHlwZTo6UHVibGljU3ltYm9sKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN5
bWJvbFJlZ2lzdHJ5KCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFJlZ2lzdGVyZWRT
eW1ib2xJbXBsPiBzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJik7CkBAIC04Nyw2ICs4OCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIYXNoU2V0PFN5bWJvbFJlZ2lzdHJ5S2V5PiBtX3Rh
YmxlOworICAgIFR5cGUgbV9zeW1ib2xUeXBlIHsgVHlwZTo6UHVibGljU3ltYm9sIH07CiB9Owog
CiBpbmxpbmUgU3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lzdHJ5S2V5KFN0cmluZ0ltcGwq
IHVpZCkKLS0gCjIuMjguMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413681</attachid>
            <date>2020-11-10 02:14:14 -0800</date>
            <delta_ts>2020-11-11 01:15:42 -0800</delta_ts>
            <desc>Use symbols as identifiers, v13</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>21370</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmZjVlMThkN2U1YzU1NTI5MGZmMWExMzZjZjM4MmExOWY2MTQ3MDljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCk5vIG5ldyB0ZXN0cyBz
aW5jZSBubyBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZSk6IGFkYXB0IGEgY29tbWVudC4KKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOiB1c2UgcHJp
dmF0ZSBpZGVudGlmaWVycyBmb3IgY29tcHV0ZWQgZmllbGRzIHByb3BlcnR5IGtleXMuCihKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKTogZGl0dG8uCiogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKEpTQzo6SWRlbnRpZmll
ckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOiBtZXRob2QgdG8gY3JlYXRlIGEgcHJpdmF0
ZSBpZGVudGlmaWVyLgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgoqIHJ1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwOgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmVuY29kZSk6IGNvbnNp
ZGVyIHJlZ2lzdGVyZWQgc3ltYm9scywgdGhleSBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIG5vdy4K
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjpkZWNvZGUgY29uc3QpOiBkaXR0by4K
KiBydW50aW1lL1ZNLmNwcDoKKEpTQzo6Vk06OlZNKToKKiBydW50aW1lL1ZNLmg6CihKU0M6OlZN
Ojpwcml2YXRlU3ltYm9sUmVnaXN0cnkpOiBjcmVhdGUgYSBwcml2YXRlIHN5bWJvbCByZWdpc3Ry
eSB0b28uCgpTb3VyY2UvV1RGOgoKKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKFdURjo6UmVn
aXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRl
IGEgcmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6Ciogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwOgooV1RGOjpTeW1i
b2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lkZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2
YXRlIHN5bWJvbHMgbm93IHRvby4KKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgooV1RGOjpT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMv
cHJpdmF0ZSBzeW1ib2xzLgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKystLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgMTIgKysrKy0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgIHwgIDggKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCB8IDIxICsrKysrKysrKystLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwICAgICAgICB8IDE2ICsrKysr
KysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICA0
ICsrLQogMTMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQzNzNhZjNiMzgyYi4uNzUwM2FlYjA3ODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0xMC0yMSAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xz
IGFzIGlkZW50aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZh
dGUgc3ltYm9scyBmb3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRo
CisgICAgICAgIGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcg
bnVtZXJpYyBpZGVudGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUg
d2hlbiB3ZSBhZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3Rl
bnRpYWwgY29sbGlzaW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4g
dGhlIGNsYXNzCisgICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBu
byBmdW5jdGlvbmFsaXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZl
Q29tcHV0ZWRGaWVsZE5hbWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTog
dXNlIHByaXZhdGUgaWRlbnRpZmllcnMgZm9yIGNvbXB1dGVkIGZpZWxkcyBwcm9wZXJ0eSBrZXlz
LgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6IGRpdHRvLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJB
cmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVu
dGlmaWVyKTogbWV0aG9kIHRvIGNyZWF0ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUpOiBj
b25zaWRlciByZWdpc3RlcmVkIHN5bWJvbHMsIHRoZXkgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBu
b3cuCisgICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZGVjb2RlIGNv
bnN0KTogZGl0dG8uCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6cHJpdmF0
ZVN5bWJvbFJlZ2lzdHJ5KTogY3JlYXRlIGEgcHJpdmF0ZSBzeW1ib2wgcmVnaXN0cnkgdG9vLgor
CiAyMDIwLTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCB0b3RhbCBjb3VudHMgdG8gc2FtcGxpbmcgcHJvZmlsZXIgZHVtcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IDVhZDg0OTgwODY0Yi4uMWUyNWQ4ZGMwZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC04MDIsNyArODAyLDcg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFAKICAgICBBU1NFUlQobm9kZS5pc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlFeHByOwogCi0gICAg
Ly8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgbnVtZXJpYyB2YXJpYWJsZSBuYW1l
IGluIHRoZSBwcml2YXRlIG5hbWUgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2
ZWQgZm9yIGxhdGVyIHVzZS4KKyAgICAvLyBUaGUgJ25hbWUnIHJlZmVycyB0byBhIHN5bnRoZXRp
YyBwcml2YXRlIG5hbWUgaW4gdGhlIGNsYXNzIHNjb3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5
IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCiAgICAgY29uc3QgSWRlbnRpZmllciYgZGVzY3JpcHRp
b24gPSAqbm9kZS5uYW1lKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGRlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIXZhci5sb2NhbCgpKTsKQEAgLTQ4MTcsMTIgKzQ4
MTcsMTQgQEAgUmVnaXN0ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIHZvaWQgRGVmaW5lRmllbGROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZmFsc2U7CiAKICAgICBpZiAoIW1f
YXNzaWduKQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZp
bmVkKCkpOwogICAgIGVsc2UgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0
KCksIG1fYXNzaWduKTsKLSAgICAgICAgaWYgKG1faWRlbnQgJiYgZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShtX2Fzc2lnbikpCisgICAgICAgIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9
IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobV9hc3NpZ24pOworICAgICAgICBpZiAo
bV9pZGVudCAmJiBzaG91bGRTZXRGdW5jdGlvbk5hbWUgJiYgbV90eXBlICE9IERlZmluZUZpZWxk
Tm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRG
dW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksICptX2lkZW50KTsKICAgICB9CiAKQEAgLTQ4NTAsNyAr
NDg1Miw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAKIAogICAgICAgICAvLyBGb3IgQ29tcHV0
ZWROYW1lcywgdGhlIGV4cHJlc3Npb24gaGFzIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgZWFybGll
ciBkdXJpbmcgZXZhbHVhdGlvbiBvZiBhIENsYXNzRXhwck5vZGUuCi0gICAgICAgIC8vIEhlcmUs
IGBtX2lkZW50YCByZWZlcnMgdG8gYW4gaW50ZWdlciBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2Nv
cGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Np
b24uCisgICAgICAgIC8vIEhlcmUsIGBtX2lkZW50YCByZWZlcnMgdG8gcHJpdmF0ZSBzeW1ib2wg
SUQgaW4gYSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1ZSBhbHJlYWR5
IGNvbnZlcnRlZCB0byBhbiBFeHByZXNzaW9uLgogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoKm1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2
YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZh
cmlhYmxlcyIpOwogCkBAIC00ODU4LDYgKzQ4NjAsOCBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5h
bWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICBpZiAoc2hvdWxkU2V0RnVuY3Rpb25OYW1lKQorICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksIHByaXZhdGVOYW1lLmdl
dCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQo
KSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0
b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJh
YmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li41MDAxNDBjNWMzYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4MzcsNiArMjgzNyw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ2xhc3NEZWNs
U3RhdGVtZW50KGxvY2F0aW9uLCBjbGFzc0V4cHIsIGNsYXNzU3RhcnQsIGNsYXNzRW5kLCBjbGFz
c1N0YXJ0TGluZSwgY2xhc3NFbmRMaW5lKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxp
dGVyYWwgaW5zdGFuY2VDb21wdXRlZE5hbWVQcmVmaXggeyAiaW5zdGFuY2VDb21wdXRlZE5hbWUi
X3MgfTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzcyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKQEAgLTI5OTYs
NyArMjk5OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3Bh
cnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBu
dW1Db21wdXRlZEZpZWxkcysrKTsKKyAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFy
ZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5j
ZUNvbXB1dGVkTmFtZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFy
YXRpb25SZXN1bHQ6OlZhbGlkKTsKICAgICAgICAgICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJp
YWJsZShpZGVudCwgZmFsc2UpOwpAQCAtMzA3Nyw3ICszMDc5LDYgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5zdGFuY2UKIAogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZmllbGRMb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBudWxscHRyOwot
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAg
IERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgUFJJVkFU
RU5BTUU6CkBAIC0zMTAxLDE0ICszMTAyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6CisgICAgICAgIGNhc2UgT1BFTkJS
QUNLRVQ6IHsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVy
dHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAg
ICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29t
cHV0ZWQgcHJvcGVydHkgbmFtZSIpOwotICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CisgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCBpbnN0YW5jZUNvbXB1dGVkTmFt
ZVByZWZpeCwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CiAgICAgICAgICAgICB0eXBlID0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzcxOTg4
NjI0MWQzLi5jNTllMDY4YWY0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCkBAIC0xMDcsNCArMTA3LDEyIEBAIGNvbnN0IElkZW50aWZpZXImIElk
ZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
SWRlCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlm
aWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIEFTQ0lJ
TGl0ZXJhbCBwcmVmaXgsIHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgU3RyaW5nIHN5bWJv
bE5hbWUgPSBtYWtlU3RyaW5nKHByZWZpeCwgaWRlbnRpZmllcik7CisgICAgYXV0byBzeW1ib2wg
PSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7Cisg
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAg
ICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA4YmI5ZDVlYjkwOTIuLmJlMjdmMzRiMWM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNTIs
NiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
YWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhf
dCByYWRpeCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmll
cihWTSYsIGRvdWJsZSBudW1iZXIpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJp
dmF0ZUlkZW50aWZpZXIoVk0mLCBBU0NJSUxpdGVyYWwsIHVuc2lnbmVkKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXIgPSAx
Mjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggOGFiMGY5ZTM5OThhLi5jMzU0YzJiOWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTcwMiwxNCArNzAyLDE4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1faXNBdG9taWMgPSBzdHJpbmcuaXNBdG9tKCk7CiAgICAgICAgIG1f
aXNTeW1ib2wgPSBzdHJpbmcuaXNTeW1ib2woKTsKKyAgICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBm
YWxzZTsKICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOworICAgICAgICBtX2lz
UHJpdmF0ZSA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCA9IGNvbnN0
X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpOwogCiAgICAgICAgIGlmIChtX2lzU3ltYm9sKSB7
CiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Kj4oaW1wbC5nZXQoKSk7CisgICAgICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IHN5bWJvbC0+aXNS
ZWdpc3RlcmVkKCk7CisgICAgICAgICAgICBtX2lzUHJpdmF0ZSA9IHN5bWJvbC0+aXNQcml2YXRl
KCk7CiAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNOdWxsU3ltYm9sKCkpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdlbGwta25vd24gc3ltYm9s
cy4KLSAgICAgICAgICAgICAgICBpZiAoIXN5bWJvbC0+aXNQcml2YXRlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1faXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faXNXZWxs
S25vd25TeW1ib2wgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbXBsID0gc3ltYm9sLT5z
dWJzdHJpbmcoc3RybGVuKCJTeW1ib2wuIikpOwogICAgICAgICAgICAgICAgIH0KQEAgLTc0Miwx
MCArNzQ2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0lt
cGw6OmFkZChidWZmZXIsIG1fbGVuZ3RoKS5sZWFrUmVmKCk7CiAKICAgICAgICAgICAgIFN5bWJv
bEltcGwqIHN5bWJvbDsKLSAgICAgICAgICAgIGlmIChtX2lzV2VsbEtub3duU3ltYm9sKQotICAg
ICAgICAgICAgICAgIHN5bWJvbCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAg
ICAgICBWTSYgdm0gPSBkZWNvZGVyLnZtKCk7CisgICAgICAgICAgICBpZiAobV9pc1JlZ2lzdGVy
ZWQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyKGJ1ZmZlciwgbV9sZW5ndGgpOworICAg
ICAgICAgICAgICAgIGlmIChtX2lzUHJpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9s
ID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5z
eW1ib2xGb3JLZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KCZ2bS5zeW1i
b2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHIpLmxlYWtSZWYoKSk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKG1faXNXZWxsS25vd25TeW1ib2wpCisgICAgICAgICAgICAgICAgc3ltYm9sID0g
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3ltYm9sKGJ1
ZmZlciwgbV9sZW5ndGgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN5bWJv
bCA9IGRlY29kZXIudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2
YXRlTmFtZShidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBQcml2YXRlTmFtZShidWZmZXIsIG1f
bGVuZ3RoKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN5bWJvbCk7CiAgICAgICAgICAg
ICBTdHJpbmcgc3RyID0gc3ltYm9sOwogICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHN0
ci5yZWxlYXNlSW1wbCgpLmdldCgpOwpAQCAtNzczLDYgKzc4NCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzU3ltYm9sIDogMTsKICAgICBib29sIG1faXNXZWxsS25vd25TeW1ib2wgOiAxOwog
ICAgIGJvb2wgbV9pc0F0b21pYyA6IDE7CisgICAgYm9vbCBtX2lzUmVnaXN0ZXJlZCA6IDE7Cisg
ICAgYm9vbCBtX2lzUHJpdmF0ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYWQ4ZmIwOTI2MDExLi5mNWFhNWQ0
MzFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTM4Miw2ICszODIs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9v
cCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkpCiAgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1lcjo6
Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0
ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1Rh
YmxlKQorICAgICwgbV9wcml2YXRlU3ltYm9sUmVnaXN0cnkoV1RGOjpTeW1ib2xSZWdpc3RyeTo6
VHlwZTo6UHJpdmF0ZVN5bWJvbCkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAs
IGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29k
ZVdvcmRGb3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzFmYTJhNjA2OTI4Li4yN2FhZmMwMzI2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzE0LDYgKzcxNCw3IEBAIHB1YmxpYzoKIAog
ICAgIEF0b21TdHJpbmdUYWJsZSogbV9hdG9tU3RyaW5nVGFibGU7CiAgICAgV1RGOjpTeW1ib2xS
ZWdpc3RyeSBtX3N5bWJvbFJlZ2lzdHJ5OworICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9wcml2
YXRlU3ltYm9sUmVnaXN0cnk7CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7
CiAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0
cmluZ3M7CkBAIC03MjUsNiArNzI2LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1RhYmxl
KiBhdG9tU3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQog
ICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1i
b2xSZWdpc3RyeTsgfQorICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHByaXZhdGVTeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OyB9CiAKICAgICBTdHJvbmc8
SlNCaWdJbnQ+IGhlYXBCaWdJbnRDb25zdGFudE9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YmNkMjRmOWI3MTcuLjE3
MWIyMTVjYzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0xMC0yMSAgWGFuIEzDs3BleiAg
PHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50aWZp
ZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9scyBm
b3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAgIGNv
bXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBpZGVu
dGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBhZGQg
c3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29sbGlz
aW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNzCisg
ICAgICAgIHNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFs
aXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5jcHA6Cisg
ICAgICAgIChXVEY6OlJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRlKTogYWRkIGEg
bWV0aG9kIHRvIGNyZWF0ZSBhIHJlZ2lzdGVyZWQgcHJpdmF0ZSBzeW1ib2wgZnJvbSBhIHN0cmlu
ZyBrZXkuCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAqIHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnN5
bWJvbEZvcktleSk6IGNvbnNpZGVyIHRoYXQgd2UgY2FuIGhvbGQgcHJpdmF0ZSBzeW1ib2xzIG5v
dyB0b28uCisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaDoKKyAgICAgICAgKFdU
Rjo6U3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJlZ2lzdHJ5KTogbmV3IGVudW0gdHlwZSBmb3IgcHVi
bGljL3ByaXZhdGUgc3ltYm9scy4KKwogMjAyMC0xMS0wOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2MDMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAyMTg5OTg5OTg4MzAuLmVhZGUwMTY0YmYwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCBSZWY8UmVn
aXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwLCBTeW1ib2xSZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lz
dHJ5KSk7CiB9CiAKK1JlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbElt
cGw6OmNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYgc3ltYm9s
UmVnaXN0cnkpCit7CisgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVyc2hpcCgp
ID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwOworICAg
IEFTU0VSVChvd25lclJlcC0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsK
KyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdp
c3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhOCwgcmVwLmxlbmd0aCgpLCAqb3duZXJSZXAsIHN5
bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2ZsYWdJc1ByaXZhdGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRhMTYs
IHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19mbGFnSXNSZWdpc3Rl
cmVkIHwgc19mbGFnSXNQcml2YXRlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbEltcGwuaAppbmRleCA2MzEwZGM1NzNjZjUuLjQ3NDZjNDk4Yjc3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTE1NiwxNSArMTU2LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhclN5bWJvbFJlZ2lzdHJ5KCkgeyBtX3N5bWJvbFJlZ2lzdHJ5ID0gbnVsbHB0cjsg
fQogCiAgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlKFN0cmluZ0lt
cGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsKKyAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1i
b2xJbXBsPiBjcmVhdGVQcml2YXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmKTsK
IAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdp
c3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShi
YXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lz
dGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUo
YmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAg
IHsKICAgICB9CiAKLSAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdp
c3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgs
IFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVkU3ltYm9s
SW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5n
SW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnksIEZsYWdzIGZsYWdzID0gc19m
bGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3Ro
LCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdp
c3RyeSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApp
bmRleCAwZDkwYTUxN2UzMjQuLmM0N2ViODBlNjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitT
eW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoVHlwZSB0eXBlKQorICAgIDogbV9zeW1ib2xU
eXBlKHR5cGUpCit7Cit9CisKIFN5bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQogewog
ICAgIGZvciAoYXV0byYga2V5IDogbV90YWJsZSkgewpAQCAtNDQsOSArNDksMTQgQEAgUmVmPFJl
Z2lzdGVyZWRTeW1ib2xJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KGNvbnN0IFN0
cmluZyYgcmVwKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihhZGRS
ZXN1bHQuaXRlcmF0b3ItPmltcGwoKSktPmFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsKICAgICB9
CiAKLSAgICBhdXRvIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5p
bXBsKCksICp0aGlzKTsKLSAgICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlL
ZXkoJnN5bWJvbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN5bWJvbDsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJlZFN5bWJvbEltcGw+IHN5bWJvbDsKKyAgICBpZiAobV9zeW1ib2xUeXBlID09IFR5cGU6OlBy
aXZhdGVTeW1ib2wpCisgICAgICAgIHN5bWJvbCA9IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVh
dGVQcml2YXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisgICAgZWxzZQorICAgICAgICBzeW1ib2wg
PSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7CisKKyAg
ICAqYWRkUmVzdWx0Lml0ZXJhdG9yID0gU3ltYm9sUmVnaXN0cnlLZXkoc3ltYm9sLmdldCgpKTsK
KyAgICByZXR1cm4gc3ltYm9sLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgU3ltYm9sUmVn
aXN0cnk6OnJlbW92ZShSZWdpc3RlcmVkU3ltYm9sSW1wbCYgdWlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oCmluZGV4IDU1ODk3OWFlODE2NS4uMWMyNDE5MzY0NmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw4IEBAIGNsYXNzIFN5bWJv
bFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7CiBwdWJsaWM6Ci0gICAgU3ltYm9sUmVnaXN0cnko
KSA9IGRlZmF1bHQ7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IFB1YmxpY1N5bWJv
bCwgUHJpdmF0ZVN5bWJvbCB9OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTeW1ib2xSZWdpc3Ry
eShUeXBlID0gVHlwZTo6UHVibGljU3ltYm9sKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN5
bWJvbFJlZ2lzdHJ5KCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFJlZ2lzdGVyZWRT
eW1ib2xJbXBsPiBzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJik7CkBAIC04Nyw2ICs4OCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIYXNoU2V0PFN5bWJvbFJlZ2lzdHJ5S2V5PiBtX3Rh
YmxlOworICAgIFR5cGUgbV9zeW1ib2xUeXBlOwogfTsKIAogaW5saW5lIFN5bWJvbFJlZ2lzdHJ5
S2V5OjpTeW1ib2xSZWdpc3RyeUtleShTdHJpbmdJbXBsKiB1aWQpCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413795</attachid>
            <date>2020-11-11 01:15:42 -0800</date>
            <delta_ts>2020-11-11 04:40:08 -0800</delta_ts>
            <desc>Use symbols as identifiers, v14</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>23006</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAwNDExMGRiOGQ1ZTIzMmUyZmMzM2I5YzBjMDMxYjE4YTg5YzdiN2E4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCkpTVGVzdHM6CgoqIHN0
cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qczogbmV3IHRlc3QsIG1ha2Ugc3VyZQpzZXRGdW5j
dGlvbk5hbWUgd29ya3MgcHJvcGVybHkgd2l0aCBjb21wdXRlZCBmaWVsZHMuCihwcm90b3R5cGUu
YXNzZXJ0U2FtZS5sZXQuQyk6Cihwcm90b3R5cGUuYXNzZXJ0U2FtZSk6CgpTb3VyY2UvSmF2YVNj
cmlwdENvcmU6CgoqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgooSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21tZW50Lgoq
IHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
IHVzZSBwcml2YXRlIGlkZW50aWZpZXJzIGZvciBjb21wdXRlZCBmaWVsZHMgcHJvcGVydHkga2V5
cy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVy
U291cmNlRWxlbWVudHMpOiBkaXR0by4KKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgooSlNDOjpJ
ZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IG1ldGhvZCB0byBjcmVhdGUg
YSBwcml2YXRlIGlkZW50aWZpZXIuCiogcGFyc2VyL1BhcnNlckFyZW5hLmg6CiogcnVudGltZS9D
YWNoZWRUeXBlcy5jcHA6CihKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5jb2Rl
KTogY29uc2lkZXIgcmVnaXN0ZXJlZCBzeW1ib2xzLCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBwYXJz
ZXIgbm93LgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25zdCk6
IGRpdHRvLgoqIHJ1bnRpbWUvVk0uY3BwOgooSlNDOjpWTTo6Vk0pOgoqIHJ1bnRpbWUvVk0uaDoK
KEpTQzo6Vk06OnByaXZhdGVTeW1ib2xSZWdpc3RyeSk6IGNyZWF0ZSBhIHByaXZhdGUgc3ltYm9s
IHJlZ2lzdHJ5IHRvby4KClNvdXJjZS9XVEY6CgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgoo
V1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0
byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5Lgoq
IHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6CihX
VEY6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRlciB0aGF0IHdlIGNhbiBo
b2xkIHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6
CihXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSk6IG5ldyBlbnVtIHR5cGUgZm9y
IHB1YmxpYy9wcml2YXRlIHN5bWJvbHMuCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrCiBKU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtaGFybW9ueS5qcyAgICAgICAgfCAxNCArKysrKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysrKysK
IC4uLi9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEwICsrKysr
LS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAgICAgICB8IDEyICsr
KystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCAgfCAg
OCArKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oICAgIHwg
IDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIHwgMjEg
KysrKysrKysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCAgICAg
ICAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAg
ICB8ICAyICsrCiBTb3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAyMSArKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCAg
ICAgICAgICAgIHwgIDkgKysrKysrCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCAg
ICAgICAgICAgICAgfCAgOSArKystLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0
cnkuY3BwICAgICAgICB8IDE2ICsrKysrKysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaCAgICAgICAgICB8ICA0ICsrLQogMTUgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2Vy
dGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTEwMGY5OTJkYTY1Li5mZTAyNTVlNDA0MDIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMjAtMTEtMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRz
IGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlz
IG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBp
cyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAg
IHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFs
c28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAg
ICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qczogbmV3IHRlc3QsIG1ha2Ugc3Vy
ZQorICAgICAgICBzZXRGdW5jdGlvbk5hbWUgd29ya3MgcHJvcGVybHkgd2l0aCBjb21wdXRlZCBm
aWVsZHMuCisgICAgICAgIChwcm90b3R5cGUuYXNzZXJ0U2FtZS5sZXQuQyk6CisgICAgICAgIChw
cm90b3R5cGUuYXNzZXJ0U2FtZSk6CisKIDIwMjAtMTEtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEFsaWduICVUeXBlZEFycmF5JSBiZWhhdmlv
ciB3aXRoIHJlY2VudCBzcGVjIGFkanVzdG1lbnRzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtaGFybW9ueS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1o
YXJtb255LmpzCmluZGV4IGRiZjQ2ZDUyN2IxZS4uNTVkMzg5YzEyYWY0IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtaGFybW9ueS5qcwpAQCAtOTA2LDMgKzkwNiwxNyBAQCB4KCkoKTsKICAg
YXNzZXJ0U2FtZSh0aGlzSW5Db25zdHJ1Y3RvciwgYyk7CiB9CiAKKy8vIEFkZGl0aW9uYWwgdGVz
dHMgYnkgdGhlIFdlYktpdCBwcm9qZWN0LgorCit7CisgIGxldCB4ID0gMDsKKworICBsZXQgQyA9
IGNsYXNzIHsKKyAgICBbeF0gPSAoKSA9PiB7CisgICAgICByZXR1cm4gMjsKKyAgICB9CisgIH0K
KworICBsZXQgYyA9IG5ldyBDKCk7CisgIGFzc2VydFNhbWUoY1t4XSgpLCAyKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCmluZGV4IDgyMGYxNGMxM2JhZS4uNmFmYTkwOGM1ZTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMS0xMSAgWGFuIEzDs3Bl
eiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBzeW1ib2xzIGFzIGlkZW50
aWZpZXJzIGZvciBjbGFzcyBmaWVsZHMgY29tcHV0ZWQgbmFtZXMgc3RvcmFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHByaXZhdGUgc3ltYm9s
cyBmb3IgdGhlIHByb3BlcnR5IGtleXMgb2YgdGhlIGNsYXNzIGZpZWxkcyB3aXRoCisgICAgICAg
IGNvbXB1dGVkIG5hbWVzLiBUaGlzIGlzIGNsZWFuZXIgdGhhbiB1c2luZyByYXcgbnVtZXJpYyBp
ZGVudGlmaWVycyBhbmQKKyAgICAgICAgd2lsbCBiZSBsZXNzIGN1bWJlcnNvbWUgd2hlbiB3ZSBh
ZGQgc3RhdGljIGZpZWxkcy4gSXQgYWxzbyBwcmV2ZW50cworICAgICAgICBwb3RlbnRpYWwgY29s
bGlzaW9ucyBpZiBvdGhlciBmZWF0dXJlcyB3YW50IHRvIHN0b3JlIGRhdGEgaW4gdGhlIGNsYXNz
CisgICAgICAgIHNjb3BlLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVs
ZE5hbWUpOiBhZGFwdCBhIGNvbW1lbnQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogdXNlIHByaXZhdGUg
aWRlbnRpZmllcnMgZm9yIGNvbXB1dGVkIGZpZWxkcyBwcm9wZXJ0eSBrZXlzLgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3Vy
Y2VFbGVtZW50cyk6IGRpdHRvLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5jcHA6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVyKTogbWV0
aG9kIHRvIGNyZWF0ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyQXJlbmEuaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGxCYXNlOjplbmNvZGUpOiBjb25zaWRlciByZWdp
c3RlcmVkIHN5bWJvbHMsIHRoZXkgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBub3cuCisgICAgICAg
IChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZGVjb2RlIGNvbnN0KTogZGl0dG8u
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6cHJpdmF0ZVN5bWJvbFJlZ2lz
dHJ5KTogY3JlYXRlIGEgcHJpdmF0ZSBzeW1ib2wgcmVnaXN0cnkgdG9vLgorCiAyMDIwLTExLTEw
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YWQ4NDk4MDg2NGIuLjFlMjVk
OGRjMGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBQCiAgICAgQVNTRVJUKG5vZGUuaXNDb21wdXRlZENsYXNzRmllbGQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BlcnR5RXhwcjsKIAotICAgIC8vIFRoZSAnbmFtZScgcmVmZXJzIHRv
IGEgc3ludGhldGljIG51bWVyaWMgdmFyaWFibGUgbmFtZSBpbiB0aGUgcHJpdmF0ZSBuYW1lIHNj
b3BlLCB3aGVyZSB0aGUgcHJvcGVydHkga2V5IGlzIHNhdmVkIGZvciBsYXRlciB1c2UuCisgICAg
Ly8gVGhlICduYW1lJyByZWZlcnMgdG8gYSBzeW50aGV0aWMgcHJpdmF0ZSBuYW1lIGluIHRoZSBj
bGFzcyBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtleSBpcyBzYXZlZCBmb3IgbGF0ZXIgdXNl
LgogICAgIGNvbnN0IElkZW50aWZpZXImIGRlc2NyaXB0aW9uID0gKm5vZGUubmFtZSgpOwogICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShkZXNjcmlwdGlvbik7CiAgICAgQVNT
RVJUKCF2YXIubG9jYWwoKSk7CkBAIC00ODE3LDEyICs0ODE3LDE0IEBAIFJlZ2lzdGVySUQqIEF3
YWl0RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklECiB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBib29sIHNob3VsZFNldEZ1
bmN0aW9uTmFtZSA9IGZhbHNlOwogCiAgICAgaWYgKCFtX2Fzc2lnbikKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbHNlIHsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX2Fzc2lnbik7Ci0gICAgICAg
IGlmIChtX2lkZW50ICYmIGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobV9hc3NpZ24p
KQorICAgICAgICBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBnZW5lcmF0b3Iuc2hvdWxkU2V0RnVu
Y3Rpb25OYW1lKG1fYXNzaWduKTsKKyAgICAgICAgaWYgKG1faWRlbnQgJiYgc2hvdWxkU2V0RnVu
Y3Rpb25OYW1lICYmIG1fdHlwZSAhPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFt
ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rpb25OYW1lKHZhbHVlLmdldCgp
LCAqbV9pZGVudCk7CiAgICAgfQogCkBAIC00ODUwLDcgKzQ4NTIsNyBAQCB2b2lkIERlZmluZUZp
ZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4MzMwCiAKICAgICAgICAgLy8gRm9yIENvbXB1dGVkTmFtZXMsIHRoZSBleHByZXNzaW9u
IGhhcyBhbHJlYWR5IGJlZW4gZXZhbHVhdGVkIGVhcmxpZXIgZHVyaW5nIGV2YWx1YXRpb24gb2Yg
YSBDbGFzc0V4cHJOb2RlLgotICAgICAgICAvLyBIZXJlLCBgbV9pZGVudGAgcmVmZXJzIHRvIGFu
IGludGVnZXIgSUQgaW4gYSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1
ZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhbiBFeHByZXNzaW9uLgorICAgICAgICAvLyBIZXJlLCBg
bV9pZGVudGAgcmVmZXJzIHRvIHByaXZhdGUgc3ltYm9sIElEIGluIGEgY2xhc3MgbGV4aWNhbCBz
Y29wZSwgY29udGFpbmluZyB0aGUgdmFsdWUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gRXhwcmVz
c2lvbi4KICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCptX2lkZW50
KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJDb21wdXRlZCBu
YW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtNDg1OCw2
ICs0ODYwLDggQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5n
ZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgaWYgKHNo
b3VsZFNldEZ1bmN0aW9uTmFtZSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rp
b25OYW1lKHZhbHVlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlvbiwgbV9w
b3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
RGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9w
ZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlIHwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGUx
OTBlNjkzNjk5NS4uNTAwMTQwYzVjM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC0yODM3LDYgKzI4MzcsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdAog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXNzRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgY2xh
c3NFeHByLCBjbGFzc1N0YXJ0LCBjbGFzc0VuZCwgY2xhc3NTdGFydExpbmUsIGNsYXNzRW5kTGlu
ZSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGluc3RhbmNlQ29tcHV0ZWRO
YW1lUHJlZml4IHsgImluc3RhbmNlQ29tcHV0ZWROYW1lIl9zIH07CisKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5m
bzxUcmVlQnVpbGRlcj4mIGluZm8pCiB7CkBAIC0yOTk2LDcgKzI5OTgsNyBAQCBwYXJzZU1ldGhv
ZDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1l
KSB7Ci0gICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJl
bmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7Cisg
ICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5t
YWtlUHJpdmF0ZUlkZW50aWZpZXIobV92bSwgaW5zdGFuY2VDb21wdXRlZE5hbWVQcmVmaXgsIG51
bUNvbXB1dGVkRmllbGRzKyspOwogICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayBkZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUo
aWRlbnQsIHRydWUpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25S
ZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CiAg
ICAgICAgICAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKQEAg
LTMwNzcsNyArMzA3OSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAKICAgICAgICAgSlNU
b2tlbkxvY2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24g
Y29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUg
dHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rv
a2VuLm1fdHlwZSkgewogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgpAQCAtMzEwMSwxNCArMzEw
MiwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICAgICAgQVNTRVJUKGlkZW50
KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE9QRU5CUkFDS0VUOgorICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgICAgICBu
ZXh0KCk7Ci0gICAgICAgICAgICBjb21wdXRlZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRl
ZFByb3BlcnR5TmFtZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBj
b21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JG
YWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsK
LSAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFr
ZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOworICAgICAgICAg
ICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlUHJpdmF0ZUlk
ZW50aWZpZXIobV92bSwgaW5zdGFuY2VDb21wdXRlZE5hbWVQcmVmaXgsIG51bUNvbXB1dGVkRmll
bGRzKyspOwogICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0
ZWROYW1lOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAg
ICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IGM3MTk4ODYyNDFkMy4uYzU5ZTA2OGFmNDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtMTA3
LDQgKzEwNywxMiBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJ
bnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIHJldHVybiBtX2lkZW50
aWZpZXJzLmxhc3QoKTsKIH0KIAorY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjpt
YWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcHJlZml4LCB1bnNpZ25l
ZCBpZGVudGlmaWVyKQoreworICAgIFN0cmluZyBzeW1ib2xOYW1lID0gbWFrZVN0cmluZyhwcmVm
aXgsIGlkZW50aWZpZXIpOworICAgIGF1dG8gc3ltYm9sID0gdm0ucHJpdmF0ZVN5bWJvbFJlZ2lz
dHJ5KCkuc3ltYm9sRm9yS2V5KHN5bWJvbE5hbWUpOworICAgIG1faWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXI6OmZyb21VaWQoc3ltYm9sKSk7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcnMu
bGFzdCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKaW5kZXggOGJiOWQ1ZWI5MDkyLi5iZTI3ZjM0YjFjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZUJpZ0ludERlY2ltYWxJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3QgcmFkaXgpOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtYWtlTnVtZXJpY0lkZW50aWZpZXIoVk0mLCBkb3VibGUgbnVtYmVyKTsK
KyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiwgQVND
SUlMaXRlcmFsLCB1bnNpZ25lZCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDhhYjBmOWUzOTk4YS4uYzM1NGMy
YjljMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCkBAIC03MDIsMTQgKzcwMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lzQXRv
bWljID0gc3RyaW5nLmlzQXRvbSgpOwogICAgICAgICBtX2lzU3ltYm9sID0gc3RyaW5nLmlzU3lt
Ym9sKCk7CisgICAgICAgIG1faXNSZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAgIG1faXNXZWxs
S25vd25TeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgbV9pc1ByaXZhdGUgPSBmYWxzZTsKICAgICAg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBjb25zdF9jYXN0PFN0cmluZ0ltcGwqPigmc3Ry
aW5nKTsKIAogICAgICAgICBpZiAobV9pc1N5bWJvbCkgewogICAgICAgICAgICAgU3ltYm9sSW1w
bCogc3ltYm9sID0gc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGltcGwuZ2V0KCkpOworICAgICAg
ICAgICAgbV9pc1JlZ2lzdGVyZWQgPSBzeW1ib2wtPmlzUmVnaXN0ZXJlZCgpOworICAgICAgICAg
ICAgbV9pc1ByaXZhdGUgPSBzeW1ib2wtPmlzUHJpdmF0ZSgpOwogICAgICAgICAgICAgaWYgKCFz
eW1ib2wtPmlzTnVsbFN5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBzcGVj
aWFsIGhhbmRsaW5nIGZvciB3ZWxsLWtub3duIHN5bWJvbHMuCi0gICAgICAgICAgICAgICAgaWYg
KCFzeW1ib2wtPmlzUHJpdmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2lzUHJpdmF0
ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2lzV2VsbEtub3duU3ltYm9sID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgaW1wbCA9IHN5bWJvbC0+c3Vic3RyaW5nKHN0cmxlbigiU3ltYm9s
LiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC03NDIsMTAgKzc0NiwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmdJbXBsOjphZGQoYnVmZmVyLCBtX2xlbmd0
aCkubGVha1JlZigpOwogCiAgICAgICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2w7Ci0gICAgICAg
ICAgICBpZiAobV9pc1dlbGxLbm93blN5bWJvbCkKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBk
ZWNvZGVyLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3du
U3ltYm9sKGJ1ZmZlciwgbV9sZW5ndGgpOworICAgICAgICAgICAgVk0mIHZtID0gZGVjb2Rlci52
bSgpOworICAgICAgICAgICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAgICAg
U3RyaW5nIHN0cihidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9pc1By
aXZhdGUpCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbElt
cGwqPigmdm0ucHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cikubGVha1Jl
ZigpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbCA9
IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPigmdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JL
ZXkoc3RyKS5sZWFrUmVmKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lzV2VsbEtub3du
U3ltYm9sKQorICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBkZWNvZGVyLnZtKCkucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0
aCk7CisgICAgICAgICAgICAgICAgc3ltYm9sID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkubG9va1VwUHJpdmF0ZU5hbWUoYnVmZmVyLCBtX2xlbmd0aCk7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzeW1ib2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJvbDsK
ICAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQoKTsK
QEAgLTc3Myw2ICs3ODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N5bWJvbCA6IDE7CiAg
ICAgYm9vbCBtX2lzV2VsbEtub3duU3ltYm9sIDogMTsKICAgICBib29sIG1faXNBdG9taWMgOiAx
OworICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWQgOiAxOworICAgIGJvb2wgbV9pc1ByaXZhdGUgOiAx
OwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IGFkOGZiMDkyNjAxMS4uZjVhYTVkNDMxZmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zODIsNiArMzgyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nl
c3MpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgZGVm
ZXJyZWRXb3JrVGltZXIoRGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBt
X2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0
b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKKyAgICAsIG1fcHJpdmF0ZVN5
bWJvbFJlZ2lzdHJ5KFdURjo6U3ltYm9sUmVnaXN0cnk6OlR5cGU6OlByaXZhdGVTeW1ib2wpCiAg
ICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3Qp
CiAgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQobWFr
ZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDcxZmEyYTYwNjkyOC4uMjdhYWZjMDMyNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTcxNCw2ICs3MTQsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIG1f
YXRvbVN0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdpc3Ry
eTsKKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OwogICAg
IENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IEFyZ0xpc3QqIGVt
cHR5TGlzdDsKICAgICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtNzI1LDYgKzcyNiw3
IEBAIHB1YmxpYzoKIAogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5
JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KKyAgICBXVEY6
OlN5bWJvbFJlZ2lzdHJ5JiBwcml2YXRlU3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3ByaXZh
dGVTeW1ib2xSZWdpc3RyeTsgfQogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29u
c3RhbnRPbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYzMxY2YwZDFmOTkyLi4yNzkzMmM0ZTk5OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjAtMTEtMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRzIGNv
bXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9m
IHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBpcyBj
bGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAgIHdp
bGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFsc28g
cHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVyZXMg
d2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3BwOgorICAgICAgICAoV1RGOjpSZWdpc3RlcmVkU3lt
Ym9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhvZCB0byBjcmVhdGUgYSByZWdpc3Rl
cmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5LgorICAgICAgICAqIHd0Zi90ZXh0
L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRlciB0aGF0
IHdlIGNhbiBob2xkIHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgorICAgICAgICAqIHd0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5Lmg6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xS
ZWdpc3RyeSk6IG5ldyBlbnVtIHR5cGUgZm9yIHB1YmxpYy9wcml2YXRlIHN5bWJvbHMuCisKIDIw
MjAtMTEtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY5NjYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1w
bC5jcHAKaW5kZXggMjE4OTk4OTk4ODMwLi5lYWRlMDE2NGJmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xJbXBsLmNwcApAQCAtNzksNCArNzksMTMgQEAgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBs
PiBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmUK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWdpc3RlcmVkU3ltYm9sSW1wbChyZXAubV9kYXRh
MTYsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSkpOwogfQogCitSZWY8
UmVnaXN0ZXJlZFN5bWJvbEltcGw+IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOjpjcmVhdGVQcml2YXRl
KFN0cmluZ0ltcGwmIHJlcCwgU3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KQoreworICAg
IGF1dG8qIG93bmVyUmVwID0gKHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJp
bmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcDsKKyAgICBBU1NFUlQob3duZXJSZXAt
PmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisgICAgaWYgKHJlcC5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwo
cmVwLm1fZGF0YTgsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwLCBzeW1ib2xSZWdpc3RyeSwgc19m
bGFnSXNSZWdpc3RlcmVkIHwgc19mbGFnSXNQcml2YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpv
d25lclJlcCwgc3ltYm9sUmVnaXN0cnksIHNfZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lzUHJp
dmF0ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3ltYm9sSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgK
aW5kZXggNjMxMGRjNTczY2Y1Li40NzQ2YzQ5OGI3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3ltYm9sSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1w
bC5oCkBAIC0xNTYsMTUgKzE1NiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJTeW1ib2xS
ZWdpc3RyeSgpIHsgbV9zeW1ib2xSZWdpc3RyeSA9IG51bGxwdHI7IH0KIAogICAgIHN0YXRpYyBS
ZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJl
Z2lzdHJ5Jik7CisgICAgc3RhdGljIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gY3JlYXRlUHJp
dmF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7CiAKLSAgICBSZWdpc3RlcmVk
U3ltYm9sSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8
U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnkpCi0gICAgICAgIDog
U3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUmVn
aXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVkU3ltYm9sSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3Ry
eSYgcmVnaXN0cnksIEZsYWdzIGZsYWdzID0gc19mbGFnSXNSZWdpc3RlcmVkKQorICAgICAgICA6
IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBmbGFncykKICAg
ICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdpc3RyeSkKICAgICB7CiAgICAgfQogCi0gICAg
UmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQot
ICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBz
X2ZsYWdJc1JlZ2lzdGVyZWQpCisgICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3lt
Ym9sUmVnaXN0cnkmIHJlZ2lzdHJ5LCBGbGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkK
KyAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwg
ZmxhZ3MpCiAgICAgICAgICwgbV9zeW1ib2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKaW5kZXggMGQ5MGE1MTdlMzI0
Li5jNDdlYjgwZTY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCkBA
IC0yOCw2ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorU3ltYm9sUmVnaXN0cnk6OlN5
bWJvbFJlZ2lzdHJ5KFR5cGUgdHlwZSkKKyAgICA6IG1fc3ltYm9sVHlwZSh0eXBlKQoreworfQor
CiBTeW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKIHsKICAgICBmb3IgKGF1dG8mIGtl
eSA6IG1fdGFibGUpIHsKQEAgLTQ0LDkgKzQ5LDE0IEBAIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1w
bD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmIHJlcCkKICAgICAg
ICAgcmV0dXJuICpzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4oYWRkUmVzdWx0Lml0ZXJhdG9yLT5p
bXBsKCkpLT5hc1JlZ2lzdGVyZWRTeW1ib2xJbXBsKCk7CiAgICAgfQogCi0gICAgYXV0byBzeW1i
b2wgPSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlKCpyZXAuaW1wbCgpLCAqdGhpcyk7Ci0g
ICAgKmFkZFJlc3VsdC5pdGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KCZzeW1ib2wuZ2V0KCkp
OwotICAgIHJldHVybiBzeW1ib2w7CisgICAgUmVmUHRyPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBz
eW1ib2w7CisgICAgaWYgKG1fc3ltYm9sVHlwZSA9PSBUeXBlOjpQcml2YXRlU3ltYm9sKQorICAg
ICAgICBzeW1ib2wgPSBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSgqcmVwLmlt
cGwoKSwgKnRoaXMpOworICAgIGVsc2UKKyAgICAgICAgc3ltYm9sID0gUmVnaXN0ZXJlZFN5bWJv
bEltcGw6OmNyZWF0ZSgqcmVwLmltcGwoKSwgKnRoaXMpOworCisgICAgKmFkZFJlc3VsdC5pdGVy
YXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KHN5bWJvbC5nZXQoKSk7CisgICAgcmV0dXJuIHN5bWJv
bC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUoUmVn
aXN0ZXJlZFN5bWJvbEltcGwmIHVpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaApp
bmRleCA1NTg5NzlhZTgxNjUuLjFjMjQxOTM2NDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaApAQCAtNzgsNyArNzgsOCBAQCBjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9s
UmVnaXN0cnkpOwogcHVibGljOgotICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBQdWJsaWNTeW1ib2wsIFByaXZhdGVTeW1ib2wg
fTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3ltYm9sUmVnaXN0cnkoVHlwZSA9IFR5cGU6OlB1
YmxpY1N5bWJvbCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TeW1ib2xSZWdpc3RyeSgpOwog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gc3ltYm9s
Rm9yS2V5KGNvbnN0IFN0cmluZyYpOwpAQCAtODcsNiArODgsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSGFzaFNldDxTeW1ib2xSZWdpc3RyeUtleT4gbV90YWJsZTsKKyAgICBUeXBlIG1f
c3ltYm9sVHlwZTsKIH07CiAKIGlubGluZSBTeW1ib2xSZWdpc3RyeUtleTo6U3ltYm9sUmVnaXN0
cnlLZXkoU3RyaW5nSW1wbCogdWlkKQotLSAKMi4yOC4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413811</attachid>
            <date>2020-11-11 04:40:08 -0800</date>
            <delta_ts>2020-11-13 14:32:24 -0800</delta_ts>
            <desc>Use symbols as identifiers, v15</desc>
            <filename>0001-JSC-Use-symbols-as-identifiers-for-class-fields-comp.patch</filename>
            <type>text/plain</type>
            <size>23070</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzMjc3MGU1NzQwOWMyMTMwNzVjZjVlMDc2NWNiM2NiZTNhNzkwMzM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCA0IFNlcCAyMDIwIDE2OjU2OjU5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZpZWxkcyBj
b21wdXRlZAogbmFtZXMgc3RvcmFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MTcyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClVzZSBwcml2YXRlIHN5
bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aApjb21w
dXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRp
ZmllcnMgYW5kCndpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVs
ZHMuIEl0IGFsc28gcHJldmVudHMKcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVy
ZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcwpzY29wZS4KCkpTVGVzdHM6CgoqIHN0
cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qczogbmV3IHRlc3QsIG1ha2Ugc3VyZQpzZXRGdW5j
dGlvbk5hbWUgd29ya3MgcHJvcGVybHkgd2l0aCBjb21wdXRlZCBmaWVsZHMuCgpTb3VyY2UvSmF2
YVNjcmlwdENvcmU6CgoqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgooSlNDOjpQcm9w
ZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21tZW50
LgoqIHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyk6IHVzZSBwcml2YXRlIGlkZW50aWZpZXJzIGZvciBjb21wdXRlZCBmaWVsZHMgcHJvcGVydHkg
a2V5cy4KKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgooSlND
OjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IG1ldGhvZCB0byBjcmVh
dGUgYSBwcml2YXRlIGlkZW50aWZpZXIuCiogcGFyc2VyL1BhcnNlckFyZW5hLmg6CiogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CihKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5j
b2RlKTogY29uc2lkZXIgcmVnaXN0ZXJlZCBzeW1ib2xzLCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBw
YXJzZXIgbm93LgooSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25z
dCk6IGRpdHRvLgoqIHJ1bnRpbWUvVk0uY3BwOgooSlNDOjpWTTo6Vk0pOgoqIHJ1bnRpbWUvVk0u
aDoKKEpTQzo6Vk06OnByaXZhdGVTeW1ib2xSZWdpc3RyeSk6IGNyZWF0ZSBhIHByaXZhdGUgc3lt
Ym9sIHJlZ2lzdHJ5IHRvby4KClNvdXJjZS9XVEY6CgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3Bw
OgooV1RGOjpSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRlUHJpdmF0ZSk6IGFkZCBhIG1ldGhv
ZCB0byBjcmVhdGUgYSByZWdpc3RlcmVkIHByaXZhdGUgc3ltYm9sIGZyb20gYSBzdHJpbmcga2V5
LgoqIHd0Zi90ZXh0L1N5bWJvbEltcGwuaDoKKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6
CihXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOiBjb25zaWRlciB0aGF0IHdlIGNh
biBob2xkIHByaXZhdGUgc3ltYm9scyBub3cgdG9vLgoqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
Lmg6CihXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSk6IG5ldyBlbnVtIHR5cGUg
Zm9yIHB1YmxpYy9wcml2YXRlIHN5bWJvbHMuCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKwogSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLWhhcm1vbnkuanMgICAgICAgIHwgMjEgKysrKysrKysrKysrKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysr
KysrKysKIC4uLi9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCAgICAgICAgICAgICB8IDEw
ICsrKysrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAgICAgICB8
IDEyICsrKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNw
cCAgfCAgOCArKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
ICAgIHwgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
IHwgMjEgKysrKysrKysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCAgICAgICAgICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAg
ICAgICAgICB8ICAyICsrCiBTb3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyMSArKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmNwcCAgICAgICAgICAgIHwgIDkgKysrKysrCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbElt
cGwuaCAgICAgICAgICAgICAgfCAgOSArKystLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuY3BwICAgICAgICB8IDE2ICsrKysrKysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaCAgICAgICAgICB8ICA0ICsrLQogMTUgZmlsZXMgY2hhbmdlZCwgMTYw
IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTEwMGY5OTJkYTY1Li44YzVjZDRlMzVj
NTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEtMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBhcyBpZGVudGlmaWVycyBmb3IgY2xhc3Mg
ZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRlIHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0
eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAorICAgICAgICBjb21wdXRlZCBuYW1lcy4g
VGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51bWVyaWMgaWRlbnRpZmllcnMgYW5kCisg
ICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdoZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMu
IEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIg
ZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRoZSBjbGFzcworICAgICAgICBzY29wZS4K
KworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qczogbmV3IHRlc3QsIG1h
a2Ugc3VyZQorICAgICAgICBzZXRGdW5jdGlvbk5hbWUgd29ya3MgcHJvcGVybHkgd2l0aCBjb21w
dXRlZCBmaWVsZHMuCisKIDIwMjAtMTEtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIEFsaWduICVUeXBlZEFycmF5JSBiZWhhdmlvciB3aXRoIHJl
Y2VudCBzcGVjIGFkanVzdG1lbnRzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtaGFybW9ueS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1oYXJtb255Lmpz
CmluZGV4IGRiZjQ2ZDUyN2IxZS4uMmZlYWM4MmRhOTFhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtaGFybW9ueS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtaGFybW9ueS5qcwpAQCAtOTA2LDMgKzkwNiwyNCBAQCB4KCkoKTsKICAgYXNzZXJ0U2Ft
ZSh0aGlzSW5Db25zdHJ1Y3RvciwgYyk7CiB9CiAKKy8vIEFkZGl0aW9uYWwgdGVzdHMgYnkgdGhl
IFdlYktpdCBwcm9qZWN0LgorCit7CisgIGxldCB4ID0gMDsKKyAgbGV0IHkgPSAnZm9vJzsKKyAg
bGV0IHogPSB7IG5hbWU6ICd0ZXN0JyB9OworCisgIGxldCBDID0gY2xhc3MgeworICAgIFt4XSA9
ICgpID0+IHsKKyAgICAgIHJldHVybiAyOworICAgIH07CisgICAgW3ldID0gY2xhc3Mge307Cisg
ICAgW3pdID0gY2xhc3MgRCB7fTsKKyAgfQorCisgIGxldCBjID0gbmV3IEMoKTsKKyAgYXNzZXJ0
U2FtZShjW3hdKCksIDIpOworICBhc3NlcnRTYW1lKGNbeF0ubmFtZSwgJzAnKTsKKyAgYXNzZXJ0
U2FtZShjW3ldLm5hbWUsICdmb28nKTsKKyAgYXNzZXJ0U2FtZShjW3pdLm5hbWUsICdEJyk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4MjBmMTRjMTNiYWUuLjZhZmE5MDhjNWU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTEtMTEgIFhh
biBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBVc2Ugc3ltYm9scyBh
cyBpZGVudGlmaWVycyBmb3IgY2xhc3MgZmllbGRzIGNvbXB1dGVkIG5hbWVzIHN0b3JhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwcml2YXRl
IHN5bWJvbHMgZm9yIHRoZSBwcm9wZXJ0eSBrZXlzIG9mIHRoZSBjbGFzcyBmaWVsZHMgd2l0aAor
ICAgICAgICBjb21wdXRlZCBuYW1lcy4gVGhpcyBpcyBjbGVhbmVyIHRoYW4gdXNpbmcgcmF3IG51
bWVyaWMgaWRlbnRpZmllcnMgYW5kCisgICAgICAgIHdpbGwgYmUgbGVzcyBjdW1iZXJzb21lIHdo
ZW4gd2UgYWRkIHN0YXRpYyBmaWVsZHMuIEl0IGFsc28gcHJldmVudHMKKyAgICAgICAgcG90ZW50
aWFsIGNvbGxpc2lvbnMgaWYgb3RoZXIgZmVhdHVyZXMgd2FudCB0byBzdG9yZSBkYXRhIGluIHRo
ZSBjbGFzcworICAgICAgICBzY29wZS4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0U2F2ZUNvbXB1
dGVkRmllbGROYW1lKTogYWRhcHQgYSBjb21tZW50LgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IHVzZSBw
cml2YXRlIGlkZW50aWZpZXJzIGZvciBjb21wdXRlZCBmaWVsZHMgcHJvcGVydHkga2V5cy4KKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyU291cmNlRWxlbWVudHMpOiBkaXR0by4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmll
cik6IG1ldGhvZCB0byBjcmVhdGUgYSBwcml2YXRlIGlkZW50aWZpZXIuCisgICAgICAgICogcGFy
c2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsQmFzZTo6ZW5jb2RlKTogY29uc2lk
ZXIgcmVnaXN0ZXJlZCBzeW1ib2xzLCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgbm93Lgor
ICAgICAgICAoSlNDOjpDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbEJhc2U6OmRlY29kZSBjb25zdCk6
IGRpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnByaXZhdGVTeW1i
b2xSZWdpc3RyeSk6IGNyZWF0ZSBhIHByaXZhdGUgc3ltYm9sIHJlZ2lzdHJ5IHRvby4KKwogMjAy
MC0xMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNWFkODQ5ODA4NjRi
Li4xZTI1ZDhkYzBlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUAogICAgIEFTU0VSVChub2RlLmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eUV4cHI7CiAKLSAgICAvLyBUaGUgJ25hbWUnIHJl
ZmVycyB0byBhIHN5bnRoZXRpYyBudW1lcmljIHZhcmlhYmxlIG5hbWUgaW4gdGhlIHByaXZhdGUg
bmFtZSBzY29wZSwgd2hlcmUgdGhlIHByb3BlcnR5IGtleSBpcyBzYXZlZCBmb3IgbGF0ZXIgdXNl
LgorICAgIC8vIFRoZSAnbmFtZScgcmVmZXJzIHRvIGEgc3ludGhldGljIHByaXZhdGUgbmFtZSBp
biB0aGUgY2xhc3Mgc2NvcGUsIHdoZXJlIHRoZSBwcm9wZXJ0eSBrZXkgaXMgc2F2ZWQgZm9yIGxh
dGVyIHVzZS4KICAgICBjb25zdCBJZGVudGlmaWVyJiBkZXNjcmlwdGlvbiA9ICpub2RlLm5hbWUo
KTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZGVzY3JpcHRpb24pOwog
ICAgIEFTU0VSVCghdmFyLmxvY2FsKCkpOwpAQCAtNDgxNywxMiArNDgxNywxNCBAQCBSZWdpc3Rl
cklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRAogdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgYm9vbCBzaG91
bGRTZXRGdW5jdGlvbk5hbWUgPSBmYWxzZTsKIAogICAgIGlmICghbV9hc3NpZ24pCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9hc3NpZ24pOwot
ICAgICAgICBpZiAobV9pZGVudCAmJiBnZW5lcmF0b3Iuc2hvdWxkU2V0RnVuY3Rpb25OYW1lKG1f
YXNzaWduKSkKKyAgICAgICAgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3Vs
ZFNldEZ1bmN0aW9uTmFtZShtX2Fzc2lnbik7CisgICAgICAgIGlmIChtX2lkZW50ICYmIHNob3Vs
ZFNldEZ1bmN0aW9uTmFtZSAmJiBtX3R5cGUgIT0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21w
dXRlZE5hbWUpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0aW9uTmFtZSh2YWx1
ZS5nZXQoKSwgKm1faWRlbnQpOwogICAgIH0KIApAQCAtNDg1MCw3ICs0ODUyLDcgQEAgdm9pZCBE
ZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKikKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODMzMAogCiAgICAgICAgIC8vIEZvciBDb21wdXRlZE5hbWVzLCB0aGUgZXhw
cmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBlYXJsaWVyIGR1cmluZyBldmFsdWF0
aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KLSAgICAgICAgLy8gSGVyZSwgYG1faWRlbnRgIHJlZmVy
cyB0byBhbiBpbnRlZ2VyIElEIGluIGEgY2xhc3MgbGV4aWNhbCBzY29wZSwgY29udGFpbmluZyB0
aGUgdmFsdWUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gRXhwcmVzc2lvbi4KKyAgICAgICAgLy8g
SGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJvbCBJRCBpbiBhIGNsYXNzIGxl
eGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFu
IEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
bV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29t
cHV0ZWQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKQEAg
LTQ4NTgsNiArNDg2MCw4IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAg
IGlmIChzaG91bGRTZXRGdW5jdGlvbk5hbWUpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNl
dEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRp
b24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24p
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCBlMTkwZTY5MzY5OTUuLjUwMDE0MGM1YzNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjgzNyw2ICsyODM3LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVj
bGFyYXQKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGFzc0RlY2xTdGF0ZW1lbnQobG9jYXRp
b24sIGNsYXNzRXhwciwgY2xhc3NTdGFydCwgY2xhc3NFbmQsIGNsYXNzU3RhcnRMaW5lLCBjbGFz
c0VuZExpbmUpOwogfQogCitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBpbnN0YW5jZUNv
bXB1dGVkTmFtZVByZWZpeCB7ICJpbnN0YW5jZUNvbXB1dGVkTmFtZSJfcyB9OworCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Q2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBQYXJzZXJD
bGFzc0luZm88VHJlZUJ1aWxkZXI+JiBpbmZvKQogewpAQCAtMjk5Niw3ICsyOTk4LDcgQEAgcGFy
c2VNZXRob2Q6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb21wdXRlZFByb3Bl
cnR5TmFtZSkgewotICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRp
ZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRz
KyspOworICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFy
ZW5hKCkubWFrZVByaXZhdGVJZGVudGlmaWVyKG1fdm0sIGluc3RhbmNlQ29tcHV0ZWROYW1lUHJl
Zml4LCBudW1Db21wdXRlZEZpZWxkcysrKTsKICAgICAgICAgICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZh
cmlhYmxlKGlkZW50LCB0cnVlKTsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xh
cmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQpOwogICAgICAgICAgICAgICAgIGNsYXNzU2NvcGUtPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxz
ZSk7CkBAIC0zMDc3LDcgKzMwNzksNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogCiAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBmaWVsZExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG51bGxwdHI7Ci0gICAgICAgIFRyZWVFeHBy
ZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKICAgICAgICAgRGVmaW5lRmllbGROb2Rl
OjpUeXBlIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6Ok5hbWU7CiAgICAgICAgIHN3aXRj
aCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRToKQEAgLTMxMDEs
MTQgKzMxMDIsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgICAgIEFTU0VS
VChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBPUEVOQlJBQ0tFVDoKKyAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAg
ICAgICAgbmV4dCgpOwotICAgICAgICAgICAgY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24g
Y29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3Qg
cGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVj
dGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBu
YW1lIik7Ci0gICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVu
YSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKKyAg
ICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZVBy
aXZhdGVJZGVudGlmaWVyKG1fdm0sIGluc3RhbmNlQ29tcHV0ZWROYW1lUHJlZml4LCBudW1Db21w
dXRlZEZpZWxkcysrKTsKICAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6
OkNvbXB1dGVkTmFtZTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFn
KQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCBjNzE5ODg2MjQxZDMuLmM1OWUwNjhh
ZjQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAK
QEAgLTEwNyw0ICsxMDcsMTIgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjpt
YWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICByZXR1cm4g
bV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAKK2NvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJB
cmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiB2bSwgQVNDSUlMaXRlcmFsIHByZWZpeCwg
dW5zaWduZWQgaWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJp
bmcocHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1i
b2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lKTsKKyAgICBtX2lkZW50aWZpZXJz
LmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50
aWZpZXJzLmxhc3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5oCmluZGV4IDhiYjlkNWViOTA5Mi4uYmUyN2YzNGIxYzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNpbWFs
SWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91YmxlIG51
bWJlcik7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihW
TSYsIEFTQ0lJTGl0ZXJhbCwgdW5zaWduZWQpOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgY29uc3QgaW50IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA4YWIwZjllMzk5OGEu
LmMzNTRjMmI5YzI2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcApAQCAtNzAyLDE0ICs3MDIsMTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9pc0F0b21pYyA9IHN0cmluZy5pc0F0b20oKTsKICAgICAgICAgbV9pc1N5bWJvbCA9IHN0cmlu
Zy5pc1N5bWJvbCgpOworICAgICAgICBtX2lzUmVnaXN0ZXJlZCA9IGZhbHNlOwogICAgICAgICBt
X2lzV2VsbEtub3duU3ltYm9sID0gZmFsc2U7CisgICAgICAgIG1faXNQcml2YXRlID0gZmFsc2U7
CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsID0gY29uc3RfY2FzdDxTdHJpbmdJbXBs
Kj4oJnN0cmluZyk7CiAKICAgICAgICAgaWYgKG1faXNTeW1ib2wpIHsKICAgICAgICAgICAgIFN5
bWJvbEltcGwqIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwqPihpbXBsLmdldCgpKTsK
KyAgICAgICAgICAgIG1faXNSZWdpc3RlcmVkID0gc3ltYm9sLT5pc1JlZ2lzdGVyZWQoKTsKKyAg
ICAgICAgICAgIG1faXNQcml2YXRlID0gc3ltYm9sLT5pc1ByaXZhdGUoKTsKICAgICAgICAgICAg
IGlmICghc3ltYm9sLT5pc051bGxTeW1ib2woKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGhh
dmUgc3BlY2lhbCBoYW5kbGluZyBmb3Igd2VsbC1rbm93biBzeW1ib2xzLgotICAgICAgICAgICAg
ICAgIGlmICghc3ltYm9sLT5pc1ByaXZhdGUoKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9p
c1ByaXZhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pc1dlbGxLbm93blN5bWJvbCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIGltcGwgPSBzeW1ib2wtPnN1YnN0cmluZyhzdHJsZW4o
IlN5bWJvbC4iKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzQyLDEwICs3NDYsMTcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRkKGJ1ZmZlciwg
bV9sZW5ndGgpLmxlYWtSZWYoKTsKIAogICAgICAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9sOwot
ICAgICAgICAgICAgaWYgKG1faXNXZWxsS25vd25TeW1ib2wpCi0gICAgICAgICAgICAgICAgc3lt
Ym9sID0gZGVjb2Rlci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdl
bGxLbm93blN5bWJvbChidWZmZXIsIG1fbGVuZ3RoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGRl
Y29kZXIudm0oKTsKKyAgICAgICAgICAgIGlmIChtX2lzUmVnaXN0ZXJlZCkgeworICAgICAgICAg
ICAgICAgIFN0cmluZyBzdHIoYnVmZmVyLCBtX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYg
KG1faXNQcml2YXRlKQorICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsKj4oJnZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHIp
LmxlYWtSZWYoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
eW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsKj4oJnZtLnN5bWJvbFJlZ2lzdHJ5KCkuc3lt
Ym9sRm9yS2V5KHN0cikubGVha1JlZigpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9pc1dl
bGxLbm93blN5bWJvbCkKKyAgICAgICAgICAgICAgICBzeW1ib2wgPSB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woYnVmZmVyLCBtX2xlbmd0aCk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3ltYm9sID0gZGVjb2Rlci52bSgp
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwg
bV9sZW5ndGgpOworICAgICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmxvb2tVcFByaXZhdGVOYW1lKGJ1ZmZlciwgbV9sZW5ndGgpOwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc3ltYm9sKTsKICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBz
eW1ib2w7CiAgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyLnJlbGVhc2VJbXBsKCku
Z2V0KCk7CkBAIC03NzMsNiArNzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTeW1ib2wg
OiAxOwogICAgIGJvb2wgbV9pc1dlbGxLbm93blN5bWJvbCA6IDE7CiAgICAgYm9vbCBtX2lzQXRv
bWljIDogMTsKKyAgICBib29sIG1faXNSZWdpc3RlcmVkIDogMTsKKyAgICBib29sIG1faXNQcml2
YXRlIDogMTsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCBhZDhmYjA5MjYwMTEuLmY1YWE1ZDQzMWZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzgyLDYgKzM4Miw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29s
KiBzdWNjZXNzKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAg
ICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRoaXMpKQog
ICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJl
bnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCisgICAgLCBtX3By
aXZhdGVTeW1ib2xSZWdpc3RyeShXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpUeXBlOjpQcml2YXRlU3lt
Ym9sKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBB
cmdMaXN0KQogICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5l
SklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA3MWZhMmE2MDY5MjguLjI3YWFmYzAzMjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC03MTQsNiArNzE0LDcgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZ1Rh
YmxlKiBtX2F0b21TdHJpbmdUYWJsZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9s
UmVnaXN0cnk7CisgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3ByaXZhdGVTeW1ib2xSZWdpc3Ry
eTsKICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBBcmdM
aXN0KiBlbXB0eUxpc3Q7CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTcyNSw2
ICs3MjYsNyBAQCBwdWJsaWM6CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIGF0b21TdHJpbmdUYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbVN0cmluZ1RhYmxlOyB9CiAgICAgV1RGOjpTeW1ib2xS
ZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9Cisg
ICAgV1RGOjpTeW1ib2xSZWdpc3RyeSYgcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4g
bV9wcml2YXRlU3ltYm9sUmVnaXN0cnk7IH0KIAogICAgIFN0cm9uZzxKU0JpZ0ludD4gaGVhcEJp
Z0ludENvbnN0YW50T25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzMWNmMGQxZjk5Mi4uMjc5MzJjNGU5OTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDIwLTExLTExICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gVXNlIHN5bWJvbHMgYXMgaWRlbnRpZmllcnMgZm9yIGNsYXNzIGZp
ZWxkcyBjb21wdXRlZCBuYW1lcyBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgcHJpdmF0ZSBzeW1ib2xzIGZvciB0aGUgcHJvcGVydHkg
a2V5cyBvZiB0aGUgY2xhc3MgZmllbGRzIHdpdGgKKyAgICAgICAgY29tcHV0ZWQgbmFtZXMuIFRo
aXMgaXMgY2xlYW5lciB0aGFuIHVzaW5nIHJhdyBudW1lcmljIGlkZW50aWZpZXJzIGFuZAorICAg
ICAgICB3aWxsIGJlIGxlc3MgY3VtYmVyc29tZSB3aGVuIHdlIGFkZCBzdGF0aWMgZmllbGRzLiBJ
dCBhbHNvIHByZXZlbnRzCisgICAgICAgIHBvdGVudGlhbCBjb2xsaXNpb25zIGlmIG90aGVyIGZl
YXR1cmVzIHdhbnQgdG8gc3RvcmUgZGF0YSBpbiB0aGUgY2xhc3MKKyAgICAgICAgc2NvcGUuCisK
KyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6UmVnaXN0
ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUpOiBhZGQgYSBtZXRob2QgdG8gY3JlYXRlIGEg
cmVnaXN0ZXJlZCBwcml2YXRlIHN5bWJvbCBmcm9tIGEgc3RyaW5nIGtleS4KKyAgICAgICAgKiB3
dGYvdGV4dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KTogY29uc2lk
ZXIgdGhhdCB3ZSBjYW4gaG9sZCBwcml2YXRlIHN5bWJvbHMgbm93IHRvby4KKyAgICAgICAgKiB3
dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6
U3ltYm9sUmVnaXN0cnkpOiBuZXcgZW51bSB0eXBlIGZvciBwdWJsaWMvcHJpdmF0ZSBzeW1ib2xz
LgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbEltcGwuY3BwCmluZGV4IDIxODk5ODk5ODgzMC4uZWFkZTAxNjRiZjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sSW1wbC5jcHAKQEAgLTc5LDQgKzc5LDEzIEBAIFJlZjxSZWdpc3RlcmVkU3lt
Ym9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5
bWJvbFJlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVnaXN0ZXJlZFN5bWJvbEltcGwocmVw
Lm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0cnkpKTsKIH0K
IAorUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBSZWdpc3RlcmVkU3ltYm9sSW1wbDo6Y3JlYXRl
UHJpdmF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSkK
K3sKKyAgICBhdXRvKiBvd25lclJlcCA9IChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVy
U3Vic3RyaW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXA7CisgICAgQVNTRVJUKG93
bmVyUmVwLT5idWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJTdWJzdHJpbmcpOworICAgIGlmIChy
ZXAuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1i
b2xJbXBsKHJlcC5tX2RhdGE4LCByZXAubGVuZ3RoKCksICpvd25lclJlcCwgc3ltYm9sUmVnaXN0
cnksIHNfZmxhZ0lzUmVnaXN0ZXJlZCB8IHNfZmxhZ0lzUHJpdmF0ZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlZ2lzdGVyZWRTeW1ib2xJbXBsKHJlcC5tX2RhdGExNiwgcmVwLmxlbmd0
aCgpLCAqb3duZXJSZXAsIHN5bWJvbFJlZ2lzdHJ5LCBzX2ZsYWdJc1JlZ2lzdGVyZWQgfCBzX2Zs
YWdJc1ByaXZhdGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9s
SW1wbC5oCmluZGV4IDYzMTBkYzU3M2NmNS4uNDc0NmM0OThiNzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbEltcGwuaApAQCAtMTU2LDE1ICsxNTYsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
U3ltYm9sUmVnaXN0cnkoKSB7IG1fc3ltYm9sUmVnaXN0cnkgPSBudWxscHRyOyB9CiAKICAgICBz
dGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1wbCYgcmVwLCBT
eW1ib2xSZWdpc3RyeSYpOworICAgIHN0YXRpYyBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IGNy
ZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOwogCi0gICAgUmVn
aXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQotICAg
ICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBXVEZNb3ZlKGJhc2UpLCBzX2Zs
YWdJc1JlZ2lzdGVyZWQpCisgICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9s
UmVnaXN0cnkmIHJlZ2lzdHJ5LCBGbGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAg
ICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgZmxh
Z3MpCiAgICAgICAgICwgbV9zeW1ib2xSZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgewogICAgIH0K
IAotICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdp
c3RyeSkKLSAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShi
YXNlKSwgc19mbGFnSXNSZWdpc3RlcmVkKQorICAgIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdJc1JlZ2lz
dGVyZWQpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUo
YmFzZSksIGZsYWdzKQogICAgICAgICAsIG1fc3ltYm9sUmVnaXN0cnkoJnJlZ2lzdHJ5KQogICAg
IHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCmluZGV4IDBkOTBh
NTE3ZTMyNC4uYzQ3ZWI4MGU2NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK1N5bWJvbFJlZ2lz
dHJ5OjpTeW1ib2xSZWdpc3RyeShUeXBlIHR5cGUpCisgICAgOiBtX3N5bWJvbFR5cGUodHlwZSkK
K3sKK30KKwogU3ltYm9sUmVnaXN0cnk6On5TeW1ib2xSZWdpc3RyeSgpCiB7CiAgICAgZm9yIChh
dXRvJiBrZXkgOiBtX3RhYmxlKSB7CkBAIC00NCw5ICs0OSwxNCBAQCBSZWY8UmVnaXN0ZXJlZFN5
bWJvbEltcGw+IFN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJiByZXAp
CiAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+KGFkZFJlc3VsdC5pdGVy
YXRvci0+aW1wbCgpKS0+YXNSZWdpc3RlcmVkU3ltYm9sSW1wbCgpOwogICAgIH0KIAotICAgIGF1
dG8gc3ltYm9sID0gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZSgqcmVwLmltcGwoKSwgKnRo
aXMpOwotICAgICphZGRSZXN1bHQuaXRlcmF0b3IgPSBTeW1ib2xSZWdpc3RyeUtleSgmc3ltYm9s
LmdldCgpKTsKLSAgICByZXR1cm4gc3ltYm9sOworICAgIFJlZlB0cjxSZWdpc3RlcmVkU3ltYm9s
SW1wbD4gc3ltYm9sOworICAgIGlmIChtX3N5bWJvbFR5cGUgPT0gVHlwZTo6UHJpdmF0ZVN5bWJv
bCkKKyAgICAgICAgc3ltYm9sID0gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZVByaXZhdGUo
KnJlcC5pbXBsKCksICp0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHN5bWJvbCA9IFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsOjpjcmVhdGUoKnJlcC5pbXBsKCksICp0aGlzKTsKKworICAgICphZGRSZXN1
bHQuaXRlcmF0b3IgPSBTeW1ib2xSZWdpc3RyeUtleShzeW1ib2wuZ2V0KCkpOworICAgIHJldHVy
biBzeW1ib2wucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBTeW1ib2xSZWdpc3RyeTo6cmVt
b3ZlKFJlZ2lzdGVyZWRTeW1ib2xJbXBsJiB1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5LmgKaW5kZXggNTU4OTc5YWU4MTY1Li4xYzI0MTkzNjQ2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmgKQEAgLTc4LDcgKzc4LDggQEAgY2xhc3MgU3ltYm9sUmVnaXN0cnkg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN5bWJvbFJlZ2lzdHJ5KTsKIHB1YmxpYzoKLSAgICBTeW1ib2xSZWdpc3RyeSgpID0gZGVmYXVs
dDsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgUHVibGljU3ltYm9sLCBQcml2YXRl
U3ltYm9sIH07CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN5bWJvbFJlZ2lzdHJ5KFR5cGUgPSBU
eXBlOjpQdWJsaWNTeW1ib2wpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0
cnkoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+
IHN5bWJvbEZvcktleShjb25zdCBTdHJpbmcmKTsKQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3ltYm9sUmVnaXN0cnlLZXk+IG1fdGFibGU7CisgICAg
VHlwZSBtX3N5bWJvbFR5cGU7CiB9OwogCiBpbmxpbmUgU3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJv
bFJlZ2lzdHJ5S2V5KFN0cmluZ0ltcGwqIHVpZCkKLS0gCjIuMjguMAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>