<?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>153679</bug_id>
          
          <creation_ts>2016-01-29 15:39:24 -0800</creation_ts>
          <short_desc>[INTL] Intl Constructors not web compatible with Object.create usage</short_desc>
          <delta_ts>2016-03-10 17:35:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155300</dependson>
    
    <dependson>155308</dependson>
          <blocked>90906</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy VanWagoner">andy</reporter>
          <assigned_to name="Andy VanWagoner">andy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>erights</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1160309</commentid>
    <comment_count>0</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-01-29 15:39:24 -0800</bug_when>
    <thetext>The second version of ECMA-402 removed the ability to call Collator, DateTimeFormat, and NumberFormat with an already created `this` value to re-initialize. All calls without `new` instead create a new object, instead of trying to initialize an arbitrary `this`.

The new behavior breaks this pattern used in a actual websites:

    var format = Object.create(Intl.NumberFormat.prototype)
    Intl.NumberFormat.apply(format, args)

The 3rd version will likely re-allow this pattern. While arbitrary objects will not possible to initialize as a Collator, DateTimeFormat, or NumberFormat, objects inheriting from these prototypes can be.

The implementation of Intl constructors in WebKit should be made web-compatible and forward-compatible with this pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160311</commentid>
    <comment_count>1</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-01-29 15:42:12 -0800</bug_when>
    <thetext>See https://github.com/tc39/ecma402/issues/57</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166831</commentid>
    <comment_count>2</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2016-02-21 08:54:11 -0800</bug_when>
    <thetext>https://github.com/tc39/ecma402/issues/57#issuecomment-186856109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166832</commentid>
    <comment_count>3</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2016-02-21 08:57:01 -0800</bug_when>
    <thetext>Unlike the github bug thread or what we heard at the tc39 mtg, the first post in this thread uses .apply rather than .call. The code at https://github.com/tc39/ecma402/issues/57#issuecomment-186856109 will need some adjustment to give these objects their own overriding .call and .apply methods without stomping on each other. But https://github.com/tc39/ecma402/issues/57#issuecomment-186856109 , if it otherwise works, gives the idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166854</commentid>
    <comment_count>4</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-21 11:46:24 -0800</bug_when>
    <thetext>Ok, the gist is essentially that rather than try to swap the object in place, we let it be a proxy of sorts to a real Collator/NumberFormat/DateTimeFormat.

I&apos;ll try this week to write a patch that does that.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168913</commentid>
    <comment_count>5</comment_count>
      <attachid>272426</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-27 16:19:10 -0800</bug_when>
    <thetext>Created attachment 272426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169436</commentid>
    <comment_count>6</comment_count>
      <attachid>272426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-01 08:31:54 -0800</bug_when>
    <thetext>Comment on attachment 272426
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:121
&gt; +    IntlDateTimeFormatConstructor* callee = jsCast&lt;IntlDateTimeFormatConstructor*&gt;(state-&gt;callee());

Since callee is used below and thisValue is not, I suggest moving this up one line and maybe initializing vm and callee in a separate paragraph.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:124
&gt; +    JSValue prototype = callee-&gt;getDirect(vm, vm.propertyNames-&gt;prototype);
&gt; +    IntlDateTimeFormat* dateTimeFormat = jsDynamicCast&lt;IntlDateTimeFormat*&gt;(thisValue);
&gt; +    if (!dateTimeFormat &amp;&amp; JSObject::defaultHasInstance(state, thisValue, prototype)) {

We it would be nice to not do the work to get the prototype unless thisValue is not a dateTime, so we should be using two nested if statements here. First checking dateTimeFormat for null before getting the prototype.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:129
&gt; +        ASSERT(dateTimeFormat);

This assertion seems a little excessive to me; not all that helpful.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:132
&gt; +        JSValue locales = state-&gt;argument(0);
&gt; +        JSValue options = state-&gt;argument(1);
&gt; +        dateTimeFormat-&gt;initializeDateTimeFormat(*state, locales, options);

Not all that useful to put these into local variables; I’d suggest just writing this out in a single line. Same in the main code below.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:136
&gt; +        if (state-&gt;hadException())
&gt; +            return JSValue::encode(jsUndefined());

Where is this exception coming from? If it’s coming from the call to initializeDateTimeFormat, then I suggest doing it before calling putDirect. I am assuming that putDirect cannot return an exception.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:144
&gt;      // 3. ReturnIfAbrupt(dateTimeFormat).
&gt;      ASSERT(dateTimeFormat);

I’m a little mystified by this. The standard seems to contemplate an error case here that we assert does not exist!

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:118
&gt; +    // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.

All the same comments apply here as in the IntlDateTimeFormatConstructor.cpp file. It’s also bothering me that we are writing out separate copies of almost identical code for these two classes. Not great factoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172513</commentid>
    <comment_count>7</comment_count>
      <attachid>272426</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-09 06:06:16 -0800</bug_when>
    <thetext>Comment on attachment 272426
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:121
&gt;&gt; +    IntlDateTimeFormatConstructor* callee = jsCast&lt;IntlDateTimeFormatConstructor*&gt;(state-&gt;callee());
&gt; 
&gt; Since callee is used below and thisValue is not, I suggest moving this up one line and maybe initializing vm and callee in a separate paragraph.

will do.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:124
&gt;&gt; +    if (!dateTimeFormat &amp;&amp; JSObject::defaultHasInstance(state, thisValue, prototype)) {
&gt; 
&gt; We it would be nice to not do the work to get the prototype unless thisValue is not a dateTime, so we should be using two nested if statements here. First checking dateTimeFormat for null before getting the prototype.

will do.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:129
&gt;&gt; +        ASSERT(dateTimeFormat);
&gt; 
&gt; This assertion seems a little excessive to me; not all that helpful.

yeah, I&apos;ll pull it out, and the one below that also just asserts that create worked.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:132
&gt;&gt; +        dateTimeFormat-&gt;initializeDateTimeFormat(*state, locales, options);
&gt; 
&gt; Not all that useful to put these into local variables; I’d suggest just writing this out in a single line. Same in the main code below.

will do.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:136
&gt;&gt; +            return JSValue::encode(jsUndefined());
&gt; 
&gt; Where is this exception coming from? If it’s coming from the call to initializeDateTimeFormat, then I suggest doing it before calling putDirect. I am assuming that putDirect cannot return an exception.

I assumed that putDirect can cause an exception on a sealed object. Is that not the case?

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:118
&gt;&gt; +    // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.
&gt; 
&gt; All the same comments apply here as in the IntlDateTimeFormatConstructor.cpp file. It’s also bothering me that we are writing out separate copies of almost identical code for these two classes. Not great factoring.

Personally, I think writing the same thing twice is better than trying to make an abstraction that makes sense and works in both places, especially when I expect this workaround to just get ripped out after a while. If it were 3 or 4 times, I would feel more pressure to create an abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172519</commentid>
    <comment_count>8</comment_count>
      <attachid>273426</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-09 06:58:00 -0800</bug_when>
    <thetext>Created attachment 273426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172986</commentid>
    <comment_count>9</comment_count>
      <attachid>272426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-09 20:37:30 -0800</bug_when>
    <thetext>Comment on attachment 272426
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:136
&gt;&gt;&gt; +            return JSValue::encode(jsUndefined());
&gt;&gt; 
&gt;&gt; Where is this exception coming from? If it’s coming from the call to initializeDateTimeFormat, then I suggest doing it before calling putDirect. I am assuming that putDirect cannot return an exception.
&gt; 
&gt; I assumed that putDirect can cause an exception on a sealed object. Is that not the case?

I do not think it can. I believe that putDirect is only safe to use when you know a sealed object is not involved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172998</commentid>
    <comment_count>10</comment_count>
      <attachid>273426</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 21:28:23 -0800</bug_when>
    <thetext>Comment on attachment 273426
Patch

Clearing flags on attachment: 273426

Committed r197925: &lt;http://trac.webkit.org/changeset/197925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172999</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-09 21:28:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173011</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-09 23:19:21 -0800</bug_when>
    <thetext>Looks like this caused 14 JSC tests to fail:
https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/4090/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173068</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-10 05:55:00 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Looks like this caused 14 JSC tests to fail:
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/4090/steps/jscore-
&gt; test/logs/stdio

Please run run-javascriptcore-tests next time before 
landing a JSC change to avoid similar breakages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173096</commentid>
    <comment_count>14</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-10 08:16:44 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Looks like this caused 14 JSC tests to fail:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20Release%20JSC%20%28Tests%29/builds/4090/steps/jscore-
&gt; &gt; test/logs/stdio
&gt; 
&gt; Please run run-javascriptcore-tests next time before 
&gt; landing a JSC change to avoid similar breakages.

It&apos;s sad that this is not part of EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173099</commentid>
    <comment_count>15</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-10 08:44:50 -0800</bug_when>
    <thetext>shouldNotBe isn&apos;t defined in the test harness used by run-javascriptcore-tests, but is in the harness use by run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173104</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-10 08:53:12 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; shouldNotBe isn&apos;t defined in the test harness used by
&gt; run-javascriptcore-tests, but is in the harness use by run-webkit-tests.

In this case you should add it to standalone-pre.js too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173108</commentid>
    <comment_count>17</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-10 09:01:05 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; shouldNotBe isn&apos;t defined in the test harness used by
&gt; &gt; run-javascriptcore-tests, but is in the harness use by run-webkit-tests.
&gt; 
&gt; In this case you should add it to standalone-pre.js too.

I&apos;m preparing a patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173120</commentid>
    <comment_count>18</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-03-10 09:39:05 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=155300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173191</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 11:35:04 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 155308</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272426</attachid>
            <date>2016-02-27 16:19:10 -0800</date>
            <delta_ts>2016-03-09 06:57:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153679-20160227171855.patch</filename>
            <type>text/plain</type>
            <size>16413</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NzBhYzFhZjNjNjZmYWZiZjU0NDcyZmI0MDY5Zjc4Mzc2MGU4MTkwLi41NDQyYTdhM2UyMzVjZmVl
Nzc4ZjJiODYwNjNlNzE5MGI1MGU0YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNi0wMi0yNyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIFtJTlRMXSBJbnRsIENvbnN0cnVjdG9ycyBub3Qgd2ViIGNv
bXBhdGlibGUgd2l0aCBPYmplY3QuY3JlYXRlIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd29ya2Fyb3VuZCBmb3IgaW5pdGlhbGl6aW5n
IE51bWJlckZvcm1hdCBhbmQgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0cworICAgICAgICB1c2luZyBP
YmplY3QuY3JlYXRlIGZvbGxvd2VkIGJ5IGNvbnN0cnVjdG9yLmNhbGwuIFRoaXMgaXMgbmVjZXNz
YXJ5IGZvcgorICAgICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGxpYnJhcmllcyBy
ZWx5aW5nIG9uIHYxIGJlaGF2aW9yIG9mIEludGwKKyAgICAgICAgY29uc3RydWN0b3JzLgorCisg
ICAgICAgIENvbGxhdG9yIGRvZXMgbm90IGdldCB0aGUgd29ya2Fyb3VuZCwgc2luY2UgcG9seWZp
bGxzIGRvIG5vdCBpbmNsdWRlIGl0LAorICAgICAgICBhbmQgdGhlcmUgYXJlIG5vdCBhbnkga25v
d24gaW5zdGFuY2VzIG9mIHYyIGluY29tcGF0aWJsZSBsaWJyYXJpZXMuCisKKyAgICAgICAgVGhl
IHdvcmthcm91bmQgaW52b2x2ZXMgY2hlY2tpbmcgZm9yIGFuIG9iamVjdCB0aGF0IGluaGVyaXRz
IGZyb20gdGhlCisgICAgICAgICpGb3JtYXQgY29uc3RydWN0b3IsIGJ1dCB3YXMgbm90IGFjdHVh
bGx5IGluaXRpYWxpemVkIHdpdGggdGhhdCB0eXBlLiBBCisgICAgICAgIHN1YnN0aXR1dGUgaW5z
dGFuY2UgaXMgY3JlYXRlZCBhbmQgYXR0YWNoZWQgdG8gdGhlIG9iamVjdCB1c2luZyBhIHByaXZh
dGUKKyAgICAgICAgbmFtZS4gVGhlIHByb3RvdHlwZSBmdW5jdGlvbnMgdGhlbiBjaGVjayBmb3Ig
dGhlIHByaXZhdGUgcHJvcGVydHkgdG8gdXNlCisgICAgICAgIGluIHBsYWNlIG9mIHRoZSBvcmln
aW5hbCBvYmplY3QuCisKKyAgICAgICAgU2luY2UgdGhpcyBiZWhhdmlvciBpcyBub3QgcGFydCBv
ZiB0aGUgdjIgc3BlYywgaXQgc2hvdWxkIGJlIHJlbW92ZWQgYXMKKyAgICAgICAgc29vbiBhcyB0
aGUgaW5jb21wYXRpYmxlIGJlaGF2aW9yIGlzIG5vIGxvbmdlciBpbiBjb21tb24gdXNlLgorCisg
ICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsSW50
bERhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEludGxOdW1iZXJGb3JtYXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisKIDIwMTYt
MDItMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDTG9vcCBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCA5NzM5YzNlOWJiNjgwMjJkODhjMTYwMGMxOGIyMTlmNDFmZDRhM2Iz
Li44YmI1MTU4NTZkN2ZmZjVkYTIxMGY2ZmI5M2Y4MTUzOWVjYTljYTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM1Nyw2
ICszNTcsNyBAQAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oRGF0ZVRpbWVGb3Jt
YXQpIFwKICAgICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKKyAgICBtYWNybyhpbnRsU3Vic3RpdHV0
ZVZhbHVlKSBcCiAgICAgbWFjcm8odGhpc1RpbWVWYWx1ZSkgXAogICAgIG1hY3JvKG5ld1Rhcmdl
dExvY2FsKSBcCiAgICAgbWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMjBmNzk1NGQ0NzBkZDA0MmM0ZDJlZDVjYmU4NTI5YzA5ZTNj
Yjg5Yi4uMmQ5MWI3ZjViNjE4NmViNDEwZDhmZTc5NjEzNzMyMDAyNTQ3YjAzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMTE1LDkgKzExNSwzMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSog
c3RhdGUpCiAgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rhcmdl
dCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5l
d1RhcmdldC4KICAgICAvLyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxl
ZCBhcyBhIGZ1bmN0aW9uLgogCi0gICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGlu
YXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90
eXBlJSkuCisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5
IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVl
ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgp
KTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHRoaXNWYWx1ZSk7Cisg
ICAgaWYgKCFkYXRlVGltZUZvcm1hdCAmJiBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKHN0
YXRlLCB0aGlzVmFsdWUsIHByb3RvdHlwZSkpIHsKKyAgICAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSB0aGlzVmFsdWUudG9PYmplY3Qoc3RhdGUpOworICAgICAgICBpZiAoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZSh2bSwgY2FsbGVlKTsKKyAgICAgICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKKyAgICAgICAg
SlNWYWx1ZSBsb2NhbGVzID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgICAgICBKU1ZhbHVlIG9w
dGlvbnMgPSBzdGF0ZS0+YXJndW1lbnQoMSk7CisgICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBsb2NhbGVzLCBvcHRpb25zKTsKKworICAgICAg
ICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmludGxTdWJzdGl0
dXRlVmFsdWVQcml2YXRlTmFtZSwgZGF0ZVRpbWVGb3JtYXQpOworICAgICAgICBpZiAoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwor
ICAgIH0KKworICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZy
b21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAg
IGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZSk7
CiAKICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCiAgICAgQVNTRVJU
KGRhdGVUaW1lRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IGZmNDhlYzQ1
NWRhZDE0NTUxY2JiMWQyMzNlN2ViMmI4MGMwN2UyYWEuLjM4OWU2YjFmOWZmZWM5OGE1MDVmZGM4
MDViMzZhYmJjM2UwMjljZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTE3LDYg
KzExNywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqCiAgICAgLy8gMTIuMy4zIEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExl
dCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QuCiAgICAgSW50bERhdGVUaW1lRm9y
bWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlz
VmFsdWUoKSk7CisKKyAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGli
aWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KKyAgICBpZiAoIWR0
ZikKKyAgICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUpKTsKKwogICAgIC8vIDIuIFJldHVybklmQWJydXB0
KGR0ZikuCiAgICAgaWYgKCFkdGYpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKQEAgLTE0Niw2ICsxNTEsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEV4ZWMKIHsKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsRGF0ZVRp
bWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3Jt
YXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8g
cHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVy
bnMuCisgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKKyAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmludGxTdWJzdGl0dXRlVmFsdWVQcml2
YXRlTmFtZSkpOworCiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCBlZDJlNmU3OWZmODNjM2U0OGI1NDMyZjYw
YTgxN2M3YWU0ZDdjNDllLi5kZTNmMDYxODEyOTQ5MTI4ZDRkYzM0NDcwZjJmNjIwOTVmMTNlMGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTExNSw5ICsxMTUsMzAgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0
YXRlKiBzdGF0ZSkKICAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3
VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQg
YmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4g
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9y
ZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3Rv
dHlwZSUpLgorICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0
eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwotICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1i
ZXJGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5jYWxsZWUoKSkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY2FsbGVlID0ganNDYXN0
PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBjYWxsZWUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFt
aWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih0aGlzVmFsdWUpOworICAgIGlmICghbnVtYmVyRm9y
bWF0ICYmIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uoc3RhdGUsIHRoaXNWYWx1ZSwgcHJv
dG90eXBlKSkgeworICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChzdGF0ZSk7CisgICAgICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICBudW1i
ZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZSk7CisgICAgICAg
IEFTU0VSVChudW1iZXJGb3JtYXQpOworICAgICAgICBKU1ZhbHVlIGxvY2FsZXMgPSBzdGF0ZS0+
YXJndW1lbnQoMCk7CisgICAgICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVudCgx
KTsKKyAgICAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwg
bG9jYWxlcywgb3B0aW9ucyk7CisKKyAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUsIG51bWJlckZv
cm1hdCk7CisgICAgICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CisgICAgfQorCisgICAgLy8gMi4gTGV0IG51bWJlckZv
cm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJG
b3JtYXRQcm90b3R5cGUlKS4KKyAgICBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGUodm0sIGNhbGxlZSk7CiAKICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3Jt
YXQpLgogICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRl
eCA1OGM2NGM1M2Q2NTU5MGUzODY0YzZhNjQ5NTMwYWM3NWQ4Njk2YTJlLi5mNTQ2ZGVmYzY5ZTcx
NDA2ZGFkM2VmNjlhYjRiZWJlNjViMDRkZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAt
MTA2LDYgKzEwNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdAogICAgIC8vIDExLjMuMyBJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAgICAgLy8g
MS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KICAgICBJbnRsTnVtYmVyRm9y
bWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFs
dWUoKSk7CisKKyAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxp
dHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KKyAgICBpZiAoIW5mKQor
ICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlz
VmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmludGxTdWJzdGl0
dXRlVmFsdWVQcml2YXRlTmFtZSkpOworCiAgICAgaWYgKCFuZikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAgICAgCkBAIC0xMzQs
NiArMTM5LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0CiB7CiAgICAgLy8gMTEuMy41IElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4w
KQogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CisKKyAgICAvLyBGSVhNRTogV29y
a2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9h
cHBseSBwYXR0ZXJucy4KKyAgICBpZiAoIW51bWJlckZvcm1hdCkKKyAgICAgICAgbnVtYmVyRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
LmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1
ZVByaXZhdGVOYW1lKSk7CisKICAgICBpZiAoIW51bWJlckZvcm1hdCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZGY5MmUxYzIwNWI0MTkwZjNjYzg4ZTgwNjE0NDI3MzY4MGQ1NjEzLi42MTliMzM1
NDI2NjdlMjgwNGZkN2Y4Y2RjMzk1ZjhiZTljZDgxNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTYtMDItMjcgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4K
KworICAgICAgICBbSU5UTF0gSW50bCBDb25zdHJ1Y3RvcnMgbm90IHdlYiBjb21wYXRpYmxlIHdp
dGggT2JqZWN0LmNyZWF0ZSB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBPYmplY3QuY3JlYXRlICsgY29udHJ1Y3Rvci5j
YWxsIGluaXRpYWxpemF0aW9uIG9mIE51bWJlckZvcm1hdAorICAgICAgICBhbmQgRGF0ZVRpbWVG
b3JtYXQgb2JqZWN0cy4KKworICAgICAgICAqIGpzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qczoKKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanM6CisKIDIwMTYtMDItMjcgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBmYWlsaW5n
IHJlZnRlc3RzIGFzIHN1Y2gsIG5vdyB0aGF0IHdlIGRldGVjdCByZWZ0ZXN0IGZhaWx1cmVzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dAppbmRl
eCBhNTg0ZTg0ZTNhOWYyNjA3ZDU5NWFjYTVhODJkZjQ2MmE0YTZmMmVjLi5iNDNhMzhhNDdiZDgw
ZmIyZWVhMWVjMjlkOGM0YjU2NDljNGJhNDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRs
LWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMjE0Niw2ICsyMTQ2LDkgQEAgUEFTUwog
ICAgIHZhciByZXNvbHZlZCA9IEludGwuRGF0ZVRpbWVGb3JtYXQoInpoLVRXIiwgb3B0aW9ucyku
cmVzb2x2ZWRPcHRpb25zKCk7CiAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZXZlcnkob3B0aW9u
ID0+IHJlc29sdmVkW29wdGlvbl0gIT0gbnVsbCkgaXMgdHJ1ZQogUEFTUyB0eXBlb2YgSW50bC5E
YXRlVGltZUZvcm1hdCgiemgtVFciLCB7IGhvdXI6ICJudW1lcmljIiwgbWludXRlOiAibnVtZXJp
YyIgfSkuZm9ybWF0KCkgPT09ICJzdHJpbmciIGlzIHRydWUKK1BBU1MgdmFyIGxlZ2FjeSA9IE9i
amVjdC5jcmVhdGUoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUpO0ludGwuRGF0ZVRpbWVG
b3JtYXQuYXBwbHkobGVnYWN5KSBpcyBsZWdhY3kKK1BBU1MgdmFyIGxlZ2FjeSA9IE9iamVjdC5j
cmVhdGUoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUpO0ludGwuRGF0ZVRpbWVGb3JtYXQu
Y2FsbChsZWdhY3ksICdlbi11LW51LWFyYWInLCB7IHRpbWVab25lOiAnQW1lcmljYS9Mb3NfQW5n
ZWxlcycgfSkuZm9ybWF0KDE0NTEwOTk4NzI2NDEpIGlzICfZodmiL9mi2aUv2aLZoNmh2aUnCitQ
QVNTIHZhciBpbmNvbXBhdCA9IHt9O0ludGwuRGF0ZVRpbWVGb3JtYXQuYXBwbHkoaW5jb21wYXQp
IGlzIG5vdCBpbmNvbXBhdAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50
eHQKaW5kZXggNTQ1ZmVhYWZhOGFkNzZlNWE0Y2VlNjViYTNkZWI3OTEwNWMxYTRhNS4uMzAwMjBi
MDY5ODg0ZTYxYTkxZGQ3MmJiNzZiODNkMzJmZDdmMjhjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pz
L2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMTkzLDYgKzE5Myw5IEBAIFBBU1Mg
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGFuIGluc3Rh
bmNlIG9mIE9iamVjdAogUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zKCkgPT09IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMo
KSBpcyBmYWxzZQogUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRp
b25zLmNhbGwoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQuCiBQQVNTIHZhciBvcHRpb25zID0g
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpOyBkZWxldGUgb3B0
aW9uc1snbG9jYWxlJ107IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpIGlzICd7Im51bWJlcmluZ1N5
c3RlbSI6ImxhdG4iLCJzdHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwi
bWluaW11bUZyYWN0aW9uRGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdy
b3VwaW5nIjp0cnVlfScKK1BBU1MgdmFyIGxlZ2FjeSA9IE9iamVjdC5jcmVhdGUoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlKTtJbnRsLk51bWJlckZvcm1hdC5hcHBseShsZWdhY3kpIGlzIGxl
Z2FjeQorUEFTUyB2YXIgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUpO0ludGwuTnVtYmVyRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJyku
Zm9ybWF0KDEuMjM0NSkgaXMgJ9mh2avZotmj2aUnCitQQVNTIHZhciBpbmNvbXBhdCA9IHt9O0lu
dGwuTnVtYmVyRm9ybWF0LmFwcGx5KGluY29tcGF0KSBpcyBub3QgaW5jb21wYXQKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwppbmRleCA1ZmNiNTg3
OTEwM2QxMTAyMDFkNzM1MDEzMzkyZWE3YzlkZjg2NDFhLi5hOTNhMjQ4ZjhiN2RkOTA1M2Y2ZDk5
MjBiOGEyNDY1MjM2MTBiMzkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvaW50bC1kYXRldGltZWZvcm1hdC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtNDk0LDMgKzQ5NCw5IEBAIGZvciAobGV0IGxv
Y2FsZSBvZiBsb2NhbGVzU2FtcGxlKSB7CiAgICAgT2JqZWN0LmtleXMob3B0aW9ucykuZXZlcnko
b3B0aW9uID0+IHJlc29sdmVkW29wdGlvbl0gIT0gbnVsbClgKTsKICAgc2hvdWxkQmVUcnVlKGB0
eXBlb2YgSW50bC5EYXRlVGltZUZvcm1hdCgiJHtsb2NhbGV9IiwgeyBob3VyOiAibnVtZXJpYyIs
IG1pbnV0ZTogIm51bWVyaWMiIH0pLmZvcm1hdCgpID09PSAic3RyaW5nImApOwogfQorCisvLyBM
ZWdhY3kgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMAorbGV0IGxlZ2FjeUluaXQgPSAi
dmFyIGxlZ2FjeSA9IE9iamVjdC5jcmVhdGUoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUp
OyI7CitzaG91bGRCZShsZWdhY3lJbml0ICsgIkludGwuRGF0ZVRpbWVGb3JtYXQuYXBwbHkobGVn
YWN5KSIsICJsZWdhY3kiKTsKK3Nob3VsZEJlKGxlZ2FjeUluaXQgKyAiSW50bC5EYXRlVGltZUZv
cm1hdC5jYWxsKGxlZ2FjeSwgJ2VuLXUtbnUtYXJhYicsIHsgdGltZVpvbmU6ICdBbWVyaWNhL0xv
c19BbmdlbGVzJyB9KS5mb3JtYXQoMTQ1MTA5OTg3MjY0MSkiLCAiJ9mh2aIv2aLZpS/Zotmg2aHZ
pSciKTsKK3Nob3VsZE5vdEJlKCJ2YXIgaW5jb21wYXQgPSB7fTtJbnRsLkRhdGVUaW1lRm9ybWF0
LmFwcGx5KGluY29tcGF0KSIsICJpbmNvbXBhdCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IDEyZTQ4NjA3YmExNzljNmNmMDUy
ZWVkMDFhODUxMWY2YjRlMzIyYzguLjQ1YmIzNWIzZWMxMzU4YWYwOWYyOWM5NzBmMDZjZmYyZTI2
OWM2OGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJl
cmZvcm1hdC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJm
b3JtYXQuanMKQEAgLTMzNywzICszMzcsOSBAQCBzaG91bGRUaHJvdygiSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIiwgIidUeXBlRXJyb3I6CiAKIC8v
IFJldHVybnMgdGhlIGRlZmF1bHQgb3B0aW9ucy4KIHNob3VsZEJlKCJ2YXIgb3B0aW9ucyA9IElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKTsgZGVsZXRlIG9wdGlv
bnNbJ2xvY2FsZSddOyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSIsICdcJ3sibnVtYmVyaW5nU3lz
dGVtIjoibGF0biIsInN0eWxlIjoiZGVjaW1hbCIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIjoxLCJt
aW5pbXVtRnJhY3Rpb25EaWdpdHMiOjAsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyI6MywidXNlR3Jv
dXBpbmciOnRydWV9XCcnKTsKKworLy8gTGVnYWN5IGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAKK2xldCBsZWdhY3lJbml0ID0gInZhciBsZWdhY3kgPSBPYmplY3QuY3JlYXRlKEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZSk7IjsKK3Nob3VsZEJlKGxlZ2FjeUluaXQgKyAiSW50bC5O
dW1iZXJGb3JtYXQuYXBwbHkobGVnYWN5KSIsICJsZWdhY3kiKTsKK3Nob3VsZEJlKGxlZ2FjeUlu
aXQgKyAiSW50bC5OdW1iZXJGb3JtYXQuY2FsbChsZWdhY3ksICdlbi11LW51LWFyYWInKS5mb3Jt
YXQoMS4yMzQ1KSIsICIn2aHZq9mi2aPZpSciKTsKK3Nob3VsZE5vdEJlKCJ2YXIgaW5jb21wYXQg
PSB7fTtJbnRsLk51bWJlckZvcm1hdC5hcHBseShpbmNvbXBhdCkiLCAiaW5jb21wYXQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273426</attachid>
            <date>2016-03-09 06:58:00 -0800</date>
            <delta_ts>2016-03-09 21:28:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153679-20160309075747.patch</filename>
            <type>text/plain</type>
            <size>17083</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3ODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MmE2MTFiZmMzZTAxMTg2NmUzMDIxZmY2NmRmNjYzZDM4ZjE4YmI2Li5kNTNjOTQ5OTE1ZDM2YWRh
Y2MzODljNDZiZGUwMjU2NzA0NmFmNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNi0wMy0wOSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIFtJTlRMXSBJbnRsIENvbnN0cnVjdG9ycyBub3Qgd2ViIGNv
bXBhdGlibGUgd2l0aCBPYmplY3QuY3JlYXRlIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgd29ya2Fyb3VuZCBmb3IgaW5pdGlhbGl6aW5n
IE51bWJlckZvcm1hdCBhbmQgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0cworICAgICAgICB1c2luZyBP
YmplY3QuY3JlYXRlIGZvbGxvd2VkIGJ5IGNvbnN0cnVjdG9yLmNhbGwuIFRoaXMgaXMgbmVjZXNz
YXJ5IGZvcgorICAgICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGxpYnJhcmllcyBy
ZWx5aW5nIG9uIHYxIGJlaGF2aW9yIG9mIEludGwKKyAgICAgICAgY29uc3RydWN0b3JzLgorCisg
ICAgICAgIENvbGxhdG9yIGRvZXMgbm90IGdldCB0aGUgd29ya2Fyb3VuZCwgc2luY2UgcG9seWZp
bGxzIGRvIG5vdCBpbmNsdWRlIGl0LAorICAgICAgICBhbmQgdGhlcmUgYXJlIG5vdCBhbnkga25v
d24gaW5zdGFuY2VzIG9mIHYyIGluY29tcGF0aWJsZSBsaWJyYXJpZXMuCisKKyAgICAgICAgVGhl
IHdvcmthcm91bmQgaW52b2x2ZXMgY2hlY2tpbmcgZm9yIGFuIG9iamVjdCB0aGF0IGluaGVyaXRz
IGZyb20gdGhlCisgICAgICAgICpGb3JtYXQgY29uc3RydWN0b3IsIGJ1dCB3YXMgbm90IGFjdHVh
bGx5IGluaXRpYWxpemVkIHdpdGggdGhhdCB0eXBlLiBBCisgICAgICAgIHN1YnN0aXR1dGUgaW5z
dGFuY2UgaXMgY3JlYXRlZCBhbmQgYXR0YWNoZWQgdG8gdGhlIG9iamVjdCB1c2luZyBhIHByaXZh
dGUKKyAgICAgICAgbmFtZS4gVGhlIHByb3RvdHlwZSBmdW5jdGlvbnMgdGhlbiBjaGVjayBmb3Ig
dGhlIHByaXZhdGUgcHJvcGVydHkgdG8gdXNlCisgICAgICAgIGluIHBsYWNlIG9mIHRoZSBvcmln
aW5hbCBvYmplY3QuCisKKyAgICAgICAgU2luY2UgdGhpcyBiZWhhdmlvciBpcyBub3QgcGFydCBv
ZiB0aGUgdjIgc3BlYywgaXQgc2hvdWxkIGJlIHJlbW92ZWQgYXMKKyAgICAgICAgc29vbiBhcyB0
aGUgaW5jb21wYXRpYmxlIGJlaGF2aW9yIGlzIG5vIGxvbmdlciBpbiBjb21tb24gdXNlLgorCisg
ICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsSW50
bERhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEludGxOdW1iZXJGb3JtYXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisKIDIwMTYt
MDMtMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hv
dWxkIGJlIGFibGUgdG8gY29uc3RhbnQtZm9sZCBzdHJpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBmZDAwNjk4NGMxZWE3
OWMwZGQzM2M0NDIwNzY5Njc1MGFkZjRjN2YyLi5jN2U5NTM1NjZiNjZlZDVmOTFkOGZjMmI0YWJl
MWIxMDQ0NmFhNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTM1OCw2ICszNTgsNyBAQAogICAgIG1hY3JvKENvbGxhdG9y
KSBcCiAgICAgbWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyhOdW1iZXJGb3JtYXQp
IFwKKyAgICBtYWNybyhpbnRsU3Vic3RpdHV0ZVZhbHVlKSBcCiAgICAgbWFjcm8odGhpc1RpbWVW
YWx1ZSkgXAogICAgIG1hY3JvKG5ld1RhcmdldExvY2FsKSBcCiAgICAgbWFjcm8oZGVyaXZlZENv
bnN0cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZTkxN2VlMjVl
OTFiNjgyYjY4ZTgwZWQzMjY2N2RlYWRiNjU4NmM0MS4uNWIwZTVmMDcwZDFhYjViMmU5YTk0NTU5
OGY5ZmYzODI0ZjZlMWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMTE3
LDE3ICsxMTcsMzUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbElu
dGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElmIE5ld1Rhcmdl
dCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmpl
Y3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlz
IGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIC8vIDIu
IExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdU
YXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwotICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
Kj4oc3RhdGUtPmNhbGxlZSgpKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iq
IGNhbGxlZSA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5j
YWxsZWUoKSk7CisKKyAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGli
aWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih0aGlz
VmFsdWUpOworICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBjYWxsZWUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
KTsKKyAgICAgICAgaWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uoc3RhdGUsIHRoaXNW
YWx1ZSwgcHJvdG90eXBlKSkgeworICAgICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0
aGlzVmFsdWUudG9PYmplY3Qoc3RhdGUpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworCisgICAgICAgICAgICBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlKHZtLCBjYWxsZWUpOworICAgICAgICAgICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRp
YWxpemVEYXRlVGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFy
Z3VtZW50KDEpKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUsIGRhdGVUaW1lRm9ybWF0KTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KIAor
ICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1
Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgogICAgIC8vIDMuIFJl
dHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KLSAgICBBU1NFUlQoZGF0ZVRpbWVGb3JtYXQp
OworICAgIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGNh
bGxlZSk7CiAKICAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVU
aW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KLSAgICBKU1ZhbHVlIGxvY2FsZXMgPSBzdGF0
ZS0+YXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBvcHRpb25zID0gc3RhdGUtPmFyZ3VtZW50KDEp
OwotICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBs
b2NhbGVzLCBvcHRpb25zKTsKKyAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcAppbmRleCBkMmM1NGQ2NGNiYmJjZjEwMDJmNmU1MjYxZDE3ZTU4NmNj
ZWE5MzcyLi5lNjgzNTE1ZWY1NDkzMGQ4MTU1NzI1ZTYzN2EyMzg0MzBkODc2MTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTExNyw2ICsxMTcsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhl
Y1N0YXRlKgogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRpbWVGb3Jt
YXQgb2JqZWN0LgogICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5hbWljQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6
IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNh
bGwvYXBwbHkgcGF0dGVybnMuCisgICAgaWYgKCFkdGYpCisgICAgICAgIGR0ZiA9IGpzRHluYW1p
Y0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwg
c3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1l
KSk7CisKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAgIGlmICghZHRmKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxp
dGVyYWwoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCIp
KSk7CkBAIC0xNDgsNiArMTUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjCiB7CiAgICAg
Ly8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygp
IChFQ01BLTQwMiAyLjApCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9
IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsK
KworICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRo
IEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIGlmICghZGF0ZVRpbWVGb3Jt
YXQpCisgICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUpKTsKKwogICAgIGlmICghZGF0
ZVRpbWVGb3JtYXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMjZjNmQ0NjM1N2VlYjk3ODZjNzliODkxYTYxODQ3ODAxZDliZWQxNS4uMGExMTA3OGZl
NTY0NDg5YWUzMjBmZjMwNGNmNGU5Y2Y1OTU0NjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0xMTcsMTcgKzExNywzNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElm
IE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5j
dGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3
VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAot
ICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0
b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCisgICAgLy8gRklYTUU6IFdv
cmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwv
YXBwbHkgcGF0dGVybnMuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgSW50bE51bWJl
ckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nh
c3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKSk7CisgICAg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKKworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHRoaXNWYWx1ZSk7CisgICAg
aWYgKCFudW1iZXJGb3JtYXQpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjYWxsZWUt
PmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgaWYg
KEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uoc3RhdGUsIHRoaXNWYWx1ZSwgcHJvdG90eXBl
KSkgeworICAgICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmpl
Y3Qoc3RhdGUpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
ICAgICAgICBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxl
ZSk7CisgICAgICAgICAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgICAgICAg
ICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVO
YW1lLCBudW1iZXJGb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aGlzVmFsdWUpOworICAgICAgICB9CisgICAgfQogCisgICAgLy8gMi4gTGV0IG51bWJlckZvcm1h
dCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJGb3Jt
YXRQcm90b3R5cGUlKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgot
ICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOworICAgIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJG
b3JtYXQ6OmNyZWF0ZSh2bSwgY2FsbGVlKTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXpl
TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1
ZSBsb2NhbGVzID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0
YXRlLT5hcmd1bWVudCgxKTsKLSAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoKnN0YXRlLCBsb2NhbGVzLCBvcHRpb25zKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVu
dCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDRiYjJlZTQ5MjJmZWIwZjUxODcwYTkxMGRiMTJlNTI4
NzFiZGRkNTIuLjdjZGJlYjRhMjllZjFiOTFiMjkyNzdhNmExODZlOGI0ZDllZTYxMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMDYsNiArMTA2LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3Rh
dGUqIHN0CiAgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
KEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2Jq
ZWN0LgogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKworICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5k
IHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBh
dHRlcm5zLgorICAgIGlmICghbmYpCisgICAgICAgIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVt
YmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJv
cGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKSk7CisKICAgICBpZiAo
IW5mKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRl
LCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9y
bWF0IikpKTsKICAgICAKQEAgLTEzNiw2ICsxNDEsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVj
U3QKIHsKICAgICAvLyAxMS4zLjUgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
KTsKKworICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3
aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIGlmICghbnVtYmVyRm9y
bWF0KQorICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5h
bWVzLT5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUpKTsKKwogICAgIGlmICghbnVtYmVy
Rm9ybWF0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0
YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgTnVtYmVyRm9ybWF0IikpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2MzVhODZlZWNmZGNiZTQ4YzEwY2JkMGZh
M2ViOWNjZGYzMjMwOGEuLjgxM2IyYWFlNjliZDhmMGY1NDczMmFmNDczYTEzZDJjMmJhYTI0M2Ug
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMy0wOSAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIFtJTlRMXSBJbnRsIENvbnN0cnVjdG9y
cyBub3Qgd2ViIGNvbXBhdGlibGUgd2l0aCBPYmplY3QuY3JlYXRlIHVzYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIE9iamVj
dC5jcmVhdGUgKyBjb250cnVjdG9yLmNhbGwgaW5pdGlhbGl6YXRpb24gb2YgTnVtYmVyRm9ybWF0
CisgICAgICAgIGFuZCBEYXRlVGltZUZvcm1hdCBvYmplY3RzLgorCisgICAgICAgICoganMvaW50
bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvaW50bC1udW1iZXJm
b3JtYXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWRhdGV0
aW1lZm9ybWF0LmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1h
dC5qczoKKwogMjAxNi0wMy0wOSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1hZ2VEb2N1bWVudHMgbGVhayB0aGVpciB3b3JsZC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvaW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQKaW5kZXggZjU4ZDRhOWIyYzc0
OTVkNWFhODRkMzBmYzM2OWZmNTk3NTkzOGRlYS4uNjQ0ODZlYTc5Njg3MGVkZTEzZmIwMjU0MmE2
NTBiNDRjOTg5ZmJiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZv
cm1hdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1h
dC1leHBlY3RlZC50eHQKQEAgLTIxNDcsNiArMjE0Nyw5IEBAIFBBU1MKICAgICB2YXIgcmVzb2x2
ZWQgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCJ6aC1UVyIsIG9wdGlvbnMpLnJlc29sdmVkT3B0aW9u
cygpOwogICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmV2ZXJ5KG9wdGlvbiA9PiByZXNvbHZlZFtv
cHRpb25dICE9IG51bGwpIGlzIHRydWUKIFBBU1MgdHlwZW9mIEludGwuRGF0ZVRpbWVGb3JtYXQo
InpoLVRXIiwgeyBob3VyOiAibnVtZXJpYyIsIG1pbnV0ZTogIm51bWVyaWMiIH0pLmZvcm1hdCgp
ID09PSAic3RyaW5nIiBpcyB0cnVlCitQQVNTIHZhciBsZWdhY3kgPSBPYmplY3QuY3JlYXRlKElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlKTtJbnRsLkRhdGVUaW1lRm9ybWF0LmFwcGx5KGxl
Z2FjeSkgaXMgbGVnYWN5CitQQVNTIHZhciBsZWdhY3kgPSBPYmplY3QuY3JlYXRlKEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlKTtJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwobGVnYWN5LCAn
ZW4tdS1udS1hcmFiJywgeyB0aW1lWm9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pLmZvcm1h
dCgxNDUxMDk5ODcyNjQxKSBpcyAn2aHZoi/ZotmlL9mi2aDZodmlJworUEFTUyB2YXIgaW5jb21w
YXQgPSB7fTtJbnRsLkRhdGVUaW1lRm9ybWF0LmFwcGx5KGluY29tcGF0KSBpcyBub3QgaW5jb21w
YXQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CmluZGV4IGRmOGNi
OGVhMzFjY2E5MzY2NmE2YTAzNmIyZjY4ODU2ZDUxYWRmNGMuLjI2YmRjMzMwMDZjYTM0NDNkMmU0
ODU4OGE5NjdmNDEwZDcwMWRhZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwtbnVt
YmVyZm9ybWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZv
cm1hdC1leHBlY3RlZC50eHQKQEAgLTE5NCw2ICsxOTQsOSBAQCBQQVNTIEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QK
IFBBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgZmFsc2UKIFBB
U1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgTnVtYmVyRm9ybWF0LgogUEFTUyB2YXIgb3B0aW9ucyA9IEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKTsgZGVsZXRlIG9wdGlvbnNbJ2xvY2FsZSdd
OyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSBpcyAneyJudW1iZXJpbmdTeXN0ZW0iOiJsYXRuIiwi
c3R5bGUiOiJkZWNpbWFsIiwibWluaW11bUludGVnZXJEaWdpdHMiOjEsIm1pbmltdW1GcmFjdGlv
bkRpZ2l0cyI6MCwibWF4aW11bUZyYWN0aW9uRGlnaXRzIjozLCJ1c2VHcm91cGluZyI6dHJ1ZX0n
CitQQVNTIHZhciBsZWdhY3kgPSBPYmplY3QuY3JlYXRlKEludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZSk7SW50bC5OdW1iZXJGb3JtYXQuYXBwbHkobGVnYWN5KSBpcyBsZWdhY3kKK1BBU1MgdmFy
IGxlZ2FjeSA9IE9iamVjdC5jcmVhdGUoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlKTtJbnRs
Lk51bWJlckZvcm1hdC5jYWxsKGxlZ2FjeSwgJ2VuLXUtbnUtYXJhYicpLmZvcm1hdCgxLjIzNDUp
IGlzICfZodmr2aLZo9mlJworUEFTUyB2YXIgaW5jb21wYXQgPSB7fTtJbnRsLk51bWJlckZvcm1h
dC5hcHBseShpbmNvbXBhdCkgaXMgbm90IGluY29tcGF0CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKaW5kZXggOTI3YTkzMGJlZTUyNzBhNDI3NTkx
NzUyNGRlODg3NGIzNmY1ZTk5OC4uZmJmODkwYTkwYTgwOGNiYTc2YzY4MmUxOGQ5M2Q1MWY0ODRh
YjkwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRp
bWVmb3JtYXQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRp
bWVmb3JtYXQuanMKQEAgLTQ5NywzICs0OTcsOSBAQCBmb3IgKGxldCBsb2NhbGUgb2YgbG9jYWxl
c1NhbXBsZSkgewogICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmV2ZXJ5KG9wdGlvbiA9PiByZXNv
bHZlZFtvcHRpb25dICE9IG51bGwpYCk7CiAgIHNob3VsZEJlVHJ1ZShgdHlwZW9mIEludGwuRGF0
ZVRpbWVGb3JtYXQoIiR7bG9jYWxlfSIsIHsgaG91cjogIm51bWVyaWMiLCBtaW51dGU6ICJudW1l
cmljIiB9KS5mb3JtYXQoKSA9PT0gInN0cmluZyJgKTsKIH0KKworLy8gTGVnYWN5IGNvbXBhdGli
aWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAKK2xldCBsZWdhY3lJbml0ID0gInZhciBsZWdhY3kgPSBP
YmplY3QuY3JlYXRlKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlKTsiOworc2hvdWxkQmUo
bGVnYWN5SW5pdCArICJJbnRsLkRhdGVUaW1lRm9ybWF0LmFwcGx5KGxlZ2FjeSkiLCAibGVnYWN5
Iik7CitzaG91bGRCZShsZWdhY3lJbml0ICsgIkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbChsZWdh
Y3ksICdlbi11LW51LWFyYWInLCB7IHRpbWVab25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSku
Zm9ybWF0KDE0NTEwOTk4NzI2NDEpIiwgIifZodmiL9mi2aUv2aLZoNmh2aUnIik7CitzaG91bGRO
b3RCZSgidmFyIGluY29tcGF0ID0ge307SW50bC5EYXRlVGltZUZvcm1hdC5hcHBseShpbmNvbXBh
dCkiLCAiaW5jb21wYXQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRs
LW51bWJlcmZvcm1hdC5qcwppbmRleCA4MTI3OTQ0NTk1ODVmNmE3OWQ1NWZkYjg5YzhjNGNmY2Q3
MTUzMzk0Li43NjE3MTE1OGViNjdlYjYxMWIwODg0YTE2M2YyYWU5NjkwMjI0NTVkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC0z
MzgsMyArMzM4LDkgQEAgc2hvdWxkVGhyb3coIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOgogCiAvLyBSZXR1cm5zIHRoZSBk
ZWZhdWx0IG9wdGlvbnMuCiBzaG91bGRCZSgidmFyIG9wdGlvbnMgPSBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCk7IGRlbGV0ZSBvcHRpb25zWydsb2NhbGUnXTsg
SlNPTi5zdHJpbmdpZnkob3B0aW9ucykiLCAnXCd7Im51bWJlcmluZ1N5c3RlbSI6ImxhdG4iLCJz
dHlsZSI6ImRlY2ltYWwiLCJtaW5pbXVtSW50ZWdlckRpZ2l0cyI6MSwibWluaW11bUZyYWN0aW9u
RGlnaXRzIjowLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiOjMsInVzZUdyb3VwaW5nIjp0cnVlfVwn
Jyk7CisKKy8vIExlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wCitsZXQgbGVn
YWN5SW5pdCA9ICJ2YXIgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUpOyI7CitzaG91bGRCZShsZWdhY3lJbml0ICsgIkludGwuTnVtYmVyRm9ybWF0LmFw
cGx5KGxlZ2FjeSkiLCAibGVnYWN5Iik7CitzaG91bGRCZShsZWdhY3lJbml0ICsgIkludGwuTnVt
YmVyRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJykuZm9ybWF0KDEuMjM0NSkiLCAi
J9mh2avZotmj2aUnIik7CitzaG91bGROb3RCZSgidmFyIGluY29tcGF0ID0ge307SW50bC5OdW1i
ZXJGb3JtYXQuYXBwbHkoaW5jb21wYXQpIiwgImluY29tcGF0Iik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>