<?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>154942</bug_id>
          
          <creation_ts>2016-03-02 17:12:19 -0800</creation_ts>
          <short_desc>clean up JSObject::isExtensibleInline and JSObject::setPrototypeOfInline, and rename setPrototypeOf to setPrototype</short_desc>
          <delta_ts>2016-03-02 18:04:59 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170027</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 17:12:19 -0800</bug_when>
    <thetext>These don&apos;t need to be inlined in the way they are.
Doing full dynamic dispatch always is probably ok performance wise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170041</commentid>
    <comment_count>1</comment_count>
      <attachid>272713</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 17:38:50 -0800</bug_when>
    <thetext>Created attachment 272713
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170042</commentid>
    <comment_count>2</comment_count>
      <attachid>272714</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 17:39:55 -0800</bug_when>
    <thetext>Created attachment 272714
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170043</commentid>
    <comment_count>3</comment_count>
      <attachid>272714</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-02 17:41:29 -0800</bug_when>
    <thetext>Comment on attachment 272714
patch

Ok if perf is unchanged or better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170050</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 18:01:35 -0800</bug_when>
    <thetext>seems ok:

Benchmark report for Kraken on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;og&quot; at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
&quot;change&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

Collected 8 samples per benchmark/VM, with 8 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                              og                      change                                      

ai-astar                                91.913+-0.757      ?      94.022+-2.798         ? might be 1.0229x slower
audio-beat-detection                    52.289+-4.154             49.723+-3.826           might be 1.0516x faster
audio-dft                               95.634+-2.172      ?      97.823+-6.562         ? might be 1.0229x slower
audio-fft                               33.743+-0.977             33.512+-0.488         
audio-oscillator                        45.144+-0.325      ?      45.961+-1.399         ? might be 1.0181x slower
imaging-darkroom                        57.117+-1.545      ?      57.289+-1.964         ?
imaging-desaturate                      42.266+-0.227      ?      43.644+-1.257         ? might be 1.0326x slower
imaging-gaussian-blur                   63.772+-3.624             63.717+-0.294         
json-parse-financial                    35.229+-0.873      ?      36.172+-1.654         ? might be 1.0268x slower
json-stringify-tinderbox                24.211+-0.466             23.825+-1.067           might be 1.0162x faster
stanford-crypto-aes                     38.561+-1.303             38.373+-0.724         
stanford-crypto-ccm                     35.894+-1.382             35.808+-1.316         
stanford-crypto-pbkdf2                  97.502+-1.700             96.834+-0.875         
stanford-crypto-sha256-iterative        37.218+-1.387      ?      37.518+-1.697         ?

&lt;arithmetic&gt;                            53.607+-0.447      ?      53.873+-0.866         ? might be 1.0050x slower


Benchmark report for Octane on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;og&quot; at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
&quot;change&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                               og                      change                                      

encrypt                 0.14868+-0.00304    ?     0.15128+-0.00250       ? might be 1.0174x slower
decrypt                 2.66179+-0.01530    ?     2.71546+-0.12385       ? might be 1.0202x slower
deltablue      x2       0.13080+-0.00139    ?     0.13245+-0.00127       ? might be 1.0126x slower
earley                  0.27077+-0.00353          0.27045+-0.00304       
boyer                   4.26831+-0.02858          4.25688+-0.02520       
navier-stokes  x2       4.66434+-0.06324          4.65171+-0.02990       
raytrace       x2       0.84510+-0.00379    ?     0.84888+-0.00548       ?
richards       x2       0.07780+-0.00125          0.07671+-0.00074         might be 1.0143x faster
splay          x2       0.33624+-0.00365    ?     0.33945+-0.00333       ?
regexp         x2      22.10681+-1.00198         21.74033+-0.50713         might be 1.0169x faster
pdfjs          x2      36.34950+-0.76450    ?    36.58197+-0.53117       ?
mandreel       x2      39.99601+-0.31316    ?    40.52756+-0.67490       ? might be 1.0133x slower
gbemu          x2      23.30363+-0.36542    ?    23.30821+-0.26243       ?
closure                 0.54711+-0.00880    ?     0.54869+-0.00251       ?
jquery                  7.19652+-0.04057    ?     7.20764+-0.09384       ?
box2d          x2       8.71686+-0.10681          8.71193+-0.06984       
zlib           x2     372.28657+-6.08533        371.93633+-5.16447       
typescript     x2     641.08386+-3.62551        639.85050+-13.85599      

&lt;geometric&gt;             4.97328+-0.02544    ?     4.98268+-0.01063       ? might be 1.0019x slower


Benchmark report for AsmBench on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;og&quot; at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
&quot;change&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times
with 95% confidence intervals in milliseconds.

                                    og                      change                                      

bigfib.cpp                  420.3285+-15.5472         403.7895+-4.7334          might be 1.0410x faster
cray.c                      343.9819+-5.8693          343.7607+-8.1333        
dry.c                       398.2158+-8.8498     ?    432.5530+-130.1604      ? might be 1.0862x slower
FloatMM.c                   666.3773+-10.0069    ?    677.7939+-19.7492       ? might be 1.0171x slower
gcc-loops.cpp              3465.8329+-16.9551        3458.0456+-30.1127       
n-body.c                    759.4915+-7.6487     ?    763.3345+-7.7038        ?
Quicksort.c                 370.7815+-3.0035     ?    374.8322+-6.8399        ? might be 1.0109x slower
stepanov_container.cpp     3216.4509+-33.1501        3209.3784+-45.2276       
Towers.c                    261.4466+-11.1849         258.7264+-2.8191          might be 1.0105x faster

&lt;geometric&gt;                 680.9374+-8.0557     ?    684.6670+-20.7696       ? might be 1.0055x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170051</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 18:04:59 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/197484</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272713</attachid>
            <date>2016-03-02 17:38:50 -0800</date>
            <delta_ts>2016-03-02 17:39:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>20011</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE2LTAzLTAyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGNsZWFuIHVwIEpTT2JqZWN0Ojppc0V4dGVuc2libGVJbmxpbmUgYW5kIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVPZklubGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlc2UgZG9uJ3QgbmVlZCB0byBiZSBpbmxpbmVkIGluIHRoZSB3YXkgdGhleSBh
cmUuCisgICAgICAgIERvaW5nIGR5bmFtaWMgZGlzcGF0Y2ggaXMgb2sgcGVyZm9ybWFuY2Ugd2lz
ZSB1bnRpbAorICAgICAgICB3ZSBoYXZlIGV2aWRlbmNlIHN0YXRpbmcgb3RoZXJ3aXNlLgorCisg
ICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90
eXBlKToKKyAgICAgICAgKEpTT2JqZWN0SGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxDb2xsYXRvcik6CisgICAgICAgICogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVy
Rm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFByb3RvdHlwZU9mKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFBy
b3RvdHlwZU9mKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6aW5kZXhpbmdTaG91bGRCZVNwYXJzZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVPZklubGluZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojppc0V4dGVuc2libGVJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
clNldFByb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxl
ZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSk6CisgICAgICAgICogcnVudGltZS9Q
cm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJu
YWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZl
bnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVu
c2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2Jq
ZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisKIDIwMTYt
MDMtMDIgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAg
IFtjbWFrZV0gTW92ZWQgUFJFL1BPU1RfQlVJTERfQ09NTUFORCB0byBXRUJLSVRfRlJBTUVXT1JL
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlz
aW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBKU09iamVjdFNldFByb3Rv
dHlwZShKU0NvbnRleHRSZWYgYwogICAgICAgICAvLyBTb21lZGF5IHdlIG1pZ2h0IHVzZSBwcm94
aWVzIGZvciBzb21ldGhpbmcgb3RoZXIgdGhhbiBKU0dsb2JhbE9iamVjdHMsIGJ1dCB0b2RheSBp
cyBub3QgdGhhdCBkYXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQotICAgIGpzT2JqZWN0LT5zZXRQcm90b3R5cGVPZklubGluZShleGVjLT52bSgpLCBleGVj
LCBqc1ZhbHVlLmlzT2JqZWN0KCkgPyBqc1ZhbHVlIDoganNOdWxsKCkpOworICAgIGpzT2JqZWN0
LT5zZXRQcm90b3R5cGUoZXhlYy0+dm0oKSwgZXhlYywganNWYWx1ZS5pc09iamVjdCgpID8ganNW
YWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9u
IDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDggQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB0eXBlZGVmIGJvb2wgKCpJc0V4dGVuc2libGVGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKICAgICBJc0V4dGVuc2libGVGdW5jdGlvblB0ciBpc0V4dGVuc2libGU7CiAKLSAg
ICB0eXBlZGVmIGJvb2wgKCpTZXRQcm90b3R5cGVPZkZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIFNldFByb3RvdHlwZU9mRnVuY3Rpb25QdHIgc2V0UHJv
dG90eXBlT2Y7CisgICAgdHlwZWRlZiBib29sICgqU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgU2V0UHJvdG90eXBlRnVuY3Rpb25Q
dHIgc2V0UHJvdG90eXBlOwogCiAgICAgdHlwZWRlZiB2b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rp
b25QdHIpKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CiAgICAgRHVtcFRvU3RyZWFtRnVu
Y3Rpb25QdHIgZHVtcFRvU3RyZWFtOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OmdldFR5cGVkQXJyYXlJbXBsLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFzc05hbWU6Omlz
RXh0ZW5zaWJsZSwgXAotICAgICAgICAmQ2xhc3NOYW1lOjpzZXRQcm90b3R5cGVPZiwgXAorICAg
ICAgICAmQ2xhc3NOYW1lOjpzZXRQcm90b3R5cGUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZHVt
cFRvU3RyZWFtLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmVzdGltYXRlZFNpemUgXAogICAgIH0s
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zCiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3Jl
YXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkp
KTsKICAgICBpZiAoY29sbGF0b3IgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IqPihuZXdUYXJnZXQpKSB7CiAgICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChu
ZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0g
ICAgICAgIGFzT2JqZWN0KGNvbGxhdG9yKS0+c2V0UHJvdG90eXBlT2ZJbmxpbmUodm0sIHN0YXRl
LCBwcm90byk7CisgICAgICAgIGFzT2JqZWN0KGNvbGxhdG9yKS0+c2V0UHJvdG90eXBlKHZtLCBz
dGF0ZSwgcHJvdG8pOwogICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTk3NDc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnMKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERh
dGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkpOwogICAgIGlmIChkYXRlVGltZUZvcm1hdCAmJiAhanNE
eW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsK
ICAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAgYXNPYmplY3QoZGF0ZVRp
bWVGb3JtYXQpLT5zZXRQcm90b3R5cGVPZklubGluZSh2bSwgc3RhdGUsIHByb3RvKTsKKyAgICAg
ICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5cGUodm0sIHN0YXRlLCBwcm90
byk7CiAgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIElu
dGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZSh2
bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkp
OwogICAgIGlmIChudW1iZXJGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKj4obmV3VGFyZ2V0KSkgewogICAgICAgICBKU1ZhbHVlIHByb3RvID0gYXNP
YmplY3QobmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwotICAgICAgICBhc09iamVjdChudW1iZXJGb3JtYXQpLT5zZXRQcm90b3R5cGVPZklubGlu
ZSh2bSwgc3RhdGUsIHByb3RvKTsKKyAgICAgICAgYXNPYmplY3QobnVtYmVyRm9ybWF0KS0+c2V0
UHJvdG90eXBlKHZtLCBzdGF0ZSwgcHJvdG8pOwogICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAx
OTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBKU0NlbGw6OmlzRXh0ZW5zaWJsZShK
U09iamVjdCosIEV4ZQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJv
b2wgSlNDZWxsOjpzZXRQcm90b3R5cGVPZihKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUp
Citib29sIEpTQ2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1
ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgs
NyArMjA4LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSop
OwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
Ym9vbCBzZXRQcm90b3R5cGVPZihKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAg
IHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShj
b25zdCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3Rv
bUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4
NSwxNCArODg1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1AK
ICAgICBpZiAodGhpc09iamVjdC0+cHJvdG90eXBlKCkgPT0gdmFsdWUpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IHRoaXNPYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBib29sIGlzRXh0
ZW5zaWJsZSA9IHRoaXNPYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaWYgKCFpc0V4dGVuc2libGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoIXRoaXNP
YmplY3QtPnNldFByb3RvdHlwZU9mSW5saW5lKHZtLCBleGVjLCB2YWx1ZSkpIHsKKyAgICBpZiAo
IXRoaXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgdmFsdWUpKSB7CiAgICAgICAgIGlm
ICghdm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSkp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3
NDc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjExLDExICsxMjExLDE2IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3Rv
dHlwZVdpdGhDeWNsZUNoZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU09iamVjdDo6
c2V0UHJvdG90eXBlT2YoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHByb3RvdHlwZSkKK2Jvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIHJldHVybiBvYmpl
Y3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPnZtKCksIGV4ZWMsIHByb3RvdHlw
ZSk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
c2V0UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSk7Cit9CisKIGJvb2wgSlNPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKQEAgLTE3MDEsNiArMTcwNiwx
MiBAQCBib29sIEpTT2JqZWN0Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iCiAgICAgcmV0dXJu
IG9iai0+aXNFeHRlbnNpYmxlSW1wbCgpOwogfQogCitib29sIEpTT2JqZWN0Ojppc0V4dGVuc2li
bGUoRXhlY1N0YXRlKiBleGVjKQoreyAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIHJl
dHVybiBtZXRob2RUYWJsZSh2bSktPmlzRXh0ZW5zaWJsZSh0aGlzLCBleGVjKTsKK30KKwogdm9p
ZCBKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBBU1NFUlQoIXN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CkBAIC0yODYzLDcgKzI4NzQs
NyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgRGVmaW5l
T3duUHJvcGVydHlTY29wZSBzY29wZShleGVjKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgY3Vy
cmVudDsKICAgICBib29sIGlzQ3VycmVudERlZmluZWQgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBjdXJyZW50KTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9
IGlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMt
PmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHZhbGlkYXRlQW5kQXBwbHlQ
cm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJvcGVydHlOYW1lLCBpc0V4dGVuc2libGUs
IGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
MTk3NDc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDE1ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyB0
aGUgZnVsbHkgdmlydHVhbCBbW1NldFByb3RvdHlwZU9mXV0gaW50ZXJuYWwgZnVuY3Rpb24gZGVm
aW5lZAogICAgIC8vIGluIHRoZSBFQ01BU2NyaXB0IDYgc3BlY2lmaWNhdGlvbi4gVXNlIHRoaXMg
d2hlbiBkb2luZyBhIFtbU2V0UHJvdG90eXBlT2ZdXSAKICAgICAvLyBvcGVyYXRpb24gYXMgZGlj
dGF0ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgQUxXQVlTX0lOTElORSBib29sIHNldFBy
b3RvdHlwZU9mSW5saW5lKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBtZXRob2RUYWJs
ZSh2bSktPnNldFByb3RvdHlwZU9mOwotICAgICAgICBpZiAoTElLRUxZKHNldFByb3RvdHlwZU9m
TWV0aG9kID09IEpTT2JqZWN0OjpzZXRQcm90b3R5cGVPZikpCi0gICAgICAgICAgICByZXR1cm4g
c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2sodm0sIGV4ZWMsIHByb3RvdHlwZSk7Ci0KLSAgICAg
ICAgcmV0dXJuIHNldFByb3RvdHlwZU9mTWV0aG9kKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSk7Ci0g
ICAgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNldFByb3RvdHlwZU9mKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgIGJvb2wgc2V0UHJv
dG90eXBlKFZNJiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgCiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXMoKQogICAgIHsKQEAgLTY1MywxNSArNjQ2LDcgQEAgcHVibGljOgogICAgIC8v
IFlvdSBzaG91bGQgY2FsbCB0aGlzIHdoZW4gcGVyZm9ybWluZyBbW0lzRXh0ZW5zaWJsZV1dIHRy
YXAgaW4gYSBwbGFjZQogICAgIC8vIHRoYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0
aW9uLiBUaGlzIHBlcmZvcm1zIHRoZSBmdWxseSB2aXJ0dWFsCiAgICAgLy8gW1tJc0V4dGVuc2li
bGVdXSB0cmFwLgotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0V4dGVuc2libGVJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKQotICAgIHsgCi0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
ICAgIGF1dG8gaXNFeHRlbnNpYmxlTWV0aG9kID0gbWV0aG9kVGFibGUodm0pLT5pc0V4dGVuc2li
bGU7Ci0gICAgICAgIGlmIChMSUtFTFkoaXNFeHRlbnNpYmxlTWV0aG9kID09IEpTT2JqZWN0Ojpp
c0V4dGVuc2libGUpKQotICAgICAgICAgICAgcmV0dXJuIGlzRXh0ZW5zaWJsZUltcGwoKTsKLQot
ICAgICAgICByZXR1cm4gaXNFeHRlbnNpYmxlTWV0aG9kKHRoaXMsIGV4ZWMpOwotICAgIH0KKyAg
ICBib29sIGlzRXh0ZW5zaWJsZShFeGVjU3RhdGUqKTsKICAgICBib29sIGluZGV4aW5nU2hvdWxk
QmVTcGFyc2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuICFpc1N0cnVjdHVyZUV4dGVuc2libGUo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTk3NDc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTQg
KzIxMiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAg
aWYgKG9iamVjdC0+cHJvdG90eXBlKCkgPT0gcHJvdG9WYWx1ZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3RWYWx1ZSk7CiAKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9i
amVjdC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0g
b2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKCFp
c0V4dGVuc2libGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVj
dC0+c2V0UHJvdG90eXBlT2ZJbmxpbmUodm0sIGV4ZWMsIHByb3RvVmFsdWUpOworICAgIGJvb2wg
ZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvVmFs
dWUpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgIGlmICghZGlkU2V0UHJvdG90eXBlKSB7CkBAIC02MjMsNyAr
NjIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAg
Ly8gMy4gSWYgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHByb3BlcnR5IG9mIE8gaXMgZmFs
c2UsIHRoZW4gcmV0dXJuIHRydWUuCiAgICAgLy8gNC4gT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2Uu
Ci0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVj
KTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFp
c0V4dGVuc2libGUpKTsKQEAgLTY2MCw3ICs2NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0CiAKICAgICAvLyAzLiBJZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50
ZXJuYWwgcHJvcGVydHkgb2YgTyBpcyBmYWxzZSwgdGhlbiByZXR1cm4gdHJ1ZS4KICAgICAvLyA0
LiBPdGhlcndpc2UsIHJldHVybiBmYWxzZS4KLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVj
dC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2Jq
ZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oIWlzRXh0ZW5zaWJsZSkpOwpAQCAtNjcyLDcgKzY3Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAoIW9i
ai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwotICAgIGJvb2wg
aXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9v
bCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0V4dGVuc2libGUp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5j
cHAJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgfQogICAgICAgICAvLyBG
SVhNRTogdGhpcyBkb2Vzbid0IHdvcmsgaWYgJ3RhcmdldCcgaXMgYW5vdGhlciBQcm94eS4gV2Ug
ZG9uJ3QgaGF2ZSBpc0V4dGVuc2libGUgaW1wbGVtZW50ZWQgaW4gYSB3YXkgdGhhdCBmaXRzIHcv
IFByb3h5cy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDM3NQotICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNp
YmxlSW5saW5lKGV4ZWMpOworICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNF
eHRlbnNpYmxlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CkBAIC0y
MTUsNyArMjE1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSB0
YXJnZXQtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9
IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciB0cmFwUmVz
dWx0QXNEZXNjcmlwdG9yOwpAQCAtMjk5LDcgKzI5OSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24t
Y29uZmlndXJhYmxlIHByb3BlcnRpZXMuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0
LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGlmICghaXNFeHRlbnNpYmxlKSB7CkBAIC02MzcsNyArNjM3LDcgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAodHJhcFJlc3VsdEFzQm9vbCkgewotICAgICAgICBib29sIHRhcmdldElzRXh0ZW5zaWJsZSA9
IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICBib29sIHRhcmdldElz
RXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
ICh0YXJnZXRJc0V4dGVuc2libGUpIHsKQEAgLTY3Myw3ICs2NzMsNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEV4CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhp
cy0+dGFyZ2V0KCk7CiAgICAgaWYgKGlzRXh0ZW5zaWJsZU1ldGhvZC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICByZXR1cm4gdGFyZ2V0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgICAg
IHJldHVybiB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CkBAIC02ODUs
NyArNjg1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCBpc1RhcmdldEV4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZUlubGluZShleGVj
KTsKKyAgICBib29sIGlzVGFyZ2V0RXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTk3NDc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAgICAgaWYgKCF0YXJnZXQu
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCi0gICAgYm9vbCBpc0V4dGVuc2libGUg
PSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9vbCBp
c0V4dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRl
bnNpYmxlKSk7CkBAIC0yMTUsMTQgKzIxNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplCiAgICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkgPT0gcHJvdG8pCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKIAotICAgIGJv
b2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAg
Ym9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlwZU9mSW5saW5lKHZt
LCBleGVjLCBwcm90byk7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFBy
b3RvdHlwZSh2bSwgZXhlYywgcHJvdG8pOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGRpZFNldFByb3RvdHlwZSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc0Nzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU08KICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5n
T2JqZWN0Kj4ob2JqZWN0KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+
aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9i
amVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxl
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272714</attachid>
            <date>2016-03-02 17:39:55 -0800</date>
            <delta_ts>2016-03-02 17:41:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>20054</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE2LTAzLTAyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGNsZWFuIHVwIEpTT2JqZWN0Ojppc0V4dGVuc2libGVJbmxpbmUgYW5kIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVPZklubGluZSwgYW5kIHJlbmFtZSBzZXRQcm90b3R5cGVPZiB0byBzZXRQcm90b3R5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDk0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNl
IGRvbid0IG5lZWQgdG8gYmUgaW5saW5lZCBpbiB0aGUgd2F5IHRoZXkgYXJlLgorICAgICAgICBE
b2luZyBkeW5hbWljIGRpc3BhdGNoIGlzIG9rIHBlcmZvcm1hbmNlIHdpc2UgdW50aWwKKyAgICAg
ICAgd2UgaGF2ZSBldmlkZW5jZSBzdGF0aW5nIG90aGVyd2lzZS4KKworICAgICAgICAqIEFQSS9K
U09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdFNldFByb3RvdHlwZSk6CisgICAgICAg
IChKU09iamVjdEhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsRGF0
ZVRpbWVGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bE51bWJlckZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzRXh0ZW5z
aWJsZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpzZXRQcm90b3R5cGVPZik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhD
eWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmlzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlmeUFsbFN0
YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5k
ZXhQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVPZik6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmluZGV4aW5nU2hvdWxkQmVTcGFyc2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
UHJvdG90eXBlT2ZJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNF
eHRlbnNpYmxlSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVP
Zik6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JJc0V4dGVuc2libGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3du
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKToKKyAgICAg
ICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdFNldFByb3RvdHlw
ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorCiAyMDE2LTAzLTAyICBLb25zdGFu
dGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBbY21ha2VdIE1vdmVk
IFBSRS9QT1NUX0JVSUxEX0NPTU1BTkQgdG8gV0VCS0lUX0ZSQU1FV09SSy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAxOTc0NzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0
UmVmIGMKICAgICAgICAgLy8gU29tZWRheSB3ZSBtaWdodCB1c2UgcHJveGllcyBmb3Igc29tZXRo
aW5nIG90aGVyIHRoYW4gSlNHbG9iYWxPYmplY3RzLCBidXQgdG9kYXkgaXMgbm90IHRoYXQgZGF5
LgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBqc09i
amVjdC0+c2V0UHJvdG90eXBlT2ZJbmxpbmUoZXhlYy0+dm0oKSwgZXhlYywganNWYWx1ZS5pc09i
amVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKKyAgICBqc09iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPnZtKCksIGV4ZWMsIGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwo
KSk7CiB9CiAKIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAxOTc0NzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDggKzEwOSw4IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29s
ICgqSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAg
SXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIgaXNFeHRlbnNpYmxlOwogCi0gICAgdHlwZWRlZiBib29s
ICgqU2V0UHJvdG90eXBlT2ZGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKLSAgICBTZXRQcm90b3R5cGVPZkZ1bmN0aW9uUHRyIHNldFByb3RvdHlwZU9mOworICAg
IHR5cGVkZWYgYm9vbCAoKlNldFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUpOworICAgIFNldFByb3RvdHlwZUZ1bmN0aW9uUHRyIHNldFByb3RvdHlw
ZTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyKShjb25zdCBK
U0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAgIER1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyIGR1bXBU
b1N0cmVhbTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRUeXBlZEFycmF5SW1wbCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpw
cmV2ZW50RXh0ZW5zaW9ucywgXAogICAgICAgICAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsIFwK
LSAgICAgICAgJkNsYXNzTmFtZTo6c2V0UHJvdG90eXBlT2YsIFwKKyAgICAgICAgJkNsYXNzTmFt
ZTo6c2V0UHJvdG90eXBlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSwgXAog
ICAgICAgICAmQ2xhc3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3
LDcgKzk3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAg
IEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwganNDYXN0
PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKSk7CiAgICAgaWYgKGNv
bGxhdG9yICYmICFqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4obmV3VGFy
Z2V0KSkgewogICAgICAgICBKU1ZhbHVlIHByb3RvID0gYXNPYmplY3QobmV3VGFyZ2V0KS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAgICBhc09iamVj
dChjb2xsYXRvciktPnNldFByb3RvdHlwZU9mSW5saW5lKHZtLCBzdGF0ZSwgcHJvdG8pOworICAg
ICAgICBhc09iamVjdChjb2xsYXRvciktPnNldFByb3RvdHlwZSh2bSwgc3RhdGUsIHByb3RvKTsK
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAg
SW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+
Y2FsbGVlKCkpKTsKICAgICBpZiAoZGF0ZVRpbWVGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihuZXdUYXJnZXQpKSB7CiAgICAgICAgIEpTVmFs
dWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIGFzT2JqZWN0KGRhdGVUaW1lRm9ybWF0KS0+c2V0
UHJvdG90eXBlT2ZJbmxpbmUodm0sIHN0YXRlLCBwcm90byk7CisgICAgICAgIGFzT2JqZWN0KGRh
dGVUaW1lRm9ybWF0KS0+c2V0UHJvdG90eXBlKHZtLCBzdGF0ZSwgcHJvdG8pOwogICAgICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxOTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBJbnRsTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpKTsKICAgICBpZiAobnVt
YmVyRm9ybWF0ICYmICFqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+
KG5ld1RhcmdldCkpIHsKICAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1Rhcmdl
dCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAg
YXNPYmplY3QobnVtYmVyRm9ybWF0KS0+c2V0UHJvdG90eXBlT2ZJbmxpbmUodm0sIHN0YXRlLCBw
cm90byk7CisgICAgICAgIGFzT2JqZWN0KG51bWJlckZvcm1hdCktPnNldFByb3RvdHlwZSh2bSwg
c3RhdGUsIHByb3RvKTsKICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTk3NDc5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgwLDcgKzI4MCw3IEBAIGJvb2wgSlNDZWxsOjppc0V4dGVuc2libGUoSlNPYmplY3QqLCBFeGUK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTQ2VsbDo6c2V0
UHJvdG90eXBlT2YoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKQorYm9vbCBKU0NlbGw6
OnNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxOTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJv
b2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4ZWNT
dGF0ZSopOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90
eXBlT2YoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBib29sIHNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IEpTVmFsdWUpOwogCiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3Qq
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAko
cmV2aXNpb24gMTk3NDc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsMTQgKzg4NSwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYgKHRoaXNP
YmplY3QtPnByb3RvdHlwZSgpID09IHZhbHVlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlzT2JqZWN0
LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlz
T2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
ICghaXNFeHRlbnNpYmxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
IAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5zZXRQcm90
b3R5cGVPZklubGluZSh2bSwgZXhlYywgdmFsdWUpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5z
ZXRQcm90b3R5cGUodm0sIGV4ZWMsIHZhbHVlKSkgewogICAgICAgICBpZiAoIXZtLmV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIxMSwxMSArMTIxMSwxNiBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVD
aGVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZU9m
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCiti
b29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gb2JqZWN0LT5zZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBwcm90b3R5cGUpOwogfQogCitib29s
IEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnNldFByb3RvdHlwZSh0
aGlzLCBleGVjLCBwcm90b3R5cGUpOworfQorCiBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NG
cm9tKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CkBAIC0xNzAxLDYgKzE3MDYsMTIgQEAgYm9vbCBKU09i
amVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiBvYgogICAgIHJldHVybiBvYmotPmlzRXh0ZW5z
aWJsZUltcGwoKTsKIH0KIAorYm9vbCBKU09iamVjdDo6aXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sgCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICByZXR1cm4gbWV0aG9kVGFi
bGUodm0pLT5pc0V4dGVuc2libGUodGhpcywgZXhlYyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnJl
aWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFz
dGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwpAQCAtMjg2Myw3ICsyODc0LDcgQEAgYm9vbCBKU09i
amVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgIERlZmluZU93blByb3BlcnR5U2Nv
cGUgc2NvcGUoZXhlYyk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGN1cnJlbnQ7CiAgICAgYm9v
bCBpc0N1cnJlbnREZWZpbmVkID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgY3VycmVudCk7Ci0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBpc0V4dGVuc2libGVJ
bmxpbmUoZXhlYyk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlzLT5pc0V4dGVuc2libGUo
ZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBp
c0N1cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5NzQ3OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSwxNSArMTE5LDggQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5IHZpcnR1
YWwgW1tTZXRQcm90b3R5cGVPZl1dIGludGVybmFsIGZ1bmN0aW9uIGRlZmluZWQKICAgICAvLyBp
biB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmljYXRpb24uIFVzZSB0aGlzIHdoZW4gZG9pbmcgYSBb
W1NldFByb3RvdHlwZU9mXV0gCiAgICAgLy8gb3BlcmF0aW9uIGFzIGRpY3RhdGVkIGluIHRoZSBz
cGVjaWZpY2F0aW9uLgotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzZXRQcm90b3R5cGVPZklubGlu
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAg
ICAgICBhdXRvIHNldFByb3RvdHlwZU9mTWV0aG9kID0gbWV0aG9kVGFibGUodm0pLT5zZXRQcm90
b3R5cGVPZjsKLSAgICAgICAgaWYgKExJS0VMWShzZXRQcm90b3R5cGVPZk1ldGhvZCA9PSBKU09i
amVjdDo6c2V0UHJvdG90eXBlT2YpKQotICAgICAgICAgICAgcmV0dXJuIHNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKHZtLCBleGVjLCBwcm90b3R5cGUpOwotCi0gICAgICAgIHJldHVybiBzZXRQ
cm90b3R5cGVPZk1ldGhvZCh0aGlzLCBleGVjLCBwcm90b3R5cGUpOwotICAgIH0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGVPZihKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICBib29sIHNldFByb3RvdHlwZShWTSYsIEV4
ZWNTdGF0ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CiAgICAgICAgIAogICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkK
ICAgICB7CkBAIC02NTMsMTUgKzY0Niw3IEBAIHB1YmxpYzoKICAgICAvLyBZb3Ugc2hvdWxkIGNh
bGwgdGhpcyB3aGVuIHBlcmZvcm1pbmcgW1tJc0V4dGVuc2libGVdXSB0cmFwIGluIGEgcGxhY2UK
ICAgICAvLyB0aGF0IGlzIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4gVGhpcyBwZXJm
b3JtcyB0aGUgZnVsbHkgdmlydHVhbAogICAgIC8vIFtbSXNFeHRlbnNpYmxlXV0gdHJhcC4KLSAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykK
LSAgICB7IAotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBhdXRvIGlzRXh0
ZW5zaWJsZU1ldGhvZCA9IG1ldGhvZFRhYmxlKHZtKS0+aXNFeHRlbnNpYmxlOwotICAgICAgICBp
ZiAoTElLRUxZKGlzRXh0ZW5zaWJsZU1ldGhvZCA9PSBKU09iamVjdDo6aXNFeHRlbnNpYmxlKSkK
LSAgICAgICAgICAgIHJldHVybiBpc0V4dGVuc2libGVJbXBsKCk7Ci0KLSAgICAgICAgcmV0dXJu
IGlzRXh0ZW5zaWJsZU1ldGhvZCh0aGlzLCBleGVjKTsKLSAgICB9CisgICAgYm9vbCBpc0V4dGVu
c2libGUoRXhlY1N0YXRlKik7CiAgICAgYm9vbCBpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDE0ICsyMTIsMTQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIGlmIChvYmplY3QtPnBy
b3RvdHlwZSgpID09IHByb3RvVmFsdWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0VmFsdWUpOwogCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5z
aWJsZUlubGluZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRl
bnNpYmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIGlmICghaXNFeHRlbnNpYmxlKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlw
ZU9mSW5saW5lKHZtLCBleGVjLCBwcm90b1ZhbHVlKTsKKyAgICBib29sIGRpZFNldFByb3RvdHlw
ZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90b1ZhbHVlKTsKICAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICBpZiAoIWRpZFNldFByb3RvdHlwZSkgewpAQCAtNjIzLDcgKzYyMyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDMuIElmIHRoZSBb
W0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPIGlzIGZhbHNlLCB0aGVuIHJldHVy
biB0cnVlLgogICAgIC8vIDQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotICAgIGJvb2wgaXNF
eHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9vbCBp
c0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighaXNFeHRlbnNpYmxlKSk7
CkBAIC02NjAsNyArNjYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdAogCiAgICAgLy8gMy4gSWYgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHByb3BlcnR5
IG9mIE8gaXMgZmFsc2UsIHRoZW4gcmV0dXJuIHRydWUuCiAgICAgLy8gNC4gT3RoZXJ3aXNlLCBy
ZXR1cm4gZmFsc2UuCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJs
ZUlubGluZShleGVjKTsKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNp
YmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKCFpc0V4dGVuc2libGUpKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qob2JqKTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9
IG9iamVjdC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxl
ID0gb2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAx
OTc0NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
c24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdlIGRvbid0IGhhdmUgaXNF
eHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3LyBQcm94eXMuCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzNzUKLSAg
ICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZUlubGluZShleGVj
KTsKKyAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVj
KTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewpAQCAtMjE1LDcgKzIxNSw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVu
c2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0
ZW5zaWJsZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgdHJhcFJlc3VsdEFzRGVzY3JpcHRv
cjsKQEAgLTI5OSw3ICsyOTksNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVy
dHkoRXhlCiAgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBw
cm9wZXJ0aWVzLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxl
SW5saW5lKGV4ZWMpOworICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlz
RXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWlzRXh0ZW5z
aWJsZSkgewpAQCAtNjM3LDcgKzYzNyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2
ZW50RXh0ZW5zaW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHRyYXBSZXN1bHRB
c0Jvb2wpIHsKLSAgICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0
ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0
YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodGFyZ2V0SXNFeHRl
bnNpYmxlKSB7CkBAIC02NzMsNyArNjczLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlz
RXh0ZW5zaWJsZShFeAogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwog
ICAgIGlmIChpc0V4dGVuc2libGVNZXRob2QuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICByZXR1cm4gdGFyZ2V0
LT5pc0V4dGVuc2libGUoZXhlYyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXgKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgaXNUYXJnZXRF
eHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgYm9vbCBp
c1RhcmdldEV4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHJldmlz
aW9uIDE5NzQ3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0IikpKTsKIAotICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFy
Z2V0KS0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0g
YXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzRXh0ZW5zaWJsZSkpOwpAQCAt
MjE1LDE0ICsyMTUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpID09IHByb3RvKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAKLSAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGJvb2wgaXNFeHRlbnNp
YmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAg
aWYgKCFpc0V4dGVuc2libGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGJvb2wgZGlkU2V0
UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGVPZklubGluZSh2bSwgZXhlYywgcHJvdG8p
OworICAgIGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4
ZWMsIHByb3RvKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihkaWRTZXRQcm90b3R5cGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NDc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAg
ICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVj
dCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKLSAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlu
bGluZShleGVjKTsKKyAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5z
aWJsZShleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewo=
</data>
<flag name="review"
          id="297477"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>