<?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>154838</bug_id>
          
          <creation_ts>2016-02-29 15:29:07 -0800</creation_ts>
          <short_desc>Add new MethodTable method to get an estimated size for a cell</short_desc>
          <delta_ts>2016-02-29 18:07:09 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10930</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169290</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-29 15:29:07 -0800</bug_when>
    <thetext>* SUMMARY
Add new MethodTable method to get an estimated size for a cell

The new class method estimatedSize(JSCell*) estimates the size for a single cell.

    Base implementation (JSCell)
      - returns the MarkedBlock bucket size for this cell.
      - This gets us basic member/inline storage. Basically a better sizeof.

    Subclasses with &quot;Extra Memory Cost&quot;:
      - Any class that reports extra memory (reportExtraMemoryVisited) should include that in the estimated size.
      - E.g. CodeBlock, JSGenericTypedArrayView, WeakMapData, etc.

    Subclasses with &quot;Copied Space&quot; storage:
      - Any class with data in copied space (has copyBackingStore) should include that in the estimated size.
      - E.g. JSObject, JSGenericTypedArrayView, JSMap, JSSet, DirectArguments, etc.

* NOTES
To be used by Inspector for JavaScript Heap Instrumentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169293</commentid>
    <comment_count>1</comment_count>
      <attachid>272525</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-29 15:41:55 -0800</bug_when>
    <thetext>Created attachment 272525
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169298</commentid>
    <comment_count>2</comment_count>
      <attachid>272525</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-02-29 16:01:37 -0800</bug_when>
    <thetext>Comment on attachment 272525
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2468
&gt; +    size_t extraMemoryAllocated = thisObject-&gt;m_instructions.size() * sizeof(Instruction);

Maybe add a fixme here (with a bug to track) to add JITCode size (for baseline and DFG/FTL codeBlocks)?

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:416
&gt; +    if (thisObject-&gt;m_mode == OversizeTypedArray)
&gt; +        return Base::estimatedSize(thisObject) + thisObject-&gt;byteSize();
&gt; +    if (thisObject-&gt;m_mode == FastTypedArray &amp;&amp; thisObject-&gt;m_vector)
&gt; +        return Base::estimatedSize(thisObject) + thisObject-&gt;byteSize();

Why not || the 2 conditions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169319</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-29 16:57:20 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 272525 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272525&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2468
&gt; &gt; +    size_t extraMemoryAllocated = thisObject-&gt;m_instructions.size() * sizeof(Instruction);

Good catch, I should definitely have been including the m_jitCode-&gt;size() here if we have m_jitCode.


&gt; Maybe add a fixme here (with a bug to track) to add JITCode size (for
&gt; baseline and DFG/FTL codeBlocks)?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:416
&gt; &gt; +    if (thisObject-&gt;m_mode == OversizeTypedArray)
&gt; &gt; +        return Base::estimatedSize(thisObject) + thisObject-&gt;byteSize();
&gt; &gt; +    if (thisObject-&gt;m_mode == FastTypedArray &amp;&amp; thisObject-&gt;m_vector)
&gt; &gt; +        return Base::estimatedSize(thisObject) + thisObject-&gt;byteSize();
&gt; 
&gt; Why not || the 2 conditions?

I could go either way on this. I converted the switch in JSGenericTypedArrayView&lt;Adaptor&gt;::visitChildren to a couple if statements. They happened to have the same calculation, but most of the code in this file treats the modes separate (via the switch), so I followed suit here. I like treating these as separate in case storage ever differs between the two different modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169324</commentid>
    <comment_count>4</comment_count>
      <attachid>272532</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-29 17:19:50 -0800</bug_when>
    <thetext>Created attachment 272532
[PATCH] For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169332</commentid>
    <comment_count>5</comment_count>
      <attachid>272532</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-29 18:07:05 -0800</bug_when>
    <thetext>Comment on attachment 272532
[PATCH] For Landing

Clearing flags on attachment: 272532

Committed r197379: &lt;http://trac.webkit.org/changeset/197379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169333</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-29 18:07:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272525</attachid>
            <date>2016-02-29 15:41:55 -0800</date>
            <delta_ts>2016-02-29 17:19:50 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>estimated-size-1.patch</filename>
            <type>text/plain</type>
            <size>24351</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OTljODkuLmFlMzA2YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE2LTAyLTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBNZXRob2RUYWJsZSBt
ZXRob2QgdG8gZ2V0IGFuIGVzdGltYXRlZCBzaXplIGZvciBhIGNlbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY2xhc3MgbWV0aG9kIGVz
dGltYXRlZFNpemUoSlNDZWxsKikgZXN0aW1hdGVzIHRoZSBzaXplIGZvciBhIHNpbmdsZSBjZWxs
LgorICAgICAgICBBcyB0aGUgbmFtZSBpbXBsaWVzLCB0aGlzIGlzIG1lYW50IHRvIGJlIGFuIGFw
cHJveGltYXRpb24uIEl0IGlzIG1vcmUgaW1wb3J0YW50CisgICAgICAgIHRoYXQgYmlnIG9iamVj
dHMgcmVwb3J0IGEgbGFyZ2Ugc2l6ZSwgdGhlbiB0byBnZXQgcGVyZmVjdCBzaXplIGluZm9ybWF0
aW9uIGZvcgorICAgICAgICBhbGwgb2JqZWN0cyBpbiB0aGUgaGVhcC4KKworICAgICAgICAgICAg
QmFzZSBpbXBsZW1lbnRhdGlvbiAoSlNDZWxsKToKKyAgICAgICAgICAgICAgLSByZXR1cm5zIHRo
ZSBNYXJrZWRCbG9jayBidWNrZXQgc2l6ZSBmb3IgdGhpcyBjZWxsLgorICAgICAgICAgICAgICAt
IFRoaXMgZ2V0cyB1cyB0aGUgb2JqZWN0IHNpemUgaW5jbHVkZSBpbmxpbmUgc3RvcmFnZS4gQmFz
aWNhbGx5IGEgYmV0dGVyIHNpemVvZi4KKworICAgICAgICAgICAgU3ViY2xhc3NlcyB3aXRoICJF
eHRyYSBNZW1vcnkgQ29zdCI6CisgICAgICAgICAgICAgIC0gQW55IGNsYXNzIHRoYXQgcmVwb3J0
cyBleHRyYSBtZW1vcnkgKHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCkgc2hvdWxkIGluY2x1ZGUg
dGhhdCBpbiB0aGUgZXN0aW1hdGVkIHNpemUuCisgICAgICAgICAgICAgIC0gRS5nLiBDb2RlQmxv
Y2ssIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LCBXZWFrTWFwRGF0YSwgZXRjLgorCisgICAgICAg
ICAgICBTdWJjbGFzc2VzIHdpdGggIkNvcGllZCBTcGFjZSIgc3RvcmFnZToKKyAgICAgICAgICAg
ICAgLSBBbnkgY2xhc3Mgd2l0aCBkYXRhIGluIGNvcGllZCBzcGFjZSAoY29weUJhY2tpbmdTdG9y
ZSkgc2hvdWxkIGluY2x1ZGUgdGhhdCBpbiB0aGUgZXN0aW1hdGVkIHNpemUuCisgICAgICAgICAg
ICAgIC0gRS5nLiBKU09iamVjdCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcsIEpTTWFwLCBKU1Nl
dCwgRGlyZWN0QXJndW1lbnRzLCBldGMuCisKKyAgICAgICAgQWRkIHJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCBmb3IgVW5saW5rZWRDb2RlQmxvY2sncyBjb21wcmVzc2VkIHVubGlua2VkCisgICAg
ICAgIGluc3RydWN0aW9ucyBiZWNhdXNlIHRoaXMgY2FuIGJlIGxhcmdlciB0aGFuIDFrYiwgd2hp
Y2ggaXMgc2lnbmlmaWNhbnQuCisKKyAgICAgICAgVGhpcyBoYXMgb25lIHNwZWNpYWwgY2FzZSBm
b3IgUmVnRXhwIGdlbmVyYXRlZCBieXRlY29kZSAvIEpJVCBjb2RlLCB3aGljaAorICAgICAgICBk
b2VzIG5vdCBjdXJyZW50bHkgZmFsbCBpbnRvIHRoZSBleHRyYSBtZW1vcnkgY29zdCBvciBjb3Bp
ZWQgc3BhY2Ugc3RvcmFnZS4KKyAgICAgICAgSW4gcHJhY3RpY2UgSSBoYXZlbid0IHNlZW4gdGhp
cyBncm93IHRvIGEgc2lnbmlmaWNhbnQgY29zdC4KKworICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJ
bmZvLmg6CisgICAgICAgIEFkZCB0aGUgbmV3IGVzdGltYXRlZFNpemUgbWV0aG9kIHRvIHRoZSB0
YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpzZXRJbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmg6CisgICAgICAgIFJlcG9ydCBhbiBleHRyYSBtZW1vcnkgY29zdCBmb3Ig
dW5saW5rZWQgY29kZSBibG9ja3MgbGlrZQorICAgICAgICB3ZSBkbyBmb3IgbGlua2VkIGNvZGUg
YmxvY2tzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbTo6c2l6ZUluQnl0ZXMpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAgICAg
KiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFyZ3Vt
ZW50czo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZXN0aW1hdGVkU2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNNYXA6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNNYXAuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnZpc2l0QnV0dGVyZmx5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1NldC5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0Ojplc3Rp
bWF0ZWRTaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTU2V0Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKToK
KyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9NYXBEYXRh
Lmg6CisgICAgICAgIChKU0M6Ok1hcERhdGFJbXBsOjpjYXBhY2l0eUluQnl0ZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha01hcERhdGEuY3BwOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6
ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisgICAgICAgIEltcGxlbWVudCBl
c3RpbWF0ZWQgc2l6ZSBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gb2YgcmVwb3J0aW5nCisgICAgICAg
IGV4dHJhIHZpc2l0ZWQgc2l6ZSwgb3IgY29weSBzcGFjZSBtZW1vcnkuCisKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnBy
ZXRlci5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlRGlzanVuY3Rpb246OmVzdGltYXRlZFNp
emVJbkJ5dGVzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuOjplc3RpbWF0
ZWRTaXplSW5CeXRlcyk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6
OllhcnI6OllhcnJDb2RlQmxvY2s6OnNpemUpOgorICAgICAgICBJbmNsdWRlIGdlbmVyYXRlZCBi
eXRlY29kZSAvIEpJVENvZGUgdG8gYSBSZWdFeHAncyBzaXplLgorCiAyMDE2LTAyLTI4ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMgc2hvdWxkIGhhdmUgZ2xv
YmFsIHN0b3JlIGVsaW1pbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IGJiMzk5YmYuLjQyNGNiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0yNDYyLDYgKzI0NjIsMTMgQEAgdm9p
ZCBDb2RlQmxvY2s6OnZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQogfQogCitzaXplX3QgQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpT
Q2VsbCogY2VsbCkKK3sKKyAgICBDb2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q29kZUJs
b2NrKj4oY2VsbCk7CisgICAgc2l6ZV90IGV4dHJhTWVtb3J5QWxsb2NhdGVkID0gdGhpc09iamVj
dC0+bV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKTsKKyAgICByZXR1
cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGV4dHJhTWVtb3J5QWxsb2NhdGVkOworfQor
CiB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewogICAgIENvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxDb2RlQmxv
Y2sqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCA4YTEwOTAxMi4uOTZjZWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtMTc5LDYgKzE3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjc3CiAgICAgQ29kZUJsb2NrKiBi
YXNlbGluZVZlcnNpb24oKTsKIAorICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCB2aXNp
dFdlYWtseShTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggOTM2ZWY3Ni4uODNkOTA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC05OSwxMiArOTksMjEgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGZvciAoRnVu
Y3Rpb25FeHByZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0
aW9uRXhwcnMuYmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgp
OyBwdHIgIT0gZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEo
KSwgdGhpc09iamVjdC0+bV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOworICAgIGlmICh0aGlz
T2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zKQorICAgICAgICB2aXNpdG9yLnJlcG9ydEV4
dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXpl
SW5CeXRlcygpKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgewogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMCwgZW5kID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+bV9yZWdleHBz
LnNpemUoKTsgaSAhPSBlbmQ7IGkrKykKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0pOwogICAgIH0KIH0KIAorc2l6ZV90IFVu
bGlua2VkQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBVbmxp
bmtlZENvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZENvZGVCbG9jayo+KGNl
bGwpOworICAgIHNpemVfdCBleHRyYVNpemUgPSB0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1
Y3Rpb25zID8gdGhpc09iamVjdC0+bV91bmxpbmtlZEluc3RydWN0aW9ucy0+c2l6ZUluQnl0ZXMo
KSA6IDA7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBleHRyYVNpemU7
Cit9CisKIGludCBVbmxpbmtlZENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIEFTU0VSVChieXRlY29kZU9mZnNldCA8
IGluc3RydWN0aW9ucygpLmNvdW50KCkpOwpAQCAtMzQzLDcgKzM1Miw5IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIFVubGlu
a2VkQ29kZUJsb2NrOjpzZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0+IGluc3RydWN0aW9ucykKIHsKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25z
KTsKICAgICBtX3VubGlua2VkSW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwor
ICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1fdW5saW5r
ZWRJbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkpOwogfQogCiBjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
aW5kZXggNWU5OGJjYi4uYjZhZDQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQ1NCw2ICs0NTQsNyBAQCBwcml2YXRl
OgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsK
IAogcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcAppbmRl
eCA1NjhkYmI2Li42YTMwMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0xMDIsNiAr
MTAyLDExIEBAIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlVubGlua2VkSW5zdHJ1Y3Rpb25T
dHJlYW0oY29uc3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1CiAgICAgbV9kYXRhID0gUmVmQ291bnRl
ZEFycmF5PHVuc2lnbmVkIGNoYXI+KGJ1ZmZlcik7CiB9CiAKK3NpemVfdCBVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5z
aXplKCkgKiBzaXplb2YodW5zaWduZWQgY2hhcik7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBjb25z
dCBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRJbnN0cnVjdGlvbj4mIFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW06OnVucGFja0ZvckRlYnVnZ2luZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0u
aAppbmRleCA2MzIzYzQ0Li5hODc1ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKQEAgLTM4LDYg
KzM4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0o
Y29uc3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiYpOwogCiAgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9u
Q291bnQ7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIGNsYXNzIFJl
YWRlciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAppbmRleCBjMjJkMDYyLi44NGZjMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaApAQCAtMTA1LDYgKzEwNSw5IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7
CiAKICAgICB0eXBlZGVmIHZvaWQgKCpEdW1wVG9TdHJlYW1GdW5jdGlvblB0cikoY29uc3QgSlND
ZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAgICBEdW1wVG9TdHJlYW1GdW5jdGlvblB0ciBkdW1wVG9T
dHJlYW07CisKKyAgICB0eXBlZGVmIHNpemVfdCAoKkVzdGltYXRlZFNpemVGdW5jdGlvblB0ciko
SlNDZWxsKik7CisgICAgRXN0aW1hdGVkU2l6ZUZ1bmN0aW9uUHRyIGVzdGltYXRlZFNpemU7CiB9
OwogCiAjZGVmaW5lIENSRUFURV9NRU1CRVJfQ0hFQ0tFUihtZW1iZXIpIFwKQEAgLTE1MSw3ICsx
NTQsOCBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVP
d25Qcm9wZXJ0eSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5
LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldFR5cGVkQXJyYXlJbXBsLCBcCi0gICAgICAgICZD
bGFzc05hbWU6OmR1bXBUb1N0cmVhbSBcCisgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVh
bSwgXAorICAgICAgICAmQ2xhc3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCiAgICAg
Q2xhc3NOYW1lOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKaW5kZXggNGY5MzU0NS4uYjg0MGRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVu
dHMuY3BwCkBAIC04NSw2ICs4NSwxMyBAQCBEaXJlY3RBcmd1bWVudHMqIERpcmVjdEFyZ3VtZW50
czo6Y3JlYXRlQnlDb3B5aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitzaXplX3QgRGlyZWN0QXJndW1lbnRzOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBEaXJlY3RBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGlyZWN0QXJndW1l
bnRzKj4oY2VsbCk7CisgICAgc2l6ZV90IG92ZXJyaWRlc1NpemUgPSB0aGlzT2JqZWN0LT5tX292
ZXJyaWRlcyA/IHRoaXNPYmplY3QtPm92ZXJyaWRlc1NpemUoKSA6IDA7CisgICAgcmV0dXJuIEJh
c2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBvdmVycmlkZXNTaXplOworfQorCiB2b2lkIERpcmVj
dEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIHRoaXNDZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBEaXJlY3RBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxEaXJlY3RBcmd1bWVudHMqPih0aGlzQ2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCmluZGV4IGExOWY4ZTMuLjE5MTFlNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCkBAIC01
NSw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBv
YmplY3QgYnkgY29weWluZyB0aGUgYXJndW1uZXRzIGZyb20gdGhlIHN0YWNrLgogICAgIHN0YXRp
YyBEaXJlY3RBcmd1bWVudHMqIGNyZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUqKTsKLSAgICAKKwor
ICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQg
Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyYzQwM2M4Li4w
OWFmMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTUx
LDYgKzUxLDE2IEBAIHZvaWQgSlNDZWxsOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxs
LCBQcmludFN0cmVhbSYgb3V0KQogICAgIG91dC5wcmludGYoIjwlcCwgJXM+IiwgY2VsbCwgY2Vs
bC0+Y2xhc3NOYW1lKCkpOwogfQogCitzaXplX3QgSlNDZWxsOjplc3RpbWF0ZWRTaXplSW5CeXRl
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmVzdGltYXRlZFNpemUoY29u
c3RfY2FzdDxKU0NlbGwqPih0aGlzKSk7Cit9CisKK3NpemVfdCBKU0NlbGw6OmVzdGltYXRlZFNp
emUoSlNDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2Vs
bCktPmNlbGxTaXplKCk7Cit9CisKIHZvaWQgSlNDZWxsOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2Vs
bCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAppbmRleCA1NDY0MjAzLi5mOTg4OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTM0LDYgKzEzNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKKworICAg
IHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcygpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKwogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9y
JiwgQ29weVRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggMTA4YmY5YS4uODU4OTM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCkBAIC0yODMsNyArMjgzLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7Ci0gICAgCisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAg
IHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5
VG9rZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGUzY2ZiNDQuLjk0ODI4
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MDYsNiArNDA2LDE5IEBAIHZv
aWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMo
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CitzaXplX3QgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Kj4oY2VsbCk7CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9tb2RlID09IE92ZXJz
aXplVHlwZWRBcnJheSkKKyAgICAgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09i
amVjdCkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX21v
ZGUgPT0gRmFzdFR5cGVkQXJyYXkgJiYgdGhpc09iamVjdC0+bV92ZWN0b3IpCisgICAgICAgIHJl
dHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpICsgdGhpc09iamVjdC0+Ynl0ZVNp
emUoKTsKKworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01hcC5jcHAKaW5kZXggNDRkMGYzOS4uMGY0ZTY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTWFwLmNwcApAQCAtNDMsNiArNDMsMTMgQEAgdm9pZCBKU01hcDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNNYXA6On5KU01hcCgpOwogfQog
CitzaXplX3QgSlNNYXA6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpTTWFw
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTWFwKj4oY2VsbCk7CisgICAgc2l6ZV90IG1hcERhdGFT
aXplID0gdGhpc09iamVjdC0+bV9tYXBEYXRhLmNhcGFjaXR5SW5CeXRlcygpOworICAgIHJldHVy
biBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgbWFwRGF0YVNpemU7Cit9CisKIHZvaWQgSlNN
YXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTWFwLmgKaW5kZXggMjEzMDQ3Yy4uYjg4YjEyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01hcC5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3Qg
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShK
U0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhODg1OTIxLi43NWRjNmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRCdXR0ZXJmbHkoU2xvdFZpc2l0b3Im
IHZpc2l0b3IsIEJ1dHRlcmZseSogYnV0CiAgICAgfQogfQogCitzaXplX3QgSlNPYmplY3Q6OmVz
dGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgc2l6ZV90IGJ1dHRlcmZseU91dE9mTGluZVNp
emUgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSA/IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVTaXplKCkgOiAwOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwp
ICsgYnV0dGVyZmx5T3V0T2ZMaW5lU2l6ZTsKK30KKwogdm9pZCBKU09iamVjdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzOGZmNDUxLi4wOTIyYzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTk0LDcgKzk0LDggQEAgY2xhc3Mg
SlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7Ci0gICAgICAgIAorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBl
c3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwg
Q29weVRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCmluZGV4
IDE0NGI5ZGEuLjQ2YWFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5j
cHAKQEAgLTQzLDYgKzQzLDEzIEBAIHZvaWQgSlNTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQog
ICAgIHRoaXNPYmplY3QtPkpTU2V0Ojp+SlNTZXQoKTsKIH0KIAorc2l6ZV90IEpTU2V0Ojplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1NldCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1NldCo+KGNlbGwpOworICAgIHNpemVfdCBzZXREYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1f
c2V0RGF0YS5jYXBhY2l0eUluQnl0ZXMoKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6
ZShjZWxsKSArIHNldERhdGFTaXplOworfQorCiB2b2lkIEpTU2V0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbihjZWxsLCB2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCmlu
ZGV4IDYxYmQ5MTkuLmM0ZDRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQu
aApAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxs
Kik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogICAgIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3Im
LCBDb3B5VG9rZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKaW5kZXggOWUzOGI5ZS4uYWQ4YTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcApAQCAtNzIsNiArNzIsMTQgQEAgdm9pZCBKU1N0cmluZzo6ZHVtcFRv
U3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKICAgICBvdXQucHJp
bnRmKCI+Iik7CiB9CiAKK3NpemVfdCBKU1N0cmluZzo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxs
KTsKKyAgICBpZiAodGhpc09iamVjdC0+aXNSb3BlKCkpCisgICAgICAgIHJldHVybiBCYXNlOjpl
c3RpbWF0ZWRTaXplKGNlbGwpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwp
ICsgdGhpc09iamVjdC0+bV92YWx1ZS5pbXBsKCktPmNvc3REdXJpbmdHQygpOworfQorCiB2b2lk
IEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGNlYmY4MzMu
LmYyNzNhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAt
MTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAg
c3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7Cisg
ICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIGVudW0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCmluZGV4IGIyMzg2ZWMuLjZhNGNjMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTExMSw2ICsxMTEs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogb3duZXIsIFNsb3RW
aXNpdG9yJik7CiAgICAgdm9pZCBjb3B5QmFja2luZ1N0b3JlKENvcHlWaXNpdG9yJiwgQ29weVRv
a2VuKTsKIAorICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2Nh
cGFjaXR5ICogc2l6ZW9mKEVudHJ5KTsgfQorCiBwcml2YXRlOgogICAgIHR5cGVkZWYgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQzMl90PiBJbmRleFRyYWl0czsKIApAQCAt
MTE5LDggKzEyMSw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwq
LCBpbnQzMl90LCB0eXBlbmFtZSBXVEY6OkRlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPjo6SGFzaCwg
V1RGOjpIYXNoVHJhaXRzPFN0cmluZ0ltcGwqPiwgSW5kZXhUcmFpdHM+IFN0cmluZ0tleWVkTWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxTeW1ib2xJbXBsKiwgaW50MzJfdCwgdHlwZW5hbWUgV1RG
OjpQdHJIYXNoPFN5bWJvbEltcGwqPiwgV1RGOjpIYXNoVHJhaXRzPFN5bWJvbEltcGwqPiwgSW5k
ZXhUcmFpdHM+IFN5bWJvbEtleWVkTWFwOwogCi0gICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygp
IHsgcmV0dXJuIG1fY2FwYWNpdHkgKiBzaXplb2YoRW50cnkpOyB9Ci0KICAgICBBTFdBWVNfSU5M
SU5FIEVudHJ5KiBmaW5kKEV4ZWNTdGF0ZSosIEtleVR5cGUpOwogICAgIEFMV0FZU19JTkxJTkUg
RW50cnkqIGFkZChFeGVjU3RhdGUqLCBKU0NlbGwqIG93bmVyLCBLZXlUeXBlKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXk+IEFMV0FZU19JTkxJTkUgRW50cnkqIGFk
ZChFeGVjU3RhdGUqLCBKU0NlbGwqIG93bmVyLCBNYXAmLCBLZXksIEtleVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggN2E2ZjgwYy4uMjY3NTBiMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yNTYsNiArMjU2
LDE2IEBAIHZvaWQgUmVnRXhwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0
LT5SZWdFeHA6On5SZWdFeHAoKTsKIH0KIAorc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZShK
U0NlbGwqIGNlbGwpCit7CisgICAgUmVnRXhwKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UmVn
RXhwKj4oY2VsbCk7CisgICAgc2l6ZV90IHJlZ2V4RGF0YVNpemUgPSB0aGlzT2JqZWN0LT5tX3Jl
Z0V4cEJ5dGVjb2RlID8gdGhpc09iamVjdC0+bV9yZWdFeHBCeXRlY29kZS0+ZXN0aW1hdGVkU2l6
ZUluQnl0ZXMoKSA6IDA7CisjaWYgRU5BQkxFKFlBUlJfSklUKQorICAgIHJlZ2V4RGF0YVNpemUg
Kz0gdGhpc09iamVjdC0+bV9yZWdFeHBKSVRDb2RlLnNpemUoKTsKKyNlbmRpZgorICAgIHJldHVy
biBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgcmVnZXhEYXRhU2l6ZTsKK30KKwogUmVnRXhw
KiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBwYXR0
ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cD4odm0uaGVhcCkpIFJlZ0V4cCh2bSwgcGF0
dGVyblN0cmluZywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApp
bmRleCA1YzA1YzViLi4zNzc3ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZ0V4cCogY3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFn
cyk7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CiAKICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBGbGFnR2xvYmFsOyB9CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrTWFwRGF0YS5jcHAKaW5kZXggZGRjMDI5ZS4uMTMzMmU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcApAQCAtNTQsNiArNTQsMTIg
QEAgdm9pZCBXZWFrTWFwRGF0YTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgc3RhdGljX2Nh
c3Q8V2Vha01hcERhdGEqPihjZWxsKS0+fldlYWtNYXBEYXRhKCk7CiB9CiAKK3NpemVfdCBXZWFr
TWFwRGF0YTo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAgV2Vha01hcERhdGEq
IHRoaXNPYmogPSBqc0Nhc3Q8V2Vha01hcERhdGEqPihjZWxsKTsKKyAgICByZXR1cm4gQmFzZTo6
ZXN0aW1hdGVkU2l6ZShjZWxsKSArICh0aGlzT2JqLT5tX21hcC5jYXBhY2l0eSgpICogKHNpemVv
ZihKU09iamVjdCopICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKK30KKwogdm9p
ZCBXZWFrTWFwRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CkBAIC02
Myw3ICs2OSw3IEBAIHZvaWQgV2Vha01hcERhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIC8vIFJvdWdoIGFwcHJveGltYXRpb24gb2Yg
dGhlIGV4dGVybmFsIHN0b3JhZ2UgbmVlZGVkIGZvciB0aGUgaGFzaHRhYmxlLgogICAgIC8vIFRo
aXMgaXNuJ3QgZXhhY3QsIGJ1dCBpdCBpcyBjbG9zZSBlbm91Z2gsIGFuZCBwcm9wb3J0aW9uYWwg
dG8gdGhlIGFjdHVhbAotICAgIC8vIGV4dGVybmFsIG1lcm1vcnkgdXNhZ2UuCisgICAgLy8gZXh0
ZXJuYWwgbWVtb3J5IHVzYWdlLgogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVk
KHRoaXNPYmotPm1fbWFwLmNhcGFjaXR5KCkgKiAoc2l6ZW9mKEpTT2JqZWN0KikgKyBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcERhdGEuaAppbmRleCBjZmNkODUzLi5lMDQ4YTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBXZWFrTWFwRGF0YShWTSYpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCop
OwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgKaW5kZXggOTI2MDljZS4uZGMyZjNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTMyNyw2ICszMjcs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5C
eXRlcygpIGNvbnN0IHsgcmV0dXJuIHRlcm1zLmNhcGFjaXR5KCkgKiBzaXplb2YoQnl0ZVRlcm0p
OyB9CisKICAgICBWZWN0b3I8Qnl0ZVRlcm0+IHRlcm1zOwogICAgIHVuc2lnbmVkIG1fbnVtU3Vi
cGF0dGVybnM7CiAgICAgdW5zaWduZWQgbV9mcmFtZVNpemU7CkBAIC0zNTMsNiArMzU1LDggQEAg
cHVibGljOgogICAgICAgICBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLnNocmlua1RvRml0KCk7CiAg
ICAgfQogCisgICAgc2l6ZV90IGVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9ib2R5LT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZURpc2p1bmN0aW9uPiBtX2JvZHk7CiAgICAgYm9vbCBtX2lnbm9yZUNhc2U7CiAgICAgYm9v
bCBtX211bHRpbGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA4Y2Ux
YmYxLi40ZDg2NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0xNDEs
NiArMTQxLDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHNpemVfdCBzaXplKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JlZjguc2l6ZSgpICsgbV9yZWYxNi5zaXpl
KCkgKyBtX21hdGNoT25seTguc2l6ZSgpICsgbV9tYXRjaE9ubHkxNi5zaXplKCk7CisgICAgfQor
CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBtX3JlZjggPSBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYoKTsK
</data>
<flag name="review"
          id="297303"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272532</attachid>
            <date>2016-02-29 17:19:50 -0800</date>
            <delta_ts>2016-02-29 18:07:05 -0800</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>for-landing-1.patch</filename>
            <type>text/plain</type>
            <size>24444</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OTljODkuLjc4YWNkNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE2LTAyLTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBNZXRob2RUYWJsZSBt
ZXRob2QgdG8gZ2V0IGFuIGVzdGltYXRlZCBzaXplIGZvciBhIGNlbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoZSBuZXcgY2xhc3MgbWV0aG9kIGVzdGlt
YXRlZFNpemUoSlNDZWxsKikgZXN0aW1hdGVzIHRoZSBzaXplIGZvciBhIHNpbmdsZSBjZWxsLgor
ICAgICAgICBBcyB0aGUgbmFtZSBpbXBsaWVzLCB0aGlzIGlzIG1lYW50IHRvIGJlIGFuIGFwcHJv
eGltYXRpb24uIEl0IGlzIG1vcmUgaW1wb3J0YW50CisgICAgICAgIHRoYXQgYmlnIG9iamVjdHMg
cmVwb3J0IGEgbGFyZ2Ugc2l6ZSwgdGhlbiB0byBnZXQgcGVyZmVjdCBzaXplIGluZm9ybWF0aW9u
IGZvcgorICAgICAgICBhbGwgb2JqZWN0cyBpbiB0aGUgaGVhcC4KKworICAgICAgICAgICAgQmFz
ZSBpbXBsZW1lbnRhdGlvbiAoSlNDZWxsKToKKyAgICAgICAgICAgICAgLSByZXR1cm5zIHRoZSBN
YXJrZWRCbG9jayBidWNrZXQgc2l6ZSBmb3IgdGhpcyBjZWxsLgorICAgICAgICAgICAgICAtIFRo
aXMgZ2V0cyB1cyB0aGUgb2JqZWN0IHNpemUgaW5jbHVkZSBpbmxpbmUgc3RvcmFnZS4gQmFzaWNh
bGx5IGEgYmV0dGVyIHNpemVvZi4KKworICAgICAgICAgICAgU3ViY2xhc3NlcyB3aXRoICJFeHRy
YSBNZW1vcnkgQ29zdCI6CisgICAgICAgICAgICAgIC0gQW55IGNsYXNzIHRoYXQgcmVwb3J0cyBl
eHRyYSBtZW1vcnkgKHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCkgc2hvdWxkIGluY2x1ZGUgdGhh
dCBpbiB0aGUgZXN0aW1hdGVkIHNpemUuCisgICAgICAgICAgICAgIC0gRS5nLiBDb2RlQmxvY2ss
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LCBXZWFrTWFwRGF0YSwgZXRjLgorCisgICAgICAgICAg
ICBTdWJjbGFzc2VzIHdpdGggIkNvcGllZCBTcGFjZSIgc3RvcmFnZToKKyAgICAgICAgICAgICAg
LSBBbnkgY2xhc3Mgd2l0aCBkYXRhIGluIGNvcGllZCBzcGFjZSAoY29weUJhY2tpbmdTdG9yZSkg
c2hvdWxkIGluY2x1ZGUgdGhhdCBpbiB0aGUgZXN0aW1hdGVkIHNpemUuCisgICAgICAgICAgICAg
IC0gRS5nLiBKU09iamVjdCwgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcsIEpTTWFwLCBKU1NldCwg
RGlyZWN0QXJndW1lbnRzLCBldGMuCisKKyAgICAgICAgQWRkIHJlcG9ydEV4dHJhTWVtb3J5Vmlz
aXRlZCBmb3IgVW5saW5rZWRDb2RlQmxvY2sncyBjb21wcmVzc2VkIHVubGlua2VkCisgICAgICAg
IGluc3RydWN0aW9ucyBiZWNhdXNlIHRoaXMgY2FuIGJlIGxhcmdlciB0aGFuIDFrYiwgd2hpY2gg
aXMgc2lnbmlmaWNhbnQuCisKKyAgICAgICAgVGhpcyBoYXMgb25lIHNwZWNpYWwgY2FzZSBmb3Ig
UmVnRXhwIGdlbmVyYXRlZCBieXRlY29kZSAvIEpJVCBjb2RlLCB3aGljaAorICAgICAgICBkb2Vz
IG5vdCBjdXJyZW50bHkgZmFsbCBpbnRvIHRoZSBleHRyYSBtZW1vcnkgY29zdCBvciBjb3BpZWQg
c3BhY2Ugc3RvcmFnZS4KKyAgICAgICAgSW4gcHJhY3RpY2UgSSBoYXZlbid0IHNlZW4gdGhpcyBn
cm93IHRvIGEgc2lnbmlmaWNhbnQgY29zdC4KKworICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZv
Lmg6CisgICAgICAgIEFkZCB0aGUgbmV3IGVzdGltYXRlZFNpemUgbWV0aG9kIHRvIHRoZSB0YWJs
ZS4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpzZXRJbnN0cnVjdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmg6CisgICAgICAgIFJlcG9ydCBhbiBleHRyYSBtZW1vcnkgY29zdCBmb3IgdW5s
aW5rZWQgY29kZSBibG9ja3MgbGlrZQorICAgICAgICB3ZSBkbyBmb3IgbGlua2VkIGNvZGUgYmxv
Y2tzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbTo6c2l6ZUluQnl0ZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaDoKKyAgICAgICAgKiBy
dW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFyZ3VtZW50
czo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZXN0
aW1hdGVkU2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmVzdGltYXRlZFNpemUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNNYXA6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
YXAuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnZpc2l0QnV0dGVyZmx5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1NldC5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0Ojplc3RpbWF0
ZWRTaXplKToKKyAgICAgICAgKiBydW50aW1lL0pTU2V0Lmg6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9NYXBEYXRhLmg6
CisgICAgICAgIChKU0M6Ok1hcERhdGFJbXBsOjpjYXBhY2l0eUluQnl0ZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvV2Vha01hcERhdGEuY3BwOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6ZXN0
aW1hdGVkU2l6ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisgICAgICAgIEltcGxlbWVudCBlc3Rp
bWF0ZWQgc2l6ZSBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gb2YgcmVwb3J0aW5nCisgICAgICAgIGV4
dHJhIHZpc2l0ZWQgc2l6ZSwgb3IgY29weSBzcGFjZSBtZW1vcnkuCisKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRl
ci5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlRGlzanVuY3Rpb246OmVzdGltYXRlZFNpemVJ
bkJ5dGVzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuOjplc3RpbWF0ZWRT
aXplSW5CeXRlcyk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJDb2RlQmxvY2s6OnNpemUpOgorICAgICAgICBJbmNsdWRlIGdlbmVyYXRlZCBieXRl
Y29kZSAvIEpJVENvZGUgdG8gYSBSZWdFeHAncyBzaXplLgorCiAyMDE2LTAyLTI4ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMgc2hvdWxkIGhhdmUgZ2xvYmFs
IHN0b3JlIGVsaW1pbmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGJiMzk5YmYuLjdjZmQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0yNDYyLDYgKzI0NjIsMTUgQEAgdm9pZCBD
b2RlQmxvY2s6OnZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQogfQogCitzaXplX3QgQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBDb2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q29kZUJsb2Nr
Kj4oY2VsbCk7CisgICAgc2l6ZV90IGV4dHJhTWVtb3J5QWxsb2NhdGVkID0gdGhpc09iamVjdC0+
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKTsKKyAgICBpZiAodGhp
c09iamVjdC0+bV9qaXRDb2RlKQorICAgICAgICBleHRyYU1lbW9yeUFsbG9jYXRlZCArPSB0aGlz
T2JqZWN0LT5tX2ppdENvZGUtPnNpemUoKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6
ZShjZWxsKSArIGV4dHJhTWVtb3J5QWxsb2NhdGVkOworfQorCiB2b2lkIENvZGVCbG9jazo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIENv
ZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4YTEwOTAxMi4uOTZjZWU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTc5
LDYgKzE3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIzNjc3CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZVZlcnNpb24oKTsKIAor
ICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCB2aXNpdFdlYWtseShTbG90VmlzaXRvciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggOTM2ZWY3Ni4uODNkOTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC05OSwxMiArOTks
MjEgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9y
OjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYmVnaW4oKSwgZW5k
ID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikK
ICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT5tX2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwgdGhpc09iamVjdC0+bV9jb25z
dGFudFJlZ2lzdGVycy5zaXplKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5z
dHJ1Y3Rpb25zKQorICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlz
T2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpKTsKICAgICBpZiAo
dGhpc09iamVjdC0+bV9yYXJlRGF0YSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgZW5k
ID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+bV9yZWdleHBzLnNpemUoKTsgaSAhPSBlbmQ7IGkr
KykKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5t
X3JlZ2V4cHNbaV0pOwogICAgIH0KIH0KIAorc2l6ZV90IFVubGlua2VkQ29kZUJsb2NrOjplc3Rp
bWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdGhpc09i
amVjdCA9IGpzQ2FzdDxVbmxpbmtlZENvZGVCbG9jayo+KGNlbGwpOworICAgIHNpemVfdCBleHRy
YVNpemUgPSB0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zID8gdGhpc09iamVjdC0+
bV91bmxpbmtlZEluc3RydWN0aW9ucy0+c2l6ZUluQnl0ZXMoKSA6IDA7CisgICAgcmV0dXJuIEJh
c2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBleHRyYVNpemU7Cit9CisKIGludCBVbmxpbmtlZENv
ZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQogewogICAgIEFTU0VSVChieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLmNvdW50
KCkpOwpAQCAtMzQzLDcgKzM1Miw5IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjpzZXRJbnN0
cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRyPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3Ry
dWN0aW9ucykKIHsKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKTsKICAgICBtX3VubGlua2VkSW5z
dHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOworICAgIEhlYXA6OmhlYXAodGhpcykt
PnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1fdW5saW5rZWRJbnN0cnVjdGlvbnMtPnNpemVJ
bkJ5dGVzKCkpOwogfQogCiBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtl
ZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNWU5OGJjYi4uYjZhZDQy
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTQ1NCw2ICs0NTQsNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcAppbmRleCA1NjhkYmI2Li42YTMwMGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVj
dGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC0xMDIsNiArMTAyLDExIEBAIFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW06OlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0oY29uc3QgVmVjdG9yPFVu
bGlua2VkSW5zdHJ1CiAgICAgbV9kYXRhID0gUmVmQ291bnRlZEFycmF5PHVuc2lnbmVkIGNoYXI+
KGJ1ZmZlcik7CiB9CiAKK3NpemVfdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpzaXplSW5C
eXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5zaXplKCkgKiBzaXplb2YodW5zaWdu
ZWQgY2hhcik7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBjb25zdCBSZWZDb3VudGVkQXJyYXk8VW5s
aW5rZWRJbnN0cnVjdGlvbj4mIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OnVucGFja0ZvckRl
YnVnZ2luZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCA2MzIzYzQ0Li5hODc1
ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0oY29uc3QgVmVjdG9yPFVubGlua2Vk
SW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYpOwogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KKyAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIGNsYXNzIFJlYWRlciB7CiAgICAgcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBjMjJkMDYyLi44
NGZjMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAt
MTA1LDYgKzEwNSw5IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAKICAgICB0eXBlZGVmIHZvaWQg
KCpEdW1wVG9TdHJlYW1GdW5jdGlvblB0cikoY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsK
ICAgICBEdW1wVG9TdHJlYW1GdW5jdGlvblB0ciBkdW1wVG9TdHJlYW07CisKKyAgICB0eXBlZGVm
IHNpemVfdCAoKkVzdGltYXRlZFNpemVGdW5jdGlvblB0cikoSlNDZWxsKik7CisgICAgRXN0aW1h
dGVkU2l6ZUZ1bmN0aW9uUHRyIGVzdGltYXRlZFNpemU7CiB9OwogCiAjZGVmaW5lIENSRUFURV9N
RU1CRVJfQ0hFQ0tFUihtZW1iZXIpIFwKQEAgLTE1MSw3ICsxNTQsOCBAQCBzdHJ1Y3QgTWV0aG9k
VGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVPd25Qcm9wZXJ0eSwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5LCBcCiAgICAgICAgICZDbGFzc05h
bWU6OmdldFR5cGVkQXJyYXlJbXBsLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVh
bSBcCisgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSwgXAorICAgICAgICAmQ2xhc3NO
YW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCiAgICAgQ2xhc3NOYW1lOjpUeXBlZEFycmF5
U3RvcmFnZVR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlyZWN0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEFyZ3VtZW50cy5jcHAKaW5kZXggNGY5MzU0NS4uYjg0MGRmOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCkBAIC04NSw2ICs4NSwx
MyBAQCBEaXJlY3RBcmd1bWVudHMqIERpcmVjdEFyZ3VtZW50czo6Y3JlYXRlQnlDb3B5aW5nKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzaXplX3QgRGlyZWN0QXJn
dW1lbnRzOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBEaXJlY3RBcmd1bWVu
dHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4oY2VsbCk7CisgICAgc2l6
ZV90IG92ZXJyaWRlc1NpemUgPSB0aGlzT2JqZWN0LT5tX292ZXJyaWRlcyA/IHRoaXNPYmplY3Qt
Pm92ZXJyaWRlc1NpemUoKSA6IDA7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2Vs
bCkgKyBvdmVycmlkZXNTaXplOworfQorCiB2b2lkIERpcmVjdEFyZ3VtZW50czo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIHRoaXNDZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBEaXJl
Y3RBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxEaXJlY3RBcmd1bWVudHMqPih0
aGlzQ2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50cy5oCmluZGV4IGExOWY4ZTMuLjE5MTFlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCkBAIC01NSw3ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3QgYnkgY29weWluZyB0aGUg
YXJndW1uZXRzIGZyb20gdGhlIHN0YWNrLgogICAgIHN0YXRpYyBEaXJlY3RBcmd1bWVudHMqIGNy
ZWF0ZUJ5Q29weWluZyhFeGVjU3RhdGUqKTsKLSAgICAKKworICAgIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0Nl
bGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyYzQwM2M4Li4wOWFmMzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTUxLDYgKzUxLDE2IEBAIHZvaWQgSlND
ZWxsOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQcmludFN0cmVhbSYgb3V0KQog
ICAgIG91dC5wcmludGYoIjwlcCwgJXM+IiwgY2VsbCwgY2VsbC0+Y2xhc3NOYW1lKCkpOwogfQog
CitzaXplX3QgSlNDZWxsOjplc3RpbWF0ZWRTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1ldGhvZFRhYmxlKCktPmVzdGltYXRlZFNpemUoY29uc3RfY2FzdDxKU0NlbGwqPih0aGlz
KSk7Cit9CisKK3NpemVfdCBKU0NlbGw6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNlbGxTaXplKCk7Cit9CisK
IHZvaWQgSlNDZWxsOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29w
eVRva2VuKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA1
NDY0MjAzLi5mOTg4OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtMTM0LDYgKzEzNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wVG9TdHJlYW0o
Y29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKKworICAgIHNpemVfdCBlc3RpbWF0ZWRTaXpl
SW5CeXRlcygpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqKTsKKwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBj
b3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggMTA4YmY5YS4uODU4OTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yODMs
NyArMjgzLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAog
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgCisKKyAgICBzdGF0
aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGNvcHlCYWNr
aW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGUzY2ZiNDQuLjk0ODI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC00MDYsNiArNDA2LDE5IEBAIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5TmFtZXMoCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CitzaXplX3QgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmVz
dGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CisK
KyAgICBpZiAodGhpc09iamVjdC0+bV9tb2RlID09IE92ZXJzaXplVHlwZWRBcnJheSkKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUodGhpc09iamVjdCkgKyB0aGlzT2JqZWN0LT5i
eXRlU2l6ZSgpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZGUgPT0gRmFzdFR5cGVkQXJyYXkg
JiYgdGhpc09iamVjdC0+bV92ZWN0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRT
aXplKHRoaXNPYmplY3QpICsgdGhpc09iamVjdC0+Ynl0ZVNpemUoKTsKKworICAgIHJldHVybiBC
YXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBB
ZGFwdG9yPgogdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAKaW5kZXgg
NDRkMGYzOS4uMGY0ZTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNw
cApAQCAtNDMsNiArNDMsMTMgQEAgdm9pZCBKU01hcDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAg
ICAgdGhpc09iamVjdC0+SlNNYXA6On5KU01hcCgpOwogfQogCitzaXplX3QgSlNNYXA6OmVzdGlt
YXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpTTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTWFwKj4oY2VsbCk7CisgICAgc2l6ZV90IG1hcERhdGFTaXplID0gdGhpc09iamVjdC0+bV9t
YXBEYXRhLmNhcGFjaXR5SW5CeXRlcygpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwpICsgbWFwRGF0YVNpemU7Cit9CisKIHZvaWQgSlNNYXA6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKaW5k
ZXggMjEzMDQ3Yy4uYjg4YjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5o
CkBAIC0xMjIsNiArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwq
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYs
IENvcHlUb2tlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAppbmRleCBhODg1OTIxLi43NWRjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBK
U09iamVjdDo6dmlzaXRCdXR0ZXJmbHkoU2xvdFZpc2l0b3ImIHZpc2l0b3IsIEJ1dHRlcmZseSog
YnV0CiAgICAgfQogfQogCitzaXplX3QgSlNPYmplY3Q6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQoreworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2Vs
bCk7CisgICAgc2l6ZV90IGJ1dHRlcmZseU91dE9mTGluZVNpemUgPSB0aGlzT2JqZWN0LT5tX2J1
dHRlcmZseSA/IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplKCkgOiAwOwor
ICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgYnV0dGVyZmx5T3V0T2ZMaW5l
U2l6ZTsKK30KKwogdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCAzOGZmNDUxLi4wOTIyYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTk0LDcgKzk0LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlND
ZWxsIHsKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgICAgIAorCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCop
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5
QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCmluZGV4IDE0NGI5ZGEuLjQ2YWFmMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAKQEAgLTQzLDYgKzQzLDEzIEBA
IHZvaWQgSlNTZXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTU2V0
Ojp+SlNTZXQoKTsKIH0KIAorc2l6ZV90IEpTU2V0Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBKU1NldCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldCo+KGNlbGwpOworICAg
IHNpemVfdCBzZXREYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1fc2V0RGF0YS5jYXBhY2l0eUluQnl0
ZXMoKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIHNldERhdGFTaXpl
OworfQorCiB2b2lkIEpTU2V0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCmluZGV4IDYxYmQ5MTkuLmM0ZDRiMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaApAQCAtMTE3LDYgKzExNyw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAg
ICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGNv
cHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggOWUzOGI5ZS4uYWQ4
YTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAt
NzIsNiArNzIsMTQgQEAgdm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCog
Y2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKICAgICBvdXQucHJpbnRmKCI+Iik7CiB9CiAKK3NpemVf
dCBKU1N0cmluZzo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAgSlNTdHJpbmcq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsKKyAgICBpZiAodGhpc09iamVj
dC0+aXNSb3BlKCkpCisgICAgICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpOwor
ICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgdGhpc09iamVjdC0+bV92YWx1
ZS5pbXBsKCktPmNvc3REdXJpbmdHQygpOworfQorCiB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNTdHJpbmcq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGNlYmY4MzMuLmYyNzNhNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTgxLDYgKzE4MSw3IEBAIHB1Ymxp
YzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcFRvU3Ry
ZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CisgICAgc3RhdGljIHNpemVfdCBlc3Rp
bWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwRGF0YS5oCmluZGV4IGIyMzg2ZWMuLjZhNGNjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBEYXRhLmgKQEAgLTExMSw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogb3duZXIsIFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBj
b3B5QmFja2luZ1N0b3JlKENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKIAorICAgIHNpemVfdCBj
YXBhY2l0eUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5ICogc2l6ZW9mKEVudHJ5
KTsgfQorCiBwcml2YXRlOgogICAgIHR5cGVkZWYgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxpbnQzMl90PiBJbmRleFRyYWl0czsKIApAQCAtMTE5LDggKzEyMSw2IEBAIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBpbnQzMl90LCB0eXBlbmFtZSBX
VEY6OkRlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPjo6SGFzaCwgV1RGOjpIYXNoVHJhaXRzPFN0cmlu
Z0ltcGwqPiwgSW5kZXhUcmFpdHM+IFN0cmluZ0tleWVkTWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxTeW1ib2xJbXBsKiwgaW50MzJfdCwgdHlwZW5hbWUgV1RGOjpQdHJIYXNoPFN5bWJvbEltcGwq
PiwgV1RGOjpIYXNoVHJhaXRzPFN5bWJvbEltcGwqPiwgSW5kZXhUcmFpdHM+IFN5bWJvbEtleWVk
TWFwOwogCi0gICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIHsgcmV0dXJuIG1fY2FwYWNpdHkg
KiBzaXplb2YoRW50cnkpOyB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIEVudHJ5KiBmaW5kKEV4ZWNT
dGF0ZSosIEtleVR5cGUpOwogICAgIEFMV0FZU19JTkxJTkUgRW50cnkqIGFkZChFeGVjU3RhdGUq
LCBKU0NlbGwqIG93bmVyLCBLZXlUeXBlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLCB0
eXBlbmFtZSBLZXk+IEFMV0FZU19JTkxJTkUgRW50cnkqIGFkZChFeGVjU3RhdGUqLCBKU0NlbGwq
IG93bmVyLCBNYXAmLCBLZXksIEtleVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKaW5kZXggN2E2ZjgwYy4uMjY3NTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0yNTYsNiArMjU2LDE2IEBAIHZvaWQgUmVnRXhwOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5SZWdFeHA6On5SZWdFeHAoKTsK
IH0KIAorc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAg
UmVnRXhwKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UmVnRXhwKj4oY2VsbCk7CisgICAgc2l6
ZV90IHJlZ2V4RGF0YVNpemUgPSB0aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5dGVjb2RlID8gdGhpc09i
amVjdC0+bV9yZWdFeHBCeXRlY29kZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSA6IDA7CisjaWYg
RU5BQkxFKFlBUlJfSklUKQorICAgIHJlZ2V4RGF0YVNpemUgKz0gdGhpc09iamVjdC0+bV9yZWdF
eHBKSVRDb2RlLnNpemUoKTsKKyNlbmRpZgorICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwpICsgcmVnZXhEYXRhU2l6ZTsKK30KKwogUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhv
dXRDYWNoaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFn
cyBmbGFncykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFJlZ0V4cD4odm0uaGVhcCkpIFJlZ0V4cCh2bSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCA1YzA1YzViLi4zNzc3ZmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtNTAsNiArNTAsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRlKFZN
JiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAKICAg
ICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAg
ICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVD
YXNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAK
aW5kZXggZGRjMDI5ZS4uMTMzMmU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBEYXRhLmNwcApAQCAtNTQsNiArNTQsMTIgQEAgdm9pZCBXZWFrTWFwRGF0YTo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgc3RhdGljX2Nhc3Q8V2Vha01hcERhdGEqPihjZWxs
KS0+fldlYWtNYXBEYXRhKCk7CiB9CiAKK3NpemVfdCBXZWFrTWFwRGF0YTo6ZXN0aW1hdGVkU2l6
ZShKU0NlbGwqIGNlbGwpCit7CisgICAgV2Vha01hcERhdGEqIHRoaXNPYmogPSBqc0Nhc3Q8V2Vh
a01hcERhdGEqPihjZWxsKTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSAr
ICh0aGlzT2JqLT5tX21hcC5jYXBhY2l0eSgpICogKHNpemVvZihKU09iamVjdCopICsgc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKK30KKwogdm9pZCBXZWFrTWFwRGF0YTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CkBAIC02Myw3ICs2OSw3IEBAIHZvaWQgV2Vh
a01hcERhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIAogICAgIC8vIFJvdWdoIGFwcHJveGltYXRpb24gb2YgdGhlIGV4dGVybmFsIHN0b3JhZ2Ug
bmVlZGVkIGZvciB0aGUgaGFzaHRhYmxlLgogICAgIC8vIFRoaXMgaXNuJ3QgZXhhY3QsIGJ1dCBp
dCBpcyBjbG9zZSBlbm91Z2gsIGFuZCBwcm9wb3J0aW9uYWwgdG8gdGhlIGFjdHVhbAotICAgIC8v
IGV4dGVybmFsIG1lcm1vcnkgdXNhZ2UuCisgICAgLy8gZXh0ZXJuYWwgbWVtb3J5IHVzYWdlLgog
ICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmotPm1fbWFwLmNhcGFj
aXR5KCkgKiAoc2l6ZW9mKEpTT2JqZWN0KikgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaApp
bmRleCBjZmNkODUzLi5lMDQ4YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBEYXRhLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
ZWFrTWFwRGF0YShWTSYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAg
c3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVy
LmgKaW5kZXggOTI2MDljZS4uZGMyZjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckludGVycHJldGVyLmgKQEAgLTMyNyw2ICszMjcsOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAorICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IHRlcm1zLmNhcGFjaXR5KCkgKiBzaXplb2YoQnl0ZVRlcm0pOyB9CisKICAgICBWZWN0b3I8Qnl0
ZVRlcm0+IHRlcm1zOwogICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnM7CiAgICAgdW5zaWdu
ZWQgbV9mcmFtZVNpemU7CkBAIC0zNTMsNiArMzU1LDggQEAgcHVibGljOgogICAgICAgICBtX3Vz
ZXJDaGFyYWN0ZXJDbGFzc2VzLnNocmlua1RvRml0KCk7CiAgICAgfQogCisgICAgc2l6ZV90IGVz
dGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5LT5lc3RpbWF0ZWRTaXpl
SW5CeXRlcygpOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBtX2Jv
ZHk7CiAgICAgYm9vbCBtX2lnbm9yZUNhc2U7CiAgICAgYm9vbCBtX211bHRpbGluZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA4Y2UxYmYxLi40ZDg2NzYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0xNDEsNiArMTQxLDExIEBAIHB1YmxpYzoK
ICAgICB9CiAjZW5kaWYKIAorICAgIHNpemVfdCBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3JlZjguc2l6ZSgpICsgbV9yZWYxNi5zaXplKCkgKyBtX21hdGNoT25seTguc2l6
ZSgpICsgbV9tYXRjaE9ubHkxNi5zaXplKCk7CisgICAgfQorCiAgICAgdm9pZCBjbGVhcigpCiAg
ICAgewogICAgICAgICBtX3JlZjggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>