<?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>155974</bug_id>
          
          <creation_ts>2016-03-29 10:18:37 -0700</creation_ts>
          <short_desc>[JSC] Implement String.prototype.repeat in builtins JS</short_desc>
          <delta_ts>2016-03-31 07:59:14 -0700</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=156062</see_also>
          <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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>caitp</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</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>1178698</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-29 10:18:37 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178874</commentid>
    <comment_count>1</comment_count>
      <attachid>275155</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-29 17:12:00 -0700</bug_when>
    <thetext>Created attachment 275155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178891</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-29 17:48:17 -0700</bug_when>
    <thetext>Since you&apos;re converting the implementation to JS, can you please run perf numbers to make sure that there&apos;s no regression?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178898</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-29 18:13:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Since you&apos;re converting the implementation to JS, can you please run perf
&gt; numbers to make sure that there&apos;s no regression?  Thanks.

Since no existing performance tests uses String.prototype.repeat, I&apos;ll add a simple js/regress tests to measure the performance :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179055</commentid>
    <comment_count>4</comment_count>
      <attachid>275195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-30 06:56:06 -0700</bug_when>
    <thetext>Created attachment 275195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179056</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-30 06:57:11 -0700</bug_when>
    <thetext>Updated the patch. Here is the performance results. (newly added test cases)

Benchmark report for JSRegress on 192-168-22-121 (MacBookPro10,1).

VMs tested:
&quot;Baseline&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/string-repeat-master/Release/jsc
&quot;JS&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/string-repeat/Release/jsc

Collected 10 samples per benchmark/VM, with 10 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.

                                                Baseline                     JS                                        

string-repeat-not-resolving-fixed           14.8288+-0.6408     ^      3.7547+-0.1815        ^ definitely 3.9494x faster
string-repeat-not-resolving-no-inline      651.4889+-6.0899     ^      5.3789+-0.2811        ^ definitely 121.1192x faster
string-repeat-not-resolving                649.4908+-5.2484     ^      5.2331+-0.0694        ^ definitely 124.1125x faster
string-repeat-resolving-fixed               31.1334+-0.9833     ^     27.4511+-1.0381        ^ definitely 1.1341x faster
string-repeat-resolving-no-inline         1476.1249+-12.9186    ^   1064.8980+-5.9103        ^ definitely 1.3862x faster
string-repeat-resolving                   1480.4327+-8.7177     ^   1060.9495+-6.4284        ^ definitely 1.3954x faster
string-repeat-single-not-resolving           9.2135+-1.1121     ?      9.3901+-0.8220        ? might be 1.0192x slower
string-repeat-single-resolving               9.9348+-0.6680            9.6160+-0.8545          might be 1.0332x faster
string-repeat-small-not-resolving          645.1441+-5.2865     ^      4.3385+-0.3318        ^ definitely 148.7004x faster
string-repeat-small-resolving             1423.9953+-13.7065    ^   1000.8561+-6.2684        ^ definitely 1.4228x faster

&lt;geometric&gt;                                179.7742+-1.8844     ^     32.3610+-0.6781        ^ definitely 5.5553x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179057</commentid>
    <comment_count>6</comment_count>
      <attachid>275195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-30 07:03:58 -0700</bug_when>
    <thetext>Comment on attachment 275195
Patch

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

Added comments.

&gt; Source/JavaScriptCore/ChangeLog:29
&gt; +        of the generated string. As a result, the generated rope is not resolved.

Of course, the test cases postfixed &quot;-resolving&quot; attempt to resolve the given string. But in these cases, still we can observe the significant performance improvement. This is due to the reason (2).

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:74
&gt; +    if (repeatCount &lt; 0 || repeatCount === @Infinity)

-infinity, negative numbers, and +infinity fall into this branch.

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:78
&gt; +    if (repeatCount === 0 || string.length === 0)

repeatCount === -0 case will fall into this branch.

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:89
&gt; +        // Here, |repeatCount| is always Int32.

So, here, -0 never comes.

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:107
&gt; +function repeat(count)

Keep this code very small, to make this inlineable.

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:121
&gt; +        if (result !== null)

If the count is not int32, we return null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179064</commentid>
    <comment_count>7</comment_count>
      <attachid>275195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-30 08:45:27 -0700</bug_when>
    <thetext>Comment on attachment 275195
Patch

Thanks for review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179074</commentid>
    <comment_count>8</comment_count>
      <attachid>275195</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-30 09:34:29 -0700</bug_when>
    <thetext>Comment on attachment 275195
Patch

Clearing flags on attachment: 275195

Committed r198838: &lt;http://trac.webkit.org/changeset/198838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179075</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-30 09:34:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275155</attachid>
            <date>2016-03-29 17:12:00 -0700</date>
            <delta_ts>2016-03-30 06:56:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155974-20160330091202.patch</filename>
            <type>text/plain</type>
            <size>15405</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDhlNjgxMDM3NGY5MmEyZGFmM2M5Yzg2YzU2YThmNTExOGNmYjM1Li5lZWViZTFlODA2NzY2ZjZk
ODVjMTg5NWVlNTJjOThkMDM1OTBhY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNi0wMy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQg
aW4gYnVpbHRpbnMgSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggY29udmVydHMgQysrIFN0cmluZy5wcm90b3R5cGUucmVwZWF0IGlt
cGxlbWVudGF0aW9uIGludG8gSlMgYnVpbHRpbnMuCisgICAgICAgIHx0aGlzfCBpbiBzdHJpY3Qg
bW9kZSBpcyBjb3JyZWN0bHkgaW5mZXJyZWQgYXMgU3RyaW5nWzFdLiBUaGlzIGZhY3QgZW5jb3Vy
YWdlcyB1cworICAgICAgICB0byB3cml0ZSBQcmltaXRpdmVUeXBlcy5wcm90b3R5cGUuWFhYIG1l
dGhvZHMgaW4gYnVpbHRpbiBKUy4KKworICAgICAgICBMYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVw
ZWF0Lmh0bWwgYWxyZWFkeSBjb3ZlcnMgdGhlIHRlc3RzIGZvciB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBOb3RlOiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBmdW5jdGlvbmFsaXR5IGlzIHNpbWls
YXIgdG8gSGFybW9ueSdzCisgICAgICAgIFN0cmluZy5wcm90b3R5cGUue3BhZFN0YXJ0LCBwYWRF
bmR9LiBJdCdzIG5pY2UgdG8gcG9ydCB0aGVtIHRvIGJ1aWx0aW4gSlMgaW4KKyAgICAgICAgdGhl
IG90aGVyIHBhdGNoLgorCisgICAgICAgIFsxXTogaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTk1OTM4CisKKyAgICAgICAgKiBidWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanM6Cisg
ICAgICAgIChyZXBlYXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jUmVwZWF0KTogRGVsZXRlZC4KKwogMjAx
Ni0wMy0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRVM2XSBBZGQgc3VwcG9ydCBmb3IgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCmluZGV4
IDU2Y2NhNmFiODliYTE2NTFkMzdkOTk5OGQzY2Y0MDEzMDk2Y2I2YmYuLjYyNzU2NjhjNWMzOWQ0
NjdjYjAwZTM0ZTY3YjVlODlhOWQyM2E0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAtNjUsMyArNjUsNDYgQEAgZnVuY3Rp
b24gc2VhcmNoKHJlZ2V4cCkKICAgICB2YXIgY3JlYXRlZFJlZ0V4cCA9IG5ldyBAUmVnRXhwKHJl
Z2V4cCwgQHVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNyZWF0ZWRSZWdFeHBbQHN5bWJvbFNlYXJj
aF0odGhpc1N0cmluZyk7CiB9CisKK2Z1bmN0aW9uIHJlcGVhdChjb3VudCkKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PSBudWxsKSB7CisgICAgICAgIGlmICh0aGlzID09
PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5
cGUucmVwZWF0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnJlcGVhdCByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgfQorCisgICAgbGV0IHN0cmluZyA9IEB0
b1N0cmluZyh0aGlzKTsKKworICAgIGxldCByZXBlYXRDb3VudCA9IEB0b0ludGVnZXIoY291bnQp
OworICAgIGlmIChyZXBlYXRDb3VudCA8IDAgfHwgcmVwZWF0Q291bnQgPT09IEBJbmZpbml0eSkK
KyAgICAgICAgdGhyb3cgbmV3IEBSYW5nZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBh
cmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5m
aW5pdHkiKTsKKworICAgIC8vIFJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisgICAgaWYgKHJlcGVh
dENvdW50ID09PSAwIHx8IHN0cmluZy5sZW5ndGggPT09IDApCisgICAgICAgIHJldHVybiAiIjsK
KworICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nLgorICAgIGlmIChyZXBlYXRDb3Vu
dCA9PT0gMSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGxldCByZXN1bHRTdHJpbmdM
ZW5ndGggPSBzdHJpbmcubGVuZ3RoICogcmVwZWF0Q291bnQ7CisgICAgaWYgKHJlc3VsdFN0cmlu
Z0xlbmd0aCA+IEBNQVhfU1RSSU5HX0xFTkdUSCkKKyAgICAgICAgdGhyb3cgbmV3IEBFcnJvcigi
T3V0IG9mIG1lbW9yeSIpOworCisgICAgLy8gQml0IG9wZXJhdGlvbiBvbnRvIHxyZXBlYXRDb3Vu
dHwgaXMgc2FmZSBiZWNhdXNlIHxyZXBlYXRDb3VudHwgc2hvdWxkIGJlIGluIHJhbmdlIGZyb20g
MSB0byBJTlQzMl9NQVgsCisgICAgLy8gUmVwZWF0IGxvZyBOIHRpbWVzIHRvIGdlbmVyYXRlIHRo
ZSByZXBlYXRlZCBzdHJpbmcgcm9wZS4KKyAgICBsZXQgcmVzdWx0ID0gIiI7CisgICAgbGV0IG9w
ZXJhbmQgPSBzdHJpbmc7CisgICAgcmVwZWF0Q291bnQgfD0gMDsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBpZiAocmVwZWF0Q291bnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICs9IG9w
ZXJhbmQ7CisgICAgICAgIHJlcGVhdENvdW50ID4+PSAxOworICAgICAgICBpZiAoIXJlcGVhdENv
dW50KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgb3BlcmFuZCArPSBvcGVy
YW5kOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBiMzljODc5NWQxZmEx
ZWFjOTdjNmVkZTNkOTYxODkyNTY2ZTI1ZTA5Li5jNWQzOWI1ZTM0Yjc5MjRiZjMwZTRlMzI1MzA0
ZGI5NTcyOTYyYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC00NCwxMCArNDQsMTIg
QEAKICAgICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1F
KElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVCkKIAogICAgIG1fdW5k
ZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBtX0luZmluaXR5LnNldChtX3Zt
LCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
KTsKICAgICBtX2FycmF5SXRlcmF0aW9uS2luZEtleS5zZXQobV92bSwganNOdW1iZXIoQXJyYXlJ
dGVyYXRlS2V5KSk7CiAgICAgbV9hcnJheUl0ZXJhdGlvbktpbmRWYWx1ZS5zZXQobV92bSwganNO
dW1iZXIoQXJyYXlJdGVyYXRlVmFsdWUpKTsKICAgICBtX2FycmF5SXRlcmF0aW9uS2luZEtleVZh
bHVlLnNldChtX3ZtLCBqc051bWJlcihBcnJheUl0ZXJhdGVLZXlWYWx1ZSkpOwogICAgIG1fTUFY
X1NBRkVfSU5URUdFUi5zZXQobV92bSwganNEb3VibGVOdW1iZXIoOTAwNzE5OTI1NDc0MDk5MS4w
KSk7IC8vIDIgXiA1MyAtIDEKKyAgICBtX01BWF9TVFJJTkdfTEVOR1RILnNldChtX3ZtLCBqc051
bWJlcihKU1N0cmluZzo6TWF4TGVuZ3RoKSk7CiAgICAgbV9wcm9taXNlU3RhdGVQZW5kaW5nLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6
OlBlbmRpbmcpKSk7CiAgICAgbV9wcm9taXNlU3RhdGVGdWxmaWxsZWQuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVkKSkp
OwogICAgIG1fcHJvbWlzZVN0YXRlUmVqZWN0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaAppbmRleCAxNmU2YzFhYjJkMzU3MDY0OTJlNWJjZGJlZmU3OGRiMmM4ZWY1OTE4Li45
ZWQ2MWZhNDJkMDY1ODk2OWI1NWFjYjhjYTA0ZWEzYWJlYmVmNGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKQEAgLTQ2LDEwICs0NiwxMiBAQAogCiAjZGVmaW5lIEpTQ19DT01NT05fQllURUNPREVf
SU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyh1bmRlZmlu
ZWQpIFwKKyAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0aW9uS2lu
ZEtleSkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZFZhbHVlKSBcCiAgICAgbWFjcm8o
YXJyYXlJdGVyYXRpb25LaW5kS2V5VmFsdWUpIFwKICAgICBtYWNybyhNQVhfU0FGRV9JTlRFR0VS
KSBcCisgICAgbWFjcm8oTUFYX1NUUklOR19MRU5HVEgpIFwKICAgICBtYWNybyhwcm9taXNlU3Rh
dGVQZW5kaW5nKSBcCiAgICAgbWFjcm8ocHJvbWlzZVN0YXRlRnVsZmlsbGVkKSBcCiAgICAgbWFj
cm8ocHJvbWlzZVN0YXRlUmVqZWN0ZWQpIFwKQEAgLTU3LDcgKzU5LDcgQEAKICAgICBtYWNybyhz
eW1ib2xJdGVyYXRvcikgXAogICAgIG1hY3JvKHN5bWJvbE1hdGNoKSBcCiAgICAgbWFjcm8oc3lt
Ym9sU2VhcmNoKSBcCi0gICAgbWFjcm8oc3ltYm9sU3BlY2llcykKKyAgICBtYWNybyhzeW1ib2xT
cGVjaWVzKSBcCiAKIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNjgxZGZl
OGI4Y2EzMTI0OTdlMWEzOTljNmNmYTNkMmUyM2JkOTI5Yy4uN2QzZmVhZDNhNjY4OTM4ZWFkM2Zh
MDljMDI5MDg0OTM2YzFhMDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMjMsNiArMzIzLDcgQEAKICAgICBtYWNybyhn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKICAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVz
KSBcCiAgICAgbWFjcm8ob3duS2V5cykgXAorICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8o
UmFuZ2VFcnJvcikgXAogICAgIG1hY3JvKFR5cGVFcnJvcikgXAogICAgIG1hY3JvKHR5cGVkQXJy
YXlMZW5ndGgpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBlNGZmMzljM2FjNGNlMDJiY2Y0MjkwY2Q1NWNlMzBjNGE1M2ZlN2M3
Li4xOTUwNTdjOWVjZmVhYjQzM2I1NGRmNDQwZDIxN2QxNmM3NDQ3ZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01NTIsNiAr
NTUyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5vd25FbnVtZXJhYmxlUHJvcGVydHlLZXlz
UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG93
bkVudW1lcmFibGVQcm9wZXJ0eUtleXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5nZXRUZW1w
bGF0ZU9iamVjdFByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0dldFRlbXBsYXRlT2JqZWN0LCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVldWVKb2IpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5FcnJvclByaXZhdGVOYW1lLCBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPlJhbmdlRXJyb3JQcml2YXRlTmFtZSwgbV9yYW5nZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVO
YW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT50eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0
aCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNjQxNjEyM2I4MmNl
ZWE4YzNkZDEyM2U0MjkzZDA4YjJlYTE3NzcxMi4uN2E0MjIxY2MyZjI3Njc2MjRkNzhhMzhhNThm
N2Y5NmIzNGNiZWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCkBAIC02OCw3ICs2OCw2IEBACiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNQYWRFbmQoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNS
ZXBlYXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1JlcGxhY2UoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdChFeGVjU3RhdGUqKTsKQEAgLTExMiw2ICsxMTEs
NyBAQAogLyogU291cmNlIGZvciBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIHN0cmlu
Z1Byb3RvdHlwZVRhYmxlCiAgICAgbWF0Y2ggICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgICAgcmVwZWF0ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAg
ICAgc2VhcmNoICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiBAZW5kCiAqLwpA
QCAtMTM3LDcgKzEzNyw2IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImxhc3RJbmRleE9mIiwgc3RyaW5nUHJvdG9G
dW5jTGFzdEluZGV4T2YsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigicGFkRW5kIiwgc3RyaW5nUHJvdG9GdW5jUGFkRW5kLCBEb250RW51
bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInBhZFN0
YXJ0Iiwgc3RyaW5nUHJvdG9GdW5jUGFkU3RhcnQsIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigicmVwZWF0Iiwgc3RyaW5nUHJvdG9GdW5j
UmVwZWF0LCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJyZXBsYWNlIiwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZSwgRG9u
dEVudW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1Ns
aWNlLCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oInNwbGl0Iiwgc3RyaW5nUHJvdG9GdW5jU3BsaXQsIERvbnRFbnVtLCAyKTsKQEAgLTgx
Miw1MyArODExLDYgQEAgc3RhdGljIGlubGluZSBib29sIHJlcGVhdFN0cmluZ1BhdHRlcm4oRXhl
Y1N0YXRlJiBleGVjLCB1bnNpZ25lZCBtYXhMZW5ndGgsIEpTU3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXQo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7Ci0gICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
ZG91YmxlIHJlcGVhdENvdW50RG91YmxlID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnRlZ2VyKGV4
ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAocmVwZWF0Q291bnREb3VibGUgPCAw
IHx8IHN0ZDo6aXNpbmYocmVwZWF0Q291bnREb3VibGUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJyZXBlYXQo
KSBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUg
aW5maW5pdHkiKSkpOwotCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLQotICAgIGlmICghc3Ry
aW5nLT5sZW5ndGgoKSB8fCAhcmVwZWF0Q291bnREb3VibGUpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNFbXB0eVN0cmluZygmdm0pKTsKLQotICAgIGlmIChyZXBlYXRDb3VudERv
dWJsZSA9PSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZyk7Ci0KLSAg
ICAvLyBKU1N0cmluZyByZXF1aXJlcyB0aGUgbGltaXRhdGlvbiB0aGF0IGl0cyBsZW5ndGggaXMg
aW4gdGhlIHJhbmdlIG9mIGludDMyX3QuCi0gICAgaWYgKHJlcGVhdENvdW50RG91YmxlID4gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgLyBzdHJpbmctPmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
Ci0gICAgdW5zaWduZWQgcmVwZWF0Q291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVwZWF0
Q291bnREb3VibGUpOwotCi0gICAgLy8gRm9yIGEgc3RyaW5nIHdoaWNoIGxlbmd0aCBpcyBzbWFs
bCwgaW5zdGVhZCBvZiBjcmVhdGluZyByb3BlcywKLSAgICAvLyBhbGxvY2F0aW5nIGEgc2VxdWVu
dGlhbCBidWZmZXIgYW5kIGZpbGwgd2l0aCB0aGUgcmVwZWF0ZWQgc3RyaW5nIGZvciBlZmZpY2ll
bmN5LgotICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgU3RyaW5nIHJl
cGVhdGVkU3RyaW5nID0gc3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICAgICAgVUNoYXIgY2hhcmFj
dGVyID0gcmVwZWF0ZWRTdHJpbmcuYXQoMCk7Ci0gICAgICAgIGlmICghKGNoYXJhY3RlciAmIH4w
eGZmKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVy
KGV4ZWMsIHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCByZXBlYXRDb3VudCkpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcihleGVjLCBjaGFyYWN0
ZXIsIHJlcGVhdENvdW50KSk7Ci0gICAgfQotCi0gICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRl
ciByb3BlQnVpbGRlcih2bSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlcGVhdENv
dW50OyArK2kpIHsKLSAgICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQoc3RyaW5nKSkKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyb3BlQnVpbGRlci5yZWxl
YXNlKCkpOwotfQotCiBlbnVtIGNsYXNzIFN0cmluZ1BhZGRpbmdMb2NhdGlvbiB7IFN0YXJ0LCBF
bmQgfTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBhZFN0cmluZyhFeGVjU3RhdGUmIGV4ZWMs
IFN0cmluZ1BhZGRpbmdMb2NhdGlvbiBwYWRkaW5nTG9jYXRpb24pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTEyNDRiNjBi
MGEzNzBiZjE5OTE0YThhYzJmMGMxNWI0ZmYwYWIyMC4uMWQ4ZDIzYmQ0M2VmNTVkNzU3YjE1NDAz
OWM2Mzg4YWI1ZWMzY2VmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTI5ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxl
bWVudCBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBpbiBidWlsdGlucyBKUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1OTc0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBlcnJvciBtZXNz
YWdlcy4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LmpzOgorICAg
ICAgICAqIGpzL3N0cmluZy1yZXBlYXQtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTAzLTI5ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBz
dXBwb3J0IGZvciBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC5qcwppbmRleCAxYjE3NTIyZTYyZjkxNzQyMDE3YTUy
ZjJmODYyZDY3YjExN2Y0NjViLi4yNjg0YzUwNWY2Y2JiMzhmODhjNDUyYzAwNzc2MjcxMDZjMGQx
YjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVh
dC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC5qcwpA
QCAtMzEsOSArMzEsOSBAQAogc2hvdWxkQmUoIicnLnJlcGVhdCgweEZGRkZGRkZGICsgMSkiLCAi
JyciKTsKIAogLy8gQ2hlY2sgcmFuZ2UgZXJyb3JzLgotc2hvdWxkVGhyb3coIidmb28gYmFyJy5y
ZXBlYXQoLTEpIiwgIidSYW5nZUVycm9yOiByZXBlYXQoKSBhcmd1bWVudCBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHknIik7Ci1zaG91bGRUaHJv
dygiJ2ZvbyBiYXInLnJlcGVhdChJbmZpbml0eSkiLCAiJ1JhbmdlRXJyb3I6IHJlcGVhdCgpIGFy
Z3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIG5vdCBiZSBpbmZp
bml0eSciKTsKLXNob3VsZFRocm93KCInZm9vIGJhcicucmVwZWF0KC1JbmZpbml0eSkiLCAiJ1Jh
bmdlRXJyb3I6IHJlcGVhdCgpIGFyZ3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIDAgYW5kIG5vdCBiZSBpbmZpbml0eSciKTsKK3Nob3VsZFRocm93KCInZm9vIGJhcicucmVw
ZWF0KC0xKSIsICInUmFuZ2VFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQg
bXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIGluZmluaXR5JyIp
Oworc2hvdWxkVGhyb3coIidmb28gYmFyJy5yZXBlYXQoSW5maW5pdHkpIiwgIidSYW5nZUVycm9y
OiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHknIik7CitzaG91bGRUaHJvdygiJ2ZvbyBi
YXInLnJlcGVhdCgtSW5maW5pdHkpIiwgIidSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnJl
cGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3Qg
YmUgaW5maW5pdHknIik7CiAKIC8vIENoZWNrIG91dCBvZiBtZW1vcnkgZXJyb3JzLgogc2hvdWxk
VGhyb3coIidmJy5yZXBlYXQoMHhGRkZGRkZGRikiLCAiJ0Vycm9yOiBPdXQgb2YgbWVtb3J5JyIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3RyaW5nLXJlcGVhdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVwZWF0LWV4cGVjdGVkLnR4dAppbmRleCA2MzhmMjI4
M2JiNTgzNTYwMmFjMTZlODlhN2VlOGNhNDU0NGVlMjk2Li42Y2RiY2Y4N2VjMzU5ODczYTZkNTkw
ZTdmNzQwOGYwNTNlZjA3NThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVw
ZWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVwZWF0LWV4cGVj
dGVkLnR4dApAQCAtMzAsOSArMzAsOSBAQCBQQVNTICfjg5UnLnJlcGVhdCgyKSBpcyAn44OV44OV
JwogUEFTUyAnJy5yZXBlYXQoMTAwMCkgaXMgJycKIFBBU1MgJycucmVwZWF0KDB4RkZGRkZGRkYp
IGlzICcnCiBQQVNTICcnLnJlcGVhdCgweEZGRkZGRkZGICsgMSkgaXMgJycKLVBBU1MgJ2ZvbyBi
YXInLnJlcGVhdCgtMSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHJlcGVhdCgpIGFyZ3Vt
ZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIG5vdCBiZSBpbmZpbml0
eS4KLVBBU1MgJ2ZvbyBiYXInLnJlcGVhdChJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdl
RXJyb3I6IHJlcGVhdCgpIGFyZ3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
IDAgYW5kIG5vdCBiZSBpbmZpbml0eS4KLVBBU1MgJ2ZvbyBiYXInLnJlcGVhdCgtSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiByZXBlYXQoKSBhcmd1bWVudCBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHkuCitQQVNTICdmb28g
YmFyJy5yZXBlYXQoLTEpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90
eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFu
ZCBub3QgYmUgaW5maW5pdHkuCitQQVNTICdmb28gYmFyJy5yZXBlYXQoSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBt
dXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHkuCitQ
QVNTICdmb28gYmFyJy5yZXBlYXQoLUluZmluaXR5KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJv
cjogU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIGluZmluaXR5LgogUEFTUyAnZicucmVwZWF0KDB4RkZG
RkZGRkYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogT3V0IG9mIG1lbW9yeS4KIFBBU1MgJ2YnLnJl
cGVhdCgweEZGRkZGRkZGICsgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBPdXQgb2YgbWVtb3J5
LgogUEFTUyAnZm9vJy5yZXBlYXQoMHhGRkZGRkZGRkYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
T3V0IG9mIG1lbW9yeS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275195</attachid>
            <date>2016-03-30 06:56:06 -0700</date>
            <delta_ts>2016-03-30 09:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155974-20160330225609.patch</filename>
            <type>text/plain</type>
            <size>43905</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YWIzZjVjNThjYTBiMGM4YmI1YzZhNmQ3OGZmMmI5YmJkMDgyZGI5Li44MjZlZjFhN2MzZTk2YzYx
ZGI0MGFlNDczNTc3OWRiYjc0NzBhMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxNi0wMy0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQg
aW4gYnVpbHRpbnMgSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggY29udmVydHMgQysrIFN0cmluZy5wcm90b3R5cGUucmVwZWF0IGlt
cGxlbWVudGF0aW9uIGludG8gSlMgYnVpbHRpbnMuCisgICAgICAgIHx0aGlzfCBpbiBzdHJpY3Qg
bW9kZSBpcyBjb3JyZWN0bHkgaW5mZXJyZWQgYXMgU3RyaW5nWzFdLiBUaGlzIGZhY3QgZW5jb3Vy
YWdlcyB1cworICAgICAgICB0byB3cml0ZSBQcmltaXRpdmVUeXBlcy5wcm90b3R5cGUuWFhYIG1l
dGhvZHMgaW4gYnVpbHRpbiBKUy4KKworICAgICAgICBMYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVw
ZWF0Lmh0bWwgYWxyZWFkeSBjb3ZlcnMgdGhlIHRlc3RzIGZvciB0aGlzIGNoYW5nZS4KKworICAg
ICAgICBOb3RlOiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBmdW5jdGlvbmFsaXR5IGlzIHNpbWls
YXIgdG8gSGFybW9ueSdzCisgICAgICAgIFN0cmluZy5wcm90b3R5cGUue3BhZFN0YXJ0LCBwYWRF
bmR9LiBJdCdzIG5pY2UgdG8gcG9ydCB0aGVtIHRvIGJ1aWx0aW4gSlMgaW4KKyAgICAgICAgdGhl
IG90aGVyIHBhdGNoLgorCisgICAgICAgIFRoZSBleGlzdGluZyBDKysgY29kZSBoYXMgdGhlIGZh
c3QgcGF0aCBmb3Igc2luZ2xlQ2hhcmFjdGVyU3RyaW5nIHJlcGVhdGluZy4KKyAgICAgICAgU2lu
Y2UgdGhpcyB1c2UgaXMgaW1wb3J0YW50IChlLmcuIGdlbmVyYXRpbmcgTiBsZW5ndGggc3BhY2Vz
OiAnICcucmVwZWF0KE4pKSwKKyAgICAgICAgd2Uga2VlcCB0aGlzIGZhc3QgcGF0aCBhcyBAcmVw
ZWF0Q2hhcmFjdGVyKCkuCisKKyAgICAgICAgVGhlIHBlcmZvcm1hbmNlIHJlc3VsdHMgc2hvdyB0
aGF0LCB3aGlsZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHNpbmdsZSBjaGFyYWN0ZXIgZmFzdCBw
YXRoCisgICAgICAgIGlzIG5ldXRyYWwsIG90aGVyIHN0cmluZyByZXBlYXRpbmcgaGFzIHNpZ25p
ZmljYW50IHNwZWVkIHVwLgorICAgICAgICBUaGVyZSBhcmUgdHdvIHJlYXNvbnMuCisKKyAgICAg
ICAgMS4gTm90IHJlc29sdmluZyBzdHJpbmcgcm9wZS4KKworICAgICAgICBXZSBhZGRlZCBzZXZl
cmFsIHRlc3RzIHBvc3RmaXhlZCAibm90LXJlc29sdmluZyIuIEluIHRoYXQgdGVzdHMsIHdlIGRv
IG5vdCB0b3VjaCB0aGUgY29udGVudAorICAgICAgICBvZiB0aGUgZ2VuZXJhdGVkIHN0cmluZy4g
QXMgYSByZXN1bHQsIHRoZSBnZW5lcmF0ZWQgcm9wZSBpcyBub3QgcmVzb2x2ZWQuCisKKyAgICAg
ICAgMi4gTyhsb2cgTikgaW50ZXJtZWRpYXRlIEpTUm9wZVN0cmluZ3MuCisKKyAgICAgICAgSW4g
dGhlIGV4aXN0aW5nIEMrKyBpbXBsZW1lbnRhdGlvbiwgd2UgdXNlIEpTU3RyaW5nOjpSb3BlQnVp
bGRlci4gV2UgaXRlcmF0ZSBOIHRpbWVzIGFuZCBhcHBlbmQKKyAgICAgICAgdGhlIGdpdmVuIHN0
cmluZyB0byB0aGUgYnVpbGRlci4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgaW50ZXJtZWRp
YXRlIHJvcGUgc3RyaW5ncyBnZW5lcmF0ZWQgaW4gSlNTdHJpbmc6OlJvcGVCdWlsZGVyIGlzIE8o
TikuCisgICAgICAgIEluIEpTIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24sIHdlIG9ubHkgaXRlcmF0
ZSBsb2cgTiB0aW1lcy4gQXMgYSByZXN1bHQsIHRoZSBudW1iZXIgb2YgdGhlCisgICAgICAgIGlu
dGVybWVkaWF0ZSByb3BlIHN0cmluZ3MgYmVjb21lcyBPKGxvZyBOKS4KKworICAgICAgICBbMV06
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NTkzOAorCisgICAgICAgICogYnVp
bHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzOgorICAgICAgICAocmVwZWF0U2xvd1BhdGgpOgorICAg
ICAgICAocmVwZWF0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKToKKyAgICAgICAg
KEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1JlcGVhdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3RyaW5nLXJlcGVh
dC1lZGdlLWNhc2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGxl
dC5vYmplY3QudG9TdHJpbmcpOgorICAgICAgICAodmFsdWVPZik6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisKIDIwMTYtMDMtMjkgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHR5cG9zIGluIG91ciBlcnJvciBtZXNzYWdlcyBhbmQgcmVtb3ZlIHNvbWUg
dHJhaWxpbmcgcGVyaW9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1N0cmluZ1Byb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9T
dHJpbmdQcm90b3R5cGUuanMKaW5kZXggNTZjY2E2YWI4OWJhMTY1MWQzN2Q5OTk4ZDNjZjQwMTMw
OTZjYjZiZi4uNTFkNWNkOTI4ZGRkODkzYmQzYzY4YmMxOTM0YjIzNGVjZTRkOTc1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCkBA
IC02NSwzICs2NSw2MiBAQCBmdW5jdGlvbiBzZWFyY2gocmVnZXhwKQogICAgIHZhciBjcmVhdGVk
UmVnRXhwID0gbmV3IEBSZWdFeHAocmVnZXhwLCBAdW5kZWZpbmVkKTsKICAgICByZXR1cm4gY3Jl
YXRlZFJlZ0V4cFtAc3ltYm9sU2VhcmNoXSh0aGlzU3RyaW5nKTsKIH0KKworZnVuY3Rpb24gcmVw
ZWF0U2xvd1BhdGgoc3RyaW5nLCBjb3VudCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgcmVwZWF0Q291bnQgPSBAdG9JbnRlZ2VyKGNvdW50KTsKKyAgICBpZiAocmVwZWF0Q291bnQg
PCAwIHx8IHJlcGVhdENvdW50ID09PSBASW5maW5pdHkpCisgICAgICAgIHRocm93IG5ldyBAUmFu
Z2VFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIGluZmluaXR5Iik7CisKKyAgICAvLyBSZXR1
cm4gYW4gZW1wdHkgc3RyaW5nLgorICAgIGlmIChyZXBlYXRDb3VudCA9PT0gMCB8fCBzdHJpbmcu
bGVuZ3RoID09PSAwKQorICAgICAgICByZXR1cm4gIiI7CisKKyAgICAvLyBSZXR1cm4gdGhlIG9y
aWdpbmFsIHN0cmluZy4KKyAgICBpZiAocmVwZWF0Q291bnQgPT09IDEpCisgICAgICAgIHJldHVy
biBzdHJpbmc7CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCAqIHJlcGVhdENvdW50ID4gQE1BWF9T
VFJJTkdfTEVOR1RIKQorICAgICAgICB0aHJvdyBuZXcgQEVycm9yKCJPdXQgb2YgbWVtb3J5Iik7
CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAvLyBIZXJlLCB8cmVw
ZWF0Q291bnR8IGlzIGFsd2F5cyBJbnQzMi4KKyAgICAgICAgcmV0dXJuIEByZXBlYXRDaGFyYWN0
ZXIoc3RyaW5nLCByZXBlYXRDb3VudCk7CisgICAgfQorCisgICAgLy8gQml0IG9wZXJhdGlvbiBv
bnRvIHxyZXBlYXRDb3VudHwgaXMgc2FmZSBiZWNhdXNlIHxyZXBlYXRDb3VudHwgc2hvdWxkIGJl
IHdpdGhpbiBJbnQzMiByYW5nZSwKKyAgICAvLyBSZXBlYXQgbG9nIE4gdGltZXMgdG8gZ2VuZXJh
dGUgdGhlIHJlcGVhdGVkIHN0cmluZyByb3BlLgorICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICB2
YXIgb3BlcmFuZCA9IHN0cmluZzsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAocmVw
ZWF0Q291bnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICs9IG9wZXJhbmQ7CisgICAgICAgIHJl
cGVhdENvdW50ID4+PSAxOworICAgICAgICBpZiAoIXJlcGVhdENvdW50KQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgb3BlcmFuZCArPSBvcGVyYW5kOworICAgIH0KK30KKwor
ZnVuY3Rpb24gcmVwZWF0KGNvdW50KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0
aGlzID09IG51bGwpIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSAiU3RyaW5nLnByb3RvdHlwZS5y
ZXBlYXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCI7CisgICAgICAgIGlm
ICh0aGlzID09PSBudWxsKQorICAgICAgICAgICAgbWVzc2FnZSA9ICJTdHJpbmcucHJvdG90eXBl
LnJlcGVhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCI7CisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKG1lc3NhZ2UpOworICAgIH0KKworICAgIHZhciBzdHJpbmcgPSBAdG9T
dHJpbmcodGhpcyk7CisgICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IEByZXBlYXRDaGFyYWN0ZXIoc3RyaW5nLCBjb3VudCk7CisgICAgICAgIGlmIChy
ZXN1bHQgIT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHJldHVybiBAcmVwZWF0U2xvd1BhdGgoc3RyaW5nLCBjb3VudCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAKaW5kZXggYjM5Yzg3OTVkMWZhMWVhYzk3YzZlZGUzZDk2MTg5MjU2NmUyNWUwOS4u
YzVkMzliNWUzNGI3OTI0YmYzMGU0ZTMyNTMwNGRiOTU3Mjk2MmM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcApAQCAtNDQsMTAgKzQ0LDEyIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIEpTQ19DT01NT05fQllURUNP
REVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRS
SU5TSUNfTkFNRVNfVE9fU0VUKQogCiAgICAgbV91bmRlZmluZWQuc2V0KG1fdm0sIGpzVW5kZWZp
bmVkKCkpOworICAgIG1fSW5maW5pdHkuc2V0KG1fdm0sIGpzRG91YmxlTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwogICAgIG1fYXJyYXlJdGVyYXRpb25L
aW5kS2V5LnNldChtX3ZtLCBqc051bWJlcihBcnJheUl0ZXJhdGVLZXkpKTsKICAgICBtX2FycmF5
SXRlcmF0aW9uS2luZFZhbHVlLnNldChtX3ZtLCBqc051bWJlcihBcnJheUl0ZXJhdGVWYWx1ZSkp
OwogICAgIG1fYXJyYXlJdGVyYXRpb25LaW5kS2V5VmFsdWUuc2V0KG1fdm0sIGpzTnVtYmVyKEFy
cmF5SXRlcmF0ZUtleVZhbHVlKSk7CiAgICAgbV9NQVhfU0FGRV9JTlRFR0VSLnNldChtX3ZtLCBq
c0RvdWJsZU51bWJlcig5MDA3MTk5MjU0NzQwOTkxLjApKTsgLy8gMiBeIDUzIC0gMQorICAgIG1f
TUFYX1NUUklOR19MRU5HVEguc2V0KG1fdm0sIGpzTnVtYmVyKEpTU3RyaW5nOjpNYXhMZW5ndGgp
KTsKICAgICBtX3Byb21pc2VTdGF0ZVBlbmRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZykpKTsKICAgICBtX3Byb21p
c2VTdGF0ZUZ1bGZpbGxlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxmaWxsZWQpKSk7CiAgICAgbV9wcm9taXNlU3RhdGVSZWpl
Y3RlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6
U3RhdHVzOjpSZWplY3RlZCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDE2ZTZjMWFiMmQz
NTcwNjQ5MmU1YmNkYmVmZTc4ZGIyYzhlZjU5MTguLjllZDYxZmE0MmQwNjU4OTY5YjU1YWNiOGNh
MDRlYTNhYmViZWY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDYsMTAgKzQ2LDEyIEBA
IGNsYXNzIElkZW50aWZpZXI7CiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAor
ICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kS2V5KSBc
CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kVmFsdWUpIFwKICAgICBtYWNybyhhcnJheUl0
ZXJhdGlvbktpbmRLZXlWYWx1ZSkgXAogICAgIG1hY3JvKE1BWF9TQUZFX0lOVEVHRVIpIFwKKyAg
ICBtYWNybyhNQVhfU1RSSU5HX0xFTkdUSCkgXAogICAgIG1hY3JvKHByb21pc2VTdGF0ZVBlbmRp
bmcpIFwKICAgICBtYWNybyhwcm9taXNlU3RhdGVGdWxmaWxsZWQpIFwKICAgICBtYWNybyhwcm9t
aXNlU3RhdGVSZWplY3RlZCkgXApAQCAtNTcsNyArNTksNyBAQCBjbGFzcyBJZGVudGlmaWVyOwog
ICAgIG1hY3JvKHN5bWJvbEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oc3ltYm9sTWF0Y2gpIFwKICAg
ICBtYWNybyhzeW1ib2xTZWFyY2gpIFwKLSAgICBtYWNybyhzeW1ib2xTcGVjaWVzKQorICAgIG1h
Y3JvKHN5bWJvbFNwZWNpZXMpIFwKIAogY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCA2ODFkZmU4YjhjYTMxMjQ5N2UxYTM5OWM2Y2ZhM2QyZTIzYmQ5MjljLi4wMDQxYWQxZjlh
ZGQ4NDQxM2U0MDQ0Njg0OWM2YWI3NGYzOTExZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMyMyw2ICszMjMsNyBAQAog
ICAgIG1hY3JvKGdldE93blByb3BlcnR5RGVzY3JpcHRvcikgXAogICAgIG1hY3JvKGdldE93blBy
b3BlcnR5TmFtZXMpIFwKICAgICBtYWNybyhvd25LZXlzKSBcCisgICAgbWFjcm8oRXJyb3IpIFwK
ICAgICBtYWNybyhSYW5nZUVycm9yKSBcCiAgICAgbWFjcm8oVHlwZUVycm9yKSBcCiAgICAgbWFj
cm8odHlwZWRBcnJheUxlbmd0aCkgXApAQCAtMzM4LDYgKzMzOSw3IEBACiAgICAgbWFjcm8ocHJv
bWlzZVJlamVjdFJlYWN0aW9ucykgXAogICAgIG1hY3JvKHByb21pc2VSZXN1bHQpIFwKICAgICBt
YWNybyhwdXNoKSBcCisgICAgbWFjcm8ocmVwZWF0Q2hhcmFjdGVyKSBcCiAgICAgbWFjcm8oY2Fw
YWJpbGl0aWVzKSBcCiAgICAgbWFjcm8oc3RhckRlZmF1bHQpIFwKICAgICBtYWNybyhJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlNGZmMzljM2FjNGNlMDJiY2Y0MjkwY2Q1NWNlMzBj
NGE1M2ZlN2M3Li5iYTkzYWY3NGRmNzY1YTY5N2Y2ZTk1ZDVhNWU2ZDY3MzkwZGM4MTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC01NTIsNiArNTUyLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPm93bkVudW1lcmFibGVQcm9wZXJ0eUtleXNQ
cml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb3du
RW51bWVyYWJsZVByb3BlcnR5S2V5cyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmdldFRlbXBs
YXRlT2JqZWN0UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jR2V0VGVtcGxhdGVPYmplY3QsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmVucXVldWVKb2JQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZW5xdWV1ZUpvYiksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPkVycm9yUHJpdmF0ZU5hbWUsIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+UmFuZ2VFcnJvclByaXZhdGVOYW1lLCBtX3JhbmdlRXJyb3JDb25z
dHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5h
bWUsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3Ro
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCkBAIC01NzIsNiArNTczLDkgQEAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUs
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPlJlZmxlY3RQcml2YXRlTmFtZSwgcmVmbGVjdE9iamVjdCwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW50ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWUsIGludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlcGVhdENoYXJhY3RlclBy
aXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJp
bmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZXBlYXRTbG93UGF0aFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3RyaW5nUHJvdG90eXBlUmVwZWF0U2xvd1BhdGhDb2RlR2Vu
ZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKwog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNTZXRQcml2YXRl
TmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcHJpdmF0ZUZ1
bmNJc1NldCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlNldEl0ZXJhdG9yUHJpdmF0ZU5hbWUs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHByaXZhdGVGdW5jU2V0
SXRlcmF0b3IpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5zZXRJdGVyYXRvck5leHRQcml2YXRl
TmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgcHJpdmF0ZUZ1
bmNTZXRJdGVyYXRvck5leHQpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApp
bmRleCAxNjU3N2JmN2RmNGZmZTEzNzBmNjA2ZDA5MjFkMDhhNjQ1Yzk4NTU5Li42ZTFiZmM1Nzlh
ODJmZjU5NGNkYmNjZmJjZTc4OGRiZTA5YTZmYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTY4LDcgKzY4LDYgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0
ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jUGFkRW5kKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNQYWRTdGFydChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4ZWNTdGF0ZSopOwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
KTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhl
Y1N0YXRlKik7CkBAIC0xMTIsNiArMTExLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3Rv
dHlwZTo6c19pbmZvID0geyAiU3RyaW5nIiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAmc3QKIC8q
IFNvdXJjZSBmb3IgU3RyaW5nQ29uc3RydWN0b3IubHV0LmgKIEBiZWdpbiBzdHJpbmdQcm90b3R5
cGVUYWJsZQogICAgIG1hdGNoICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIHJlcGVhdCAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHNlYXJj
aCAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KQEAgLTEzNyw3
ICsxMzcsNiBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0xhc3RJ
bmRleE9mLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04oInBhZEVuZCIsIHN0cmluZ1Byb3RvRnVuY1BhZEVuZCwgRG9udEVudW0sIDEpOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwYWRTdGFydCIsIHN0
cmluZ1Byb3RvRnVuY1BhZFN0YXJ0LCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInJlcGVhdCIsIHN0cmluZ1Byb3RvRnVuY1JlcGVhdCwg
RG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigicmVwbGFjZSIsIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2UsIERvbnRFbnVtLCAy
LCBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTigic2xpY2UiLCBzdHJpbmdQcm90b0Z1bmNTbGljZSwgRG9u
dEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJz
cGxpdCIsIHN0cmluZ1Byb3RvRnVuY1NwbGl0LCBEb250RW51bSwgMik7CkBAIC03OTIsNiArNzkx
LDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIHJlcGVhdENoYXJhY3RlcihFeGVjU3RhdGUm
IGV4ZWMsIENoYXJhY3RlclR5cGUgY2hhcmFjdGVyCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVj
LCBpbXBsLnJlbGVhc2UoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBG
b3IgYSBzdHJpbmcgd2hpY2ggbGVuZ3RoIGlzIHNpbmdsZSwgaW5zdGVhZCBvZiBjcmVhdGluZyBy
b3BlcywKKyAgICAvLyBhbGxvY2F0aW5nIGEgc2VxdWVudGlhbCBidWZmZXIgYW5kIGZpbGwgd2l0
aCB0aGUgcmVwZWF0ZWQgc3RyaW5nIGZvciBlZmZpY2llbmN5LgorICAgIEFTU0VSVChleGVjLT5h
cmd1bWVudENvdW50KCkgPT0gMik7CisKKyAgICBBU1NFUlQoZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkuaXNTdHJpbmcoKSk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzQ2FzdDxKU1N0cmlu
Zyo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBBU1NFUlQoc3RyaW5nLT5sZW5n
dGgoKSA9PSAxKTsKKworICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkuaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKworICAgIGlu
dDMyX3QgcmVwZWF0Q291bnQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS5hc0ludDMyKCk7
CisgICAgVUNoYXIgY2hhcmFjdGVyID0gc3RyaW5nLT52aWV3KGV4ZWMpWzBdOworICAgIGlmICgh
KGNoYXJhY3RlciAmIH4weGZmKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBl
YXRDaGFyYWN0ZXIoKmV4ZWMsIHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCByZXBlYXRD
b3VudCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVj
LCBjaGFyYWN0ZXIsIHJlcGVhdENvdW50KSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCByZXBl
YXRTdHJpbmdQYXR0ZXJuKEV4ZWNTdGF0ZSYgZXhlYywgdW5zaWduZWQgbWF4TGVuZ3RoLCBKU1N0
cmluZyogc3RyaW5nLCBKU1JvcGVTdHJpbmc6OlJvcGVCdWlsZGVyJiByb3BlQnVpbGRlcikKIHsK
ICAgICB1bnNpZ25lZCByZXBlYXRDb3VudCA9IG1heExlbmd0aCAvIHN0cmluZy0+bGVuZ3RoKCk7
CkBAIC04MTIsNTMgKzgzMSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZXBlYXRTdHJpbmdQYXR0
ZXJuKEV4ZWNTdGF0ZSYgZXhlYywgdW5zaWduZWQgbWF4TGVuZ3RoLCBKU1N0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
UmVwZWF0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwotICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1N0cmluZyog
c3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQotICAgIGRvdWJsZSByZXBlYXRDb3VudERvdWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50
ZWdlcihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKHJlcGVhdENvdW50RG91
YmxlIDwgMCB8fCBzdGQ6OmlzaW5mKHJlcGVhdENvdW50RG91YmxlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
cmVwZWF0KCkgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCBhbmQg
bm90IGJlIGluZmluaXR5IikpKTsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0KLSAgICBp
ZiAoIXN0cmluZy0+bGVuZ3RoKCkgfHwgIXJlcGVhdENvdW50RG91YmxlKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcoJnZtKSk7Ci0KLSAgICBpZiAocmVwZWF0
Q291bnREb3VibGUgPT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmcp
OwotCi0gICAgLy8gSlNTdHJpbmcgcmVxdWlyZXMgdGhlIGxpbWl0YXRpb24gdGhhdCBpdHMgbGVu
Z3RoIGlzIGluIHRoZSByYW5nZSBvZiBpbnQzMl90LgotICAgIGlmIChyZXBlYXRDb3VudERvdWJs
ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIC8gc3RyaW5nLT5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYykpOwotICAgIHVuc2lnbmVkIHJlcGVhdENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJlcGVhdENvdW50RG91YmxlKTsKLQotICAgIC8vIEZvciBhIHN0cmluZyB3aGljaCBsZW5ndGgg
aXMgc21hbGwsIGluc3RlYWQgb2YgY3JlYXRpbmcgcm9wZXMsCi0gICAgLy8gYWxsb2NhdGluZyBh
IHNlcXVlbnRpYWwgYnVmZmVyIGFuZCBmaWxsIHdpdGggdGhlIHJlcGVhdGVkIHN0cmluZyBmb3Ig
ZWZmaWNpZW5jeS4KLSAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgIFN0
cmluZyByZXBlYXRlZFN0cmluZyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIFVDaGFy
IGNoYXJhY3RlciA9IHJlcGVhdGVkU3RyaW5nLmF0KDApOwotICAgICAgICBpZiAoIShjaGFyYWN0
ZXIgJiB+MHhmZikpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENo
YXJhY3RlcihleGVjLCBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291bnQp
KTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoZXhlYywg
Y2hhcmFjdGVyLCByZXBlYXRDb3VudCkpOwotICAgIH0KLQotICAgIEpTUm9wZVN0cmluZzo6Um9w
ZUJ1aWxkZXIgcm9wZUJ1aWxkZXIodm0pOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXBlYXRDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5kKHN0cmlu
ZykpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKSk7Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocm9wZUJ1aWxk
ZXIucmVsZWFzZSgpKTsKLX0KLQogZW51bSBjbGFzcyBTdHJpbmdQYWRkaW5nTG9jYXRpb24geyBT
dGFydCwgRW5kIH07CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwYWRTdHJpbmcoRXhlY1N0YXRl
JiBleGVjLCBTdHJpbmdQYWRkaW5nTG9jYXRpb24gcGFkZGluZ0xvY2F0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCAxODU1Y2Q5
MmRmYjkyNGQ4ZTIzOGMxMTdhOGZkM2M1ZTI3ZDIzZTJmLi5hNDI4ZWJmZjU0ZmUyNGM0ZDVlMDU3
MzNhZTQyMmY4YzJiMjU1OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtNjIsNiArNjIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cigK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cFN0cmluZygKICAgICBFeGVjU3RhdGUqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBS
ZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsKIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIo
RXhlY1N0YXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RyaW5nUHJv
dG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c3RyaW5nLXJlcGVhdC1lZGdlLWNhc2VzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zdHJpbmctcmVwZWF0LWVkZ2UtY2FzZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZjYjFjOTZl
YjM2MzBjYzQ2ZmY5ZGMxNTdiYWE2MTIxZmIwODM0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3RyaW5nLXJlcGVhdC1lZGdlLWNhc2VzLmpz
CkBAIC0wLDAgKzEsNTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWU6IHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworeworICAgIGxldCBvYmplY3QgPSB7CisgICAgICAgIHRvU3RyaW5nKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuICJDIjsKKyAgICAgICAgfQorICAgIH07CisgICAgc2hvdWxkQmUo
U3RyaW5nLnByb3RvdHlwZS5yZXBlYXQuY2FsbChvYmplY3QsIDIuNSksICJDQyIpOworICAgIHNo
b3VsZEJlKFN0cmluZy5wcm90b3R5cGUucmVwZWF0LmNhbGwob2JqZWN0LCAtMCksICIiKTsKKyAg
ICBzaG91bGRCZShTdHJpbmcucHJvdG90eXBlLnJlcGVhdC5jYWxsKG9iamVjdCwgMSksICJDIik7
CisgICAgc2hvdWxkQmUoU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQuY2FsbChvYmplY3QsIHsKKyAg
ICAgICAgdmFsdWVPZigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAyLjU7CisgICAg
ICAgIH0KKyAgICB9KSwgIkNDIik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBT
dHJpbmcucHJvdG90eXBlLnJlcGVhdC5jYWxsKG9iamVjdCwgeworICAgICAgICAgICAgdmFsdWVP
ZigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJPSyIp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9LCBgRXJyb3I6IE9LYCk7Cit9CisK
K3sKKyAgICBzaG91bGRCZShTdHJpbmcucHJvdG90eXBlLnJlcGVhdC5jYWxsKCIiLCAwKSwgIiIp
OworICAgIHNob3VsZEJlKFN0cmluZy5wcm90b3R5cGUucmVwZWF0LmNhbGwoIiIsIDB4RkZGRkZG
RkZGKSwgIiIpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgU3RyaW5nLnByb3Rv
dHlwZS5yZXBlYXQuY2FsbCgiIiwgSW5maW5pdHkpOworICAgIH0sIGBSYW5nZUVycm9yOiBTdHJp
bmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHlgKTsKKworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQuY2FsbCgiIiwgLTIwMDApOworICAgIH0s
IGBSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHlgKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAzYjQwZWU1YzI1NjJiZjZlMDI0ZDQxNWE0ODc1N2E1ZGQxNDAxMGMzLi5mNzljNmMzOWE4OTU1
ZTZjYjRmMzc2NzI1YmI2OGY5ZDVmMDkwMDExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYt
MDMtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IFN0cmluZy5wcm90b3R5cGUucmVwZWF0IGluIGJ1aWx0aW5zIEpTCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU5NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhl
IGVycm9yIG1lc3NhZ2VzLgorCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3Ry
aW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWZpeGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtbm90LXJl
c29sdmluZy1uby1pbmxpbmUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2
aW5nLW5vLWlubGluZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmct
cmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtc2luZ2xlLXJl
c29sdmluZy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcuanM6IEFkZGVk
LgorICAgICAgICAodGVzdCk6CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3Ry
aW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtbm90LXJlc29s
dmluZy1maXhlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3Ry
aW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWZpeGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vaW5saW5lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZp
bmctbm9pbmxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcmVw
ZWF0LW5vdC1yZXNvbHZpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcmVwZWF0LXJlc29sdmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctbm8t
aW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmct
cmVwZWF0LXJlc29sdmluZy1uby1pbmxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNv
bHZpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNp
bmdsZS1yZXNvbHZpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3N0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtc21hbGwtbm90LXJlc29sdmluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1zbWFsbC1ub3QtcmVz
b2x2aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1z
bWFsbC1yZXNvbHZpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3N0cmluZy1yZXBlYXQtc21hbGwtcmVzb2x2aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LmpzOgorICAgICAgICAqIGpzL3N0cmluZy1yZXBl
YXQtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTAzLTI5ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IFZvaWNlT3ZlciBub3QgYW5ub3VuY2luZyB0aGUgcmlnaHQgaGVh
ZGVyIGluZm9ybWF0aW9uIGZvciB0YWJsZSBvbiBpT1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhl
ZC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQt
bm90LXJlc29sdmluZy1maXhlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTUzOTQxNWQ4ODMyN2Y4MWU3YWIx
ZmJjOGU4Y2QzNzViZGNjZGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWZpeGVkLmpzCkBA
IC0wLDAgKzEsNyBAQAorZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHJldHVybiBz
dHIucmVwZWF0KGNvdW50KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAg
ICB0ZXN0KGkudG9TdHJpbmcoKSwgMTAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1uby1pbmxpbmUu
anMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LW5v
dC1yZXNvbHZpbmctbm8taW5saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNWRlZWIzMzgxMTJlMjBkM2Qy
OWMyNmY5MWRkMWIyZWQwMTllODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctbm8taW5saW5l
LmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHJl
dHVybiBzdHIucmVwZWF0KGNvdW50KTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoaS50b1N0cmluZygpLCBpKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtbm90
LXJlc29sdmluZy5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1yZXBlYXQtbm90LXJlc29sdmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDVlOWZhNjU3OGEwNWU1ZWJh
ZWVhMjJjM2U4Mjc5NDMyMzAyNDExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLmpzCkBAIC0w
LDAgKzEsNyBAQAorZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHJldHVybiBzdHIu
cmVwZWF0KGNvdW50KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0
ZXN0KGkudG9TdHJpbmcoKSwgaSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy1maXhlZC5qcyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4NDY5YTEzNTYxZTczNzM2NWUwYmIzNmY1MTA3Yzg5MTI1MTY3M2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
dHJpbmctcmVwZWF0LXJlc29sdmluZy1maXhlZC5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9u
IHRlc3Qoc3RyLCBjb3VudCkKK3sKKyAgICB2YXIgcmVwZWF0ZWQgPSBzdHIucmVwZWF0KGNvdW50
KTsKKyAgICAvLyBFeHBhbmQgdGhlIHJvcGUuCisgICAgcmV0dXJuIHJlcGVhdGVkWzBdICsgcmVw
ZWF0ZWRbY291bnQgPj4gMV0gKyByZXBlYXRlZFtyZXBlYXRlZC5sZW5ndGggLSAxXTsKK30KKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KGkudG9TdHJpbmcoKSwgMTAw
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZGY2NTcxNDUyNDk1NmU4Y2Q0ZTNhMWM0MWZmYWE0ODI1ZTU3YWE4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVh
dC1yZXNvbHZpbmctbm8taW5saW5lLmpzCkBAIC0wLDAgKzEsMTAgQEAKK2Z1bmN0aW9uIHRlc3Qo
c3RyLCBjb3VudCkKK3sKKyAgICB2YXIgcmVwZWF0ZWQgPSBzdHIucmVwZWF0KGNvdW50KTsKKyAg
ICAvLyBFeHBhbmQgdGhlIHJvcGUuCisgICAgcmV0dXJuIHJlcGVhdGVkWzBdICsgcmVwZWF0ZWRb
Y291bnQgPj4gMV0gKyByZXBlYXRlZFtyZXBlYXRlZC5sZW5ndGggLSAxXTsKK30KK25vSW5saW5l
KHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoaS50b1N0
cmluZygpLCBpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3YWVk
NGM5NDFlMzY4OWIzZDkyZWNiMDEwZDU3MzNkYzNhZTkwZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5n
LmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHZh
ciByZXBlYXRlZCA9IHN0ci5yZXBlYXQoY291bnQpOworICAgIC8vIEV4cGFuZCB0aGUgcm9wZS4K
KyAgICByZXR1cm4gcmVwZWF0ZWRbMF0gKyByZXBlYXRlZFtjb3VudCA+PiAxXSArIHJlcGVhdGVk
W3JlcGVhdGVkLmxlbmd0aCAtIDFdOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KQorICAgIHRlc3QoaS50b1N0cmluZygpLCBpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcu
anMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNp
bmdsZS1ub3QtcmVzb2x2aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4NDZjNmNhODRlOTM0YzhlYjkyYzk2
YTFlNjRmYWY2NzAwNzlkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nLmpzCkBA
IC0wLDAgKzEsNyBAQAorZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHJldHVybiBz
dHIucmVwZWF0KGNvdW50KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAg
ICB0ZXN0KCcgJywgaSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcuanMgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjVkMjU4MTk4MDQxN2I5ZTQwMGNiMmM0NjI1MDc2YjI1ZjQ2YzFlZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZy5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHRl
c3Qoc3RyLCBjb3VudCkKK3sKKyAgICB2YXIgcmVwZWF0ZWQgPSBzdHIucmVwZWF0KGNvdW50KTsK
KyAgICAvLyBFeHBhbmQgdGhlIHJvcGUuCisgICAgcmV0dXJuIHJlcGVhdGVkWzBdICsgcmVwZWF0
ZWRbY291bnQgPj4gMV0gKyByZXBlYXRlZFtyZXBlYXRlZC5sZW5ndGggLSAxXTsKK30KKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCcgJywgaSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNtYWxs
LW5vdC1yZXNvbHZpbmcuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
dHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQzYWM1MjNi
YWQ3ZmFiYTMzNTVmMzI2OGExNGVkOGIzOGFiNjQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtc21hbGwtbm90LXJl
c29sdmluZy5qcwpAQCAtMCwwICsxLDcgQEAKK2Z1bmN0aW9uIHRlc3Qoc3RyLCBjb3VudCkKK3sK
KyAgICByZXR1cm4gc3RyLnJlcGVhdChjb3VudCk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpCisgICAgdGVzdCgnICAnLCBpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtc21hbGwtcmVzb2x2aW5nLmpzIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1zbWFsbC1y
ZXNvbHZpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU2ODM2ZDJlMDA5MTg3YWE2ZDNiN2E1OTg5NDFmYjA1
MmNkMzUxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3N0cmluZy1yZXBlYXQtc21hbGwtcmVzb2x2aW5nLmpzCkBAIC0wLDAgKzEsOSBAQAor
ZnVuY3Rpb24gdGVzdChzdHIsIGNvdW50KQoreworICAgIHZhciByZXBlYXRlZCA9IHN0ci5yZXBl
YXQoY291bnQpOworICAgIC8vIEV4cGFuZCB0aGUgcm9wZS4KKyAgICByZXR1cm4gcmVwZWF0ZWRb
MF0gKyByZXBlYXRlZFtjb3VudCA+PiAxXSArIHJlcGVhdGVkW3JlcGVhdGVkLmxlbmd0aCAtIDFd
OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoJyAgJywgaSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtbm90LXJl
c29sdmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBl
YXQtbm90LXJlc29sdmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMDYxMThkZGEwZjdj
MDU0NzQ0ZTE2YjFlZGJlOTE1ZWVhN2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1m
aXhlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQt
bm90LXJlc29sdmluZy1maXhlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE2NTVkMjllMTZj
MjBhZWQwYmIxMmNhM2YwNGU5ODkyZWIzNzk1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWZpeGVkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2
aW5nLWZpeGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQt
bm90LXJlc29sdmluZy1maXhlZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cmVwZWF0LW5vdC1yZXNvbHZpbmctZml4ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTY3MDY0ZGE3MzNm
NmNjNzM3ZDlkZTQxYjBjNDRmMjgzMTdmYTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctZml4ZWQuaHRtbApAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctZml4ZWQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cmVwZWF0LW5vdC1yZXNvbHZpbmctbm9pbmxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctbm9pbmxpbmUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViODk4ZmFiOTFiYTBlZDkzNjA0OGE5ZDg1NTM3Y2EwYTg2OGMyZWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQt
bm90LXJlc29sdmluZy1ub2lubGluZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3N0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1ub2lubGluZQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctbm9pbmxpbmUu
aHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5n
LW5vaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4NzFlNjVkZjgzMDEwMmY1YmZlNjNmYzk5MGE2
ZDkzZjZkN2IxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3Ry
aW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vaW5saW5lLmh0bWwKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXJl
cGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtbm90
LXJlc29sdmluZy5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LW5v
dC1yZXNvbHZpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjVmYjQ3ODlhODYzYjY5YjUwNTM3ZDQ3YjVh
ZWIzMzk5YWJjYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
dHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmcuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LW5v
dC1yZXNvbHZpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI3Y2M2ZTIxMjZmNzgwYjEwMTI0NGQ1NjJkMjU0NzBlZTg0
MzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVw
ZWF0LXJlc29sdmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0
cmluZy1yZXBlYXQtcmVzb2x2aW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE3MTU0NGIzYjNkYWJmMThiZjYwN2Q4MDg5MDEwODg2ZDYwNjczNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5n
LWZpeGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXJl
cGVhdC1yZXNvbHZpbmctZml4ZWQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3Ry
aW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGMwMTE5Y2Y1
MGQ3YzU0MjAzZjVlOGYzNzFmZDU1YTViMmRiNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy1maXhlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVh
dC1yZXNvbHZpbmctbm8taW5saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctbm8taW5saW5lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYTE1ZmM5MWUyYjkwZGRhYzA3N2E2N2ZhMTdjM2U0ZmQ0ZTk3YmFhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXJlc29sdmluZy1u
by1pbmxpbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmct
cmVwZWF0LXJlc29sdmluZy1uby1pbmxpbmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctbm8taW5saW5lLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRlYjYxYmZiNjFiZTg1OWMzNGE4MWFiMTY4MjEzZjJhYTI2NzVjMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5v
LWlubGluZS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1yZXBlYXQtcmVzb2x2aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxNDQ5NDE2
MjlhNjIyYzQ1NDhlNDg0YzliMDljOWY2YzQ2NmEwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmcuaHRtbApAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
dHJpbmctcmVwZWF0LXJlc29sdmluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLW5v
dC1yZXNvbHZpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWM3
ZGY1ZDIyODlkYTIxNjIyODg2YzcwNWMzNjU1NDMyMDdjM2RmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5n
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1z
aW5nbGUtbm90LXJlc29sdmluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJp
bmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDZhMjA0ZjU5Y2YxNGJiYzcwODY5YzNiMWQ2NTYwMWU3YjgyNWVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2
aW5nLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1zaW5nbGUtbm90LXJlc29sdmluZy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzMyM2JmODNkODFiMGQ3NjBjMGJjZmMzMWJjZGYzNDk4NDQ4ZGNl
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVh
dC1zaW5nbGUtcmVzb2x2aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jl
c3Mvc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZy5odG1sIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZWJjNDExMzAzNzVlMDMxYTdhODU3ODJmNTVhMmNkNTNmY2U4ZWJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNv
bHZpbmcuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNjFjNzIzNGE1ODFhNDI2NmMyYzVkYmM5ZjZkMDQyYzg3
NDJmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1y
ZXBlYXQtc21hbGwtbm90LXJlc29sdmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL3N0cmluZy1yZXBlYXQtc21hbGwtbm90LXJlc29sdmluZworCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1zbWFsbC1ub3QtcmVzb2x2
aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ4ZDZmNjcxN2ZhZTE5YTM2MjA2NDEwOGRmYjUwZmNiMTVh
MjQ0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJl
cGVhdC1zbWFsbC1ub3QtcmVzb2x2aW5nLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1zbWFs
bC1ub3QtcmVzb2x2aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxs
LXJlc29sdmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxNjM3MGIwMDhiMGMyZGE1ODU3
MGQyM2I4ZDBlNzIzYjk2MmUxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLXJlc29sdmluZworCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLXJlc29sdmluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcmVwZWF0LXNtYWxsLXJlc29sdmlu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxMTMyZmU4M2Q0YjRjODU4ZGY0MzBkZGNlMTE1MmJiZGRkOTVl
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1yZXBl
YXQtc21hbGwtcmVzb2x2aW5nLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNv
bHZpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1yZXBlYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC5qcwppbmRleCAxYjE3NTIyZTYyZjkxNzQyMDE3YTUy
ZjJmODYyZDY3YjExN2Y0NjViLi4yNjg0YzUwNWY2Y2JiMzhmODhjNDUyYzAwNzc2MjcxMDZjMGQx
YjMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVh
dC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXJlcGVhdC5qcwpA
QCAtMzEsOSArMzEsOSBAQAogc2hvdWxkQmUoIicnLnJlcGVhdCgweEZGRkZGRkZGICsgMSkiLCAi
JyciKTsKIAogLy8gQ2hlY2sgcmFuZ2UgZXJyb3JzLgotc2hvdWxkVGhyb3coIidmb28gYmFyJy5y
ZXBlYXQoLTEpIiwgIidSYW5nZUVycm9yOiByZXBlYXQoKSBhcmd1bWVudCBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHknIik7Ci1zaG91bGRUaHJv
dygiJ2ZvbyBiYXInLnJlcGVhdChJbmZpbml0eSkiLCAiJ1JhbmdlRXJyb3I6IHJlcGVhdCgpIGFy
Z3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIG5vdCBiZSBpbmZp
bml0eSciKTsKLXNob3VsZFRocm93KCInZm9vIGJhcicucmVwZWF0KC1JbmZpbml0eSkiLCAiJ1Jh
bmdlRXJyb3I6IHJlcGVhdCgpIGFyZ3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIDAgYW5kIG5vdCBiZSBpbmZpbml0eSciKTsKK3Nob3VsZFRocm93KCInZm9vIGJhcicucmVw
ZWF0KC0xKSIsICInUmFuZ2VFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQg
bXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIGluZmluaXR5JyIp
Oworc2hvdWxkVGhyb3coIidmb28gYmFyJy5yZXBlYXQoSW5maW5pdHkpIiwgIidSYW5nZUVycm9y
OiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHknIik7CitzaG91bGRUaHJvdygiJ2ZvbyBi
YXInLnJlcGVhdCgtSW5maW5pdHkpIiwgIidSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnJl
cGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3Qg
YmUgaW5maW5pdHknIik7CiAKIC8vIENoZWNrIG91dCBvZiBtZW1vcnkgZXJyb3JzLgogc2hvdWxk
VGhyb3coIidmJy5yZXBlYXQoMHhGRkZGRkZGRikiLCAiJ0Vycm9yOiBPdXQgb2YgbWVtb3J5JyIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3RyaW5nLXJlcGVhdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVwZWF0LWV4cGVjdGVkLnR4dAppbmRleCA2MzhmMjI4
M2JiNTgzNTYwMmFjMTZlODlhN2VlOGNhNDU0NGVlMjk2Li42Y2RiY2Y4N2VjMzU5ODczYTZkNTkw
ZTdmNzQwOGYwNTNlZjA3NThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVw
ZWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctcmVwZWF0LWV4cGVj
dGVkLnR4dApAQCAtMzAsOSArMzAsOSBAQCBQQVNTICfjg5UnLnJlcGVhdCgyKSBpcyAn44OV44OV
JwogUEFTUyAnJy5yZXBlYXQoMTAwMCkgaXMgJycKIFBBU1MgJycucmVwZWF0KDB4RkZGRkZGRkYp
IGlzICcnCiBQQVNTICcnLnJlcGVhdCgweEZGRkZGRkZGICsgMSkgaXMgJycKLVBBU1MgJ2ZvbyBi
YXInLnJlcGVhdCgtMSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHJlcGVhdCgpIGFyZ3Vt
ZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIG5vdCBiZSBpbmZpbml0
eS4KLVBBU1MgJ2ZvbyBiYXInLnJlcGVhdChJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdl
RXJyb3I6IHJlcGVhdCgpIGFyZ3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
IDAgYW5kIG5vdCBiZSBpbmZpbml0eS4KLVBBU1MgJ2ZvbyBiYXInLnJlcGVhdCgtSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiByZXBlYXQoKSBhcmd1bWVudCBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHkuCitQQVNTICdmb28g
YmFyJy5yZXBlYXQoLTEpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90
eXBlLnJlcGVhdCBhcmd1bWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFu
ZCBub3QgYmUgaW5maW5pdHkuCitQQVNTICdmb28gYmFyJy5yZXBlYXQoSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnJlcGVhdCBhcmd1bWVudCBt
dXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBub3QgYmUgaW5maW5pdHkuCitQ
QVNTICdmb28gYmFyJy5yZXBlYXQoLUluZmluaXR5KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJv
cjogU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIGluZmluaXR5LgogUEFTUyAnZicucmVwZWF0KDB4RkZG
RkZGRkYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogT3V0IG9mIG1lbW9yeS4KIFBBU1MgJ2YnLnJl
cGVhdCgweEZGRkZGRkZGICsgMSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBPdXQgb2YgbWVtb3J5
LgogUEFTUyAnZm9vJy5yZXBlYXQoMHhGRkZGRkZGRkYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
T3V0IG9mIG1lbW9yeS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>