<?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>159400</bug_id>
          
          <creation_ts>2016-07-04 00:48:31 -0700</creation_ts>
          <short_desc>%TypedArray%.prototype.indexOf is coercing non-integers or non-floats to numbers wrongly</short_desc>
          <delta_ts>2016-07-18 12:15:55 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>natashenka</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207611</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-07-04 00:48:31 -0700</bug_when>
    <thetext>Current implementation of %TypedArray%.prototype.indexOf is coercing the argument to Array type and generating strange results, which are potential bug generators. Check the following example:

&gt;&gt;&gt; new UInt8Array([0, 1, 2]).indexOf(&quot;abc&quot;);
0

The return value is 0 because &quot;abc&quot; is being converted to 0. It makes more sense of the result is -1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211257</commentid>
    <comment_count>1</comment_count>
      <attachid>283713</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-14 17:26:48 -0700</bug_when>
    <thetext>Created attachment 283713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211271</commentid>
    <comment_count>2</comment_count>
      <attachid>283718</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-14 17:42:46 -0700</bug_when>
    <thetext>Created attachment 283718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211277</commentid>
    <comment_count>3</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2016-07-14 17:57:08 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 283713 [details]
&gt; Patch

Hey Keith, I took a look in your patch, but I can&apos;t comment there, so I am going to point the most important thing I saw =).
The verification:

if (!valueToFind.isNumber())
    return JSValue::encode(jsNumber(-1));

is not enough to implement indexOf because of 3 reasons:

1. It is against spec, because it doesn&apos;t perform toInteger. (https://tc39.github.io/ecma262/2016/#sec-array.prototype.indexof), so, if fromIndex is an object, valueOf need to be called. Take a look in this Benjamin&apos;s comment in my last patch for %TypedArray%.prototype.includes: https://bugs.webkit.org/show_bug.cgi?id=159385#c38 

2. Values that are numbers will be coerced improperly:
E.g. new Int32Array([1, 2, 3]).indexOf(2.5); // returns 1. Should return -1.

I created a new method in ToNativeFromValue.h with the following signature &quot;bool toNativeFromValue(ExecState* exec, JSValue value, typename Adaptor::Type&amp; result)&quot;. This method returns false if it is not possible convert the JSValue to nativeNumber in the Array. So, it already checks cases such as:

1. new UInt8Array([0]).indexOf(NaN); // should return -1. 
2. new  UInt8Array([0]).indexOf(256); // should return -1 because of UInt8 boundaries. 
2. new UInt8Array([2]).indexOf(2.5); // should return -1, because 2.5 is not an element of UInt8Array.
...

There are a lot of cases that need to be considered. The best source of this information is &quot;LayoutTests/js/script-tests/typed-array-includes.js&quot;, where almost all &quot;.includes&quot; calls should be replaced to &quot;indexOf&quot; and when result should be false, it shall be -1.

3. NaN cases aren&apos;t being considered.

Hope helped =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211286</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-14 18:25:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Created attachment 283713 [details]
&gt; &gt; Patch
&gt; 
&gt; Hey Keith, I took a look in your patch, but I can&apos;t comment there, so I am
&gt; going to point the most important thing I saw =).
&gt; The verification:
&gt; 
&gt; if (!valueToFind.isNumber())
&gt;     return JSValue::encode(jsNumber(-1));
&gt; 
&gt; is not enough to implement indexOf because of 3 reasons:
&gt; 
&gt; 1. It is against spec, because it doesn&apos;t perform toInteger.
&gt; (https://tc39.github.io/ecma262/2016/#sec-array.prototype.indexof), so, if
&gt; fromIndex is an object, valueOf need to be called. Take a look in this
&gt; Benjamin&apos;s comment in my last patch for %TypedArray%.prototype.includes:
&gt; https://bugs.webkit.org/show_bug.cgi?id=159385#c38 
&gt; 
&gt; 2. Values that are numbers will be coerced improperly:
&gt; E.g. new Int32Array([1, 2, 3]).indexOf(2.5); // returns 1. Should return -1.
&gt; 
&gt; I created a new method in ToNativeFromValue.h with the following signature
&gt; &quot;bool toNativeFromValue(ExecState* exec, JSValue value, typename
&gt; Adaptor::Type&amp; result)&quot;. This method returns false if it is not possible
&gt; convert the JSValue to nativeNumber in the Array. So, it already checks
&gt; cases such as:
&gt; 
&gt; 1. new UInt8Array([0]).indexOf(NaN); // should return -1. 
&gt; 2. new  UInt8Array([0]).indexOf(256); // should return -1 because of UInt8
&gt; boundaries. 
&gt; 2. new UInt8Array([2]).indexOf(2.5); // should return -1, because 2.5 is not
&gt; an element of UInt8Array.
&gt; ...
&gt; 
&gt; There are a lot of cases that need to be considered. The best source of this
&gt; information is &quot;LayoutTests/js/script-tests/typed-array-includes.js&quot;, where
&gt; almost all &quot;.includes&quot; calls should be replaced to &quot;indexOf&quot; and when result
&gt; should be false, it shall be -1.
&gt; 
&gt; 3. NaN cases aren&apos;t being considered.
&gt; 
&gt; Hope helped =).

Good catch I forgot about those points. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211519</commentid>
    <comment_count>5</comment_count>
      <attachid>283781</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-15 12:19:22 -0700</bug_when>
    <thetext>Created attachment 283781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211540</commentid>
    <comment_count>6</comment_count>
      <attachid>283781</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-15 13:35:39 -0700</bug_when>
    <thetext>Comment on attachment 283781
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211552</commentid>
    <comment_count>7</comment_count>
      <attachid>283781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 13:59:42 -0700</bug_when>
    <thetext>Comment on attachment 283781
Patch

Clearing flags on attachment: 283781

Committed r203297: &lt;http://trac.webkit.org/changeset/203297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211553</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 13:59:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212025</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-18 11:17:15 -0700</bug_when>
    <thetext>*** Bug 159241 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212049</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-07-18 12:15:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/27324561&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283713</attachid>
            <date>2016-07-14 17:26:48 -0700</date>
            <delta_ts>2016-07-14 17:42:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159400-20160714172601.patch</filename>
            <type>text/plain</type>
            <size>11313</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDE3ZmQ1NWM4YzI3NzIwMDgwNzQyMDBlMDNhMmQ3NGY0YzEyZDJkLi43MmRjNzdhOTAxNjEyYTlh
NjBiYmUyOWRhYmExYmNlMDVmYmMwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNi0wNy0xNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICAlVHlwZWRBcnJheSUucHJvdG90eXBlLmluZGV4T2YgaXMgY29lcmNp
bmcgbm9uLWludGVnZXJzIG9yIG5vbi1mbG9hdHMgdG8gbnVtYmVycyB3cm9uZ2x5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IGNvZXJjaW9uIG9mIG5vbi1udW1iZXJzIGluIGluZGV4T2YvbGFzdEluZGV4T2YuCisgICAgICAg
IEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSB3aXRoIGluY2x1ZGVzIHdo
ZXJlIGl0CisgICAgICAgIHdvdWxkIG5vdCBjaGVjayB0aGF0IHRoZSBidWZmZXIgcmVtYWluZWQg
bm9uLW5ldXRlcmVkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhlIHRvSW50ZWdlcigpIGZ1bmN0
aW9uLiBMYXN0bHksIHNvbWUgZXh0cmEgcmVsZWFzZQorICAgICAgICBhc3NlcnRzIGhhdmUgYmVl
biBhZGRlZCBpbiBzb21lIHBsYWNlcyB0byBpbmZvcm0gdXMgb2YgYW55IGlzc3VlcworICAgICAg
ICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6c29ydCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0
aGluKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVk
ZXMpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4
T2YpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1bmN0aW9ucy13aXRoLW5l
dXRlcmVkLmpzOgorICAgICAgICAoY2FsbFdpdGhBcmdzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvdHlwZWRhcnJheS1pbmNsdWRlcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNz
L3R5cGVkYXJyYXktaW5kZXhPZi5qczoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHlwZWRhcnJh
eS1sYXN0SW5kZXhPZi5qczoKKwogMjAxNi0wNy0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KIAogICAgICAgICBZQVJSIHVzZXMgbWl4dHVyZSBvZiBpbnQgYW5kIHVuc2ln
bmVkIHZhbHVlcyB0byBpbmRleCBpbnRvIHN1YmplY3Qgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCA3NGY3M2QwNWFjM2RiNDdlMmQxYWNlOTZkNGRlMzY1ZTIwZjI0OTU0Li42OGZlNDUwZjg5OWI0
NjNjYzc4ZWJjZjNhYWJjZjAwMjdmY2RmNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTE5MCw2ICsx
OTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTmV1dGVyZWQoKSk7CiAgICAgICAgIHN3aXRjaCAoQWRhcHRvcjo6dHlwZVZh
bHVlKSB7CiAgICAgICAgIGNhc2UgVHlwZUZsb2F0MzI6CiAgICAgICAgICAgICBzb3J0RmxvYXQ8
aW50MzJfdD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCmluZGV4IDMxMjhlMTQzZmY4MzEwYTk3OTJmZmFlNmI5ZmMwNTRiOTU5YTBjYzkuLmY0N2Vl
NDNjZmEyNzczYjRkMWMxZmMxZGE4NmQ3NjcwZjMwMDZiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtMTU0LDE0ICsxNTQsMTQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmND
b3B5V2l0aGluKEV4ZWNTdGF0ZSoKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Ci0KICAgICBpZiAoZmluYWwgPCBmcm9tKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAogICAg
IGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFs
IC0gZnJvbSk7CiAKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUq
IGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBtZW1tb3ZlKGFycmF5ICsg
dG8sIGFycmF5ICsgZnJvbSwgY291bnQgKiB0aGlzT2JqZWN0LT5lbGVtZW50U2l6ZSk7CiAKQEAg
LTE3MSw2ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0YXRlKgogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwpAQCAtMTgzLDYgKzE4NCw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5j
bHVkZXMoRXhlY1N0YXRlKiBlCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKCF2
YWx1ZVRvRmluZC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwpAQCAtMTkyLDkgKzE5NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0
ZSogZQogICAgIGlmICghVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoZXhlYywg
dmFsdWVUb0ZpbmQsIHRhcmdldCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGZhbHNlKSk7CiAKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisKICAgICBpZiAoc3RkOjppc25hbihzdGF0aWNfY2FzdDxkb3VibGU+
KHRhcmdldCkpKSB7CiAgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgewog
ICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oc3RhdGljX2Nhc3Q8ZG91YmxlPihhcnJheVtpbmRl
eF0pKSkKQEAgLTIzMiwxMCArMjM4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKKyAgICBpZiAoIXZhbHVlVG9GaW5kLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKKwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxl
bWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICB0eXBlbmFt
ZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlIHRhcmdldCA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlKGV4ZWMsIHZhbHVlVG9GaW5kKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNPYmpl
Y3QtPmlzTmV1dGVyZWQoKSk7CiAKICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgp
IHsKICAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSB0YXJnZXQpCkBAIC0yODcsNiArMjk2LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjE2CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwpAQCAtMzE0LDEwICszMjQsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3Rh
dGUKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JN
ZXNzYWdlKTsKIAorICAgIGlmICghdmFsdWVUb0ZpbmQuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOworCiAgICAgdHlwZW5hbWUgVmlld0Ns
YXNzOjpFbGVtZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAg
IHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUgdGFyZ2V0ID0gVmlld0NsYXNzOjp0b0Fk
YXB0b3JOYXRpdmVGcm9tVmFsdWUoZXhlYywgdmFsdWVUb0ZpbmQpOwotICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKTsKIAogICAgIGZvciAoOyBpbmRleCA+PSAwOyAtLWlu
ZGV4KSB7CiAgICAgICAgIGlmIChhcnJheVtpbmRleF0gPT0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1bmN0aW9ucy13
aXRoLW5ldXRlcmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBl
ZGFycmF5LWZ1bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpzCmluZGV4IGUzOWZiNDFkYjdkNDY4OWZl
M2M2M2Q0MTU2YmMwNjc4ODA4NDNiNTAuLjBlNjZlYzk0Y2U4M2VkNDZlMTE0ZGI3ZTUzNWM3M2Jm
Mjk2ZmZhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
dHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQu
anMKQEAgLTgzLDYgKzgzLDcgQEAgcHJvdG90eXBlRnVuY3Rpb25zID0gWwogICAgIHsgZnVuYzpw
cm90by5maW5kSW5kZXgsIGFyZ3M6WyJmdW5jIl0gfSwKICAgICB7IGZ1bmM6cHJvdG8uZm9yRWFj
aCwgYXJnczpbImZ1bmMiXSB9LAogICAgIHsgZnVuYzpwcm90by5pbmRleE9mLCBhcmdzOlsibmEi
LCAicHJpbSJdIH0sCisgICAgeyBmdW5jOnByb3RvLmluY2x1ZGVzLCBhcmdzOlsibmEiLCAicHJp
bSJdIH0sCiAgICAgeyBmdW5jOnByb3RvLmpvaW4sIGFyZ3M6WyJwcmltIl0gfSwKICAgICB7IGZ1
bmM6cHJvdG8ubGFzdEluZGV4T2YsIGFyZ3M6WyJuYSIsICJwcmltIl0gfSwKICAgICB7IGZ1bmM6
cHJvdG8ubWFwLCBhcmdzOlsiZnVuYyJdIH0sCkBAIC0xMDUsNyArMTA2LDcgQEAgZnVuY3Rpb24g
ZGVmYXVsdEZvckFyZyhhcmcsIGFyZ051bSkKICAgICByZXR1cm4gYXJnTnVtOwogfQogCi1mdW5j
dGlvbiBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGFyZ3MpIHsKK2Z1bmN0aW9uIGNhbGxXaXRo
QXJncyhmdW5jLCBhcnJheSwgYXJncywgYXJnTnVtKSB7CiAgICAgbGV0IGZhaWxlZCA9IHRydWU7
CiAgICAgdHJ5IHsKICAgICAgICAgZnVuYy5jYWxsKGFycmF5LCAuLi5hcmdzKTsKQEAgLTExNSw3
ICsxMTYsNyBAQCBmdW5jdGlvbiBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGFyZ3MpIHsKICAg
ICAgICAgZmFpbGVkID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChmYWlsZWQpCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcihbZnVuYywgYXJnc10pOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoW2Z1
bmMsIGFyZ051bV0pOwogfQogCiAKQEAgLTEzNSwxMyArMTM2LDEzIEBAIGZ1bmN0aW9uIGNoZWNr
QXJndW1lbnRzRm9yVHlwZShmdW5jLCBhcmdzLCBjb25zdHJ1Y3RvcikgewogICAgICAgICAgICAg
ICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoYXJyYXkuYnVmZmVyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZnVuYyA9PT0gYXJyYXkuZXZlcnkgPyAxIDogMDsKICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdzKTsKKyAgICAgICAgICAg
IGNhbGxXaXRoQXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MsIGFyZ051bSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoYXJnID09PSAicHJpbSIpIHsKICAgICAgICAgICAgIGNhbGxBcmdzW2FyZ051bV0g
PSB7IFtTeW1ib2wudG9QcmltaXRpdmVdKCkgewogICAgICAgICAgICAgICAgIHRyYW5zZmVyQXJy
YXlCdWZmZXIoYXJyYXkuYnVmZmVyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gYXJnTnVtOwog
ICAgICAgICAgICAgfSB9OwotICAgICAgICAgICAgY2FsbFdpdGhBcmdzKGZ1bmMsIGFycmF5LCBj
YWxsQXJncyk7CisgICAgICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdz
LCBhcmdOdW0pOwogICAgICAgICB9IGVsc2UgaWYgKGFyZyA9PT0gImFycmF5IikgewogICAgICAg
ICAgICAgY2FsbEFyZ3NbYXJnTnVtXSA9IG5ldyBBcnJheSg0KTsKICAgICAgICAgICAgIGNhbGxB
cmdzW2FyZ051bV0uZmlsbCgyKTsKQEAgLTE1MCw3ICsxNTEsNyBAQCBmdW5jdGlvbiBjaGVja0Fy
Z3VtZW50c0ZvclR5cGUoZnVuYywgYXJncywgY29uc3RydWN0b3IpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKICAgICAgICAgICAgIH0gfTsKICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShjYWxsQXJnc1thcmdOdW1dLCAxLCBkZXNjKTsKLSAgICAgICAgICAgIGNhbGxXaXRo
QXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MpOworICAgICAgICAgICAgY2FsbFdpdGhBcmdzKGZ1
bmMsIGFycmF5LCBjYWxsQXJncywgYXJnTnVtKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYXJnKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktaW5jbHVkZXMuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktaW5jbHVkZXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDI1YzNjMzZjZmY2YTY3NDQ1OWYzMjdhMWQ3OTQ5YzIwMDkzNzc4YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmNs
dWRlcy5qcwpAQCAtMCwwICsxLDkgQEAKK2xvYWQoInJlc291cmNlcy90eXBlZGFycmF5LXRlc3Qt
aGVscGVyLWZ1bmN0aW9ucy5qcyIpOworCitmb3IgKGNvbnN0cnVjdG9yIG9mIHR5cGVkQXJyYXlz
KSB7CisgICAgbGV0IGEgPSBuZXcgY29uc3RydWN0b3IoMTApOworICAgIHBhc3NlZCA9IHRydWU7
CisgICAgcmVzdWx0ID0gYS5pbmNsdWRlcyh7IHZhbHVlT2YoKSB7IHBhc3NlZCA9IGZhbHNlOyBy
ZXR1cm4gMTsgfSB9KTsKKyAgICBzaG91bGRCZVRydWUoInBhc3NlZCIpOworICAgIHNob3VsZEJl
RmFsc2UoInJlc3VsdCIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy90eXBlZGFycmF5LWluZGV4T2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktaW5kZXhPZi5qcwppbmRleCAxOTI3M2M4NWQ3ZTdkOWZm
MGVkM2U5YzZkZGJlNThhNmMyNTMyNTY5Li5iZmU0ZWQ4YjY1ZWUzYzIzNzkwMTg1NTE1YTc5YTdk
ODk1ZTdmNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3R5cGVkYXJyYXktaW5kZXhPZi5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3R5cGVkYXJyYXktaW5kZXhPZi5qcwpAQCAtMjgsNCArMjgsMTQgQEAgc2hvdWxkQmVU
cnVlKCJ0ZXN0UHJvdG90eXBlRnVuY3Rpb24oJ2luZGV4T2YnLCAnKDIsIDApJywgYXJyYXksIDAp
Iik7CiBzaG91bGRCZVRydWUoInRlc3RQcm90b3R5cGVGdW5jdGlvbignaW5kZXhPZicsICcoMiwg
LTEpJywgYXJyYXksIDMpIik7CiBzaG91bGRCZVRydWUoInRlc3RQcm90b3R5cGVGdW5jdGlvbign
aW5kZXhPZicsICcoMiwgLTIpJywgYXJyYXksIDMpIik7CiBkZWJ1ZygiIik7CisKK2RlYnVnKCJD
aGVjayBvYmplY3QgY29lcnNpb24iKTsKK2ZvciAoY29uc3RydWN0b3Igb2YgdHlwZWRBcnJheXMp
IHsKKyAgICBsZXQgYSA9IG5ldyBjb25zdHJ1Y3RvcigxMCk7CisgICAgcGFzc2VkID0gdHJ1ZTsK
KyAgICByZXN1bHQgPSBhLmluZGV4T2YoeyB2YWx1ZU9mKCkgeyBwYXNzZWQgPSBmYWxzZTsgcmV0
dXJuIDE7IH19KQorICAgIHNob3VsZEJlVHJ1ZSgicGFzc2VkIik7CisgICAgc2hvdWxkQmUoInJl
c3VsdCIsICItMSIpOworfQorCiBmaW5pc2hKU1Rlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1sYXN0SW5kZXhPZi5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1sYXN0SW5kZXhPZi5q
cwppbmRleCBhMzg2ZTQ1YTUyNjRjMDc4ZmFhYzJjZjcxNjA4ZWFmMjY3NmNiOGViLi42NGRlOGI5
NmFjNDM3MGI0Mzk1ZjcwMjIyZTdlMGJkYTEwNjdkYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktbGFzdEluZGV4T2YuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWxhc3RJbmRleE9m
LmpzCkBAIC0yNSw0ICsyNSwxNCBAQCBzaG91bGRCZVRydWUoInRlc3RQcm90b3R5cGVGdW5jdGlv
bignbGFzdEluZGV4T2YnLCAnKDIsIDApJywgYXJyYXksIDApIik7CiBzaG91bGRCZVRydWUoInRl
c3RQcm90b3R5cGVGdW5jdGlvbignbGFzdEluZGV4T2YnLCAnKDIsIC0xKScsIGFycmF5LCAzKSIp
Owogc2hvdWxkQmVUcnVlKCJ0ZXN0UHJvdG90eXBlRnVuY3Rpb24oJ2xhc3RJbmRleE9mJywgJygy
LCAtMiknLCBhcnJheSwgMCkiKTsKIGRlYnVnKCIiKTsKKworZGVidWcoIkNoZWNrIG9iamVjdCBj
b2Vyc2lvbiIpOworZm9yIChjb25zdHJ1Y3RvciBvZiB0eXBlZEFycmF5cykgeworICAgIGxldCBh
ID0gbmV3IGNvbnN0cnVjdG9yKDEwKTsKKyAgICBwYXNzZWQgPSB0cnVlOworICAgIHJlc3VsdCA9
IGEubGFzdEluZGV4T2YoeyB2YWx1ZU9mKCkgeyBwYXNzZWQgPSBmYWxzZTsgcmV0dXJuIDE7IH19
KQorICAgIHNob3VsZEJlVHJ1ZSgicGFzc2VkIik7CisgICAgc2hvdWxkQmUoInJlc3VsdCIsICIt
MSIpOworfQorCiBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283718</attachid>
            <date>2016-07-14 17:42:46 -0700</date>
            <delta_ts>2016-07-15 12:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159400-20160714174158.patch</filename>
            <type>text/plain</type>
            <size>11575</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDE3ZmQ1NWM4YzI3NzIwMDgwNzQyMDBlMDNhMmQ3NGY0YzEyZDJkLi43MmRjNzdhOTAxNjEyYTlh
NjBiYmUyOWRhYmExYmNlMDVmYmMwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNi0wNy0xNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICAlVHlwZWRBcnJheSUucHJvdG90eXBlLmluZGV4T2YgaXMgY29lcmNp
bmcgbm9uLWludGVnZXJzIG9yIG5vbi1mbG9hdHMgdG8gbnVtYmVycyB3cm9uZ2x5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IGNvZXJjaW9uIG9mIG5vbi1udW1iZXJzIGluIGluZGV4T2YvbGFzdEluZGV4T2YuCisgICAgICAg
IEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSB3aXRoIGluY2x1ZGVzIHdo
ZXJlIGl0CisgICAgICAgIHdvdWxkIG5vdCBjaGVjayB0aGF0IHRoZSBidWZmZXIgcmVtYWluZWQg
bm9uLW5ldXRlcmVkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhlIHRvSW50ZWdlcigpIGZ1bmN0
aW9uLiBMYXN0bHksIHNvbWUgZXh0cmEgcmVsZWFzZQorICAgICAgICBhc3NlcnRzIGhhdmUgYmVl
biBhZGRlZCBpbiBzb21lIHBsYWNlcyB0byBpbmZvcm0gdXMgb2YgYW55IGlzc3VlcworICAgICAg
ICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6c29ydCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0
aGluKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVk
ZXMpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4
T2YpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1bmN0aW9ucy13aXRoLW5l
dXRlcmVkLmpzOgorICAgICAgICAoY2FsbFdpdGhBcmdzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvdHlwZWRhcnJheS1pbmNsdWRlcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNz
L3R5cGVkYXJyYXktaW5kZXhPZi5qczoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHlwZWRhcnJh
eS1sYXN0SW5kZXhPZi5qczoKKwogMjAxNi0wNy0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KIAogICAgICAgICBZQVJSIHVzZXMgbWl4dHVyZSBvZiBpbnQgYW5kIHVuc2ln
bmVkIHZhbHVlcyB0byBpbmRleCBpbnRvIHN1YmplY3Qgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRl
eCA3NGY3M2QwNWFjM2RiNDdlMmQxYWNlOTZkNGRlMzY1ZTIwZjI0OTU0Li42OGZlNDUwZjg5OWI0
NjNjYzc4ZWJjZjNhYWJjZjAwMjdmY2RmNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTE5MCw2ICsx
OTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNvcnQoKQogICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTmV1dGVyZWQoKSk7CiAgICAgICAgIHN3aXRjaCAoQWRhcHRvcjo6dHlwZVZh
bHVlKSB7CiAgICAgICAgIGNhc2UgVHlwZUZsb2F0MzI6CiAgICAgICAgICAgICBzb3J0RmxvYXQ8
aW50MzJfdD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCmluZGV4IDMxMjhlMTQzZmY4MzEwYTk3OTJmZmFlNmI5ZmMwNTRiOTU5YTBjYzkuLmMxMGQ0
N2FhOTU5MjI5YTU4ZjdmYmVhOGJlMTdmYzcyNTVjYWQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtMTU0LDE0ICsxNTQsMTQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmND
b3B5V2l0aGluKEV4ZWNTdGF0ZSoKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Ci0KICAgICBpZiAoZmluYWwgPCBmcm9tKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAogICAg
IGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFs
IC0gZnJvbSk7CiAKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUq
IGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBtZW1tb3ZlKGFycmF5ICsg
dG8sIGFycmF5ICsgZnJvbSwgY291bnQgKiB0aGlzT2JqZWN0LT5lbGVtZW50U2l6ZSk7CiAKQEAg
LTE3MSw2ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0YXRlKgogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwpAQCAtMTgzLDYgKzE4NCw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5j
bHVkZXMoRXhlY1N0YXRlKiBlCiAgICAgSlNWYWx1ZSB2YWx1ZVRvRmluZCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21T
dGFydE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKCF2
YWx1ZVRvRmluZC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwpAQCAtMTkyLDkgKzE5NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0
ZSogZQogICAgIGlmICghVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoZXhlYywg
dmFsdWVUb0ZpbmQsIHRhcmdldCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGZhbHNlKSk7CiAKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisKICAgICBpZiAoc3RkOjppc25hbihzdGF0aWNfY2FzdDxkb3VibGU+
KHRhcmdldCkpKSB7CiAgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgewog
ICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oc3RhdGljX2Nhc3Q8ZG91YmxlPihhcnJheVtpbmRl
eF0pKSkKQEAgLTIzMiwxMCArMjM4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKKyAgICBpZiAoIXZhbHVlVG9GaW5kLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKKwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxl
bWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICB0eXBlbmFt
ZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlIHRhcmdldCA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlKGV4ZWMsIHZhbHVlVG9GaW5kKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNPYmpl
Y3QtPmlzTmV1dGVyZWQoKSk7CiAKICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgp
IHsKICAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSB0YXJnZXQpCkBAIC0yODcsNiArMjk2LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjE2CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwpAQCAtMzExLDEzICszMjEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3Rh
dGUKICAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21Eb3VibGUp
OwogICAgIH0KIAorICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOworCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKKyAgICBpZiAoIXZhbHVlVG9GaW5kLmlz
TnVtYmVyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsK
KwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVj
dC0+dHlwZWRWZWN0b3IoKTsKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlIHRh
cmdldCA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKGV4ZWMsIHZhbHVlVG9G
aW5kKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSk7CiAKICAgICBm
b3IgKDsgaW5kZXggPj0gMDsgLS1pbmRleCkgewogICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09
IHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
dHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcwpp
bmRleCBlMzlmYjQxZGI3ZDQ2ODlmZTNjNjNkNDE1NmJjMDY3ODgwODQzYjUwLi4wZTY2ZWM5NGNl
ODNlZDQ2ZTExNGRiN2U1MzVjNzNiZjI5NmZmYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQu
anMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1
bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpzCkBAIC04Myw2ICs4Myw3IEBAIHByb3RvdHlwZUZ1bmN0
aW9ucyA9IFsKICAgICB7IGZ1bmM6cHJvdG8uZmluZEluZGV4LCBhcmdzOlsiZnVuYyJdIH0sCiAg
ICAgeyBmdW5jOnByb3RvLmZvckVhY2gsIGFyZ3M6WyJmdW5jIl0gfSwKICAgICB7IGZ1bmM6cHJv
dG8uaW5kZXhPZiwgYXJnczpbIm5hIiwgInByaW0iXSB9LAorICAgIHsgZnVuYzpwcm90by5pbmNs
dWRlcywgYXJnczpbIm5hIiwgInByaW0iXSB9LAogICAgIHsgZnVuYzpwcm90by5qb2luLCBhcmdz
OlsicHJpbSJdIH0sCiAgICAgeyBmdW5jOnByb3RvLmxhc3RJbmRleE9mLCBhcmdzOlsibmEiLCAi
cHJpbSJdIH0sCiAgICAgeyBmdW5jOnByb3RvLm1hcCwgYXJnczpbImZ1bmMiXSB9LApAQCAtMTA1
LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIGRlZmF1bHRGb3JBcmcoYXJnLCBhcmdOdW0pCiAgICAgcmV0
dXJuIGFyZ051bTsKIH0KIAotZnVuY3Rpb24gY2FsbFdpdGhBcmdzKGZ1bmMsIGFycmF5LCBhcmdz
KSB7CitmdW5jdGlvbiBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGFyZ3MsIGFyZ051bSkgewog
ICAgIGxldCBmYWlsZWQgPSB0cnVlOwogICAgIHRyeSB7CiAgICAgICAgIGZ1bmMuY2FsbChhcnJh
eSwgLi4uYXJncyk7CkBAIC0xMTUsNyArMTE2LDcgQEAgZnVuY3Rpb24gY2FsbFdpdGhBcmdzKGZ1
bmMsIGFycmF5LCBhcmdzKSB7CiAgICAgICAgIGZhaWxlZCA9IGZhbHNlOwogICAgIH0KICAgICBp
ZiAoZmFpbGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoW2Z1bmMsIGFyZ3NdKTsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKFtmdW5jLCBhcmdOdW1dKTsKIH0KIAogCkBAIC0xMzUsMTMgKzEz
NiwxMyBAQCBmdW5jdGlvbiBjaGVja0FyZ3VtZW50c0ZvclR5cGUoZnVuYywgYXJncywgY29uc3Ry
dWN0b3IpIHsKICAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGFycmF5LmJ1ZmZl
cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMgPT09IGFycmF5LmV2ZXJ5ID8gMSA6IDA7
CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgY2FsbFdpdGhBcmdzKGZ1bmMsIGFycmF5LCBj
YWxsQXJncyk7CisgICAgICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdz
LCBhcmdOdW0pOwogICAgICAgICB9IGVsc2UgaWYgKGFyZyA9PT0gInByaW0iKSB7CiAgICAgICAg
ICAgICBjYWxsQXJnc1thcmdOdW1dID0geyBbU3ltYm9sLnRvUHJpbWl0aXZlXSgpIHsKICAgICAg
ICAgICAgICAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGFycmF5LmJ1ZmZlcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFyZ051bTsKICAgICAgICAgICAgIH0gfTsKLSAgICAgICAgICAgIGNhbGxX
aXRoQXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MpOworICAgICAgICAgICAgY2FsbFdpdGhBcmdz
KGZ1bmMsIGFycmF5LCBjYWxsQXJncywgYXJnTnVtKTsKICAgICAgICAgfSBlbHNlIGlmIChhcmcg
PT09ICJhcnJheSIpIHsKICAgICAgICAgICAgIGNhbGxBcmdzW2FyZ051bV0gPSBuZXcgQXJyYXko
NCk7CiAgICAgICAgICAgICBjYWxsQXJnc1thcmdOdW1dLmZpbGwoMik7CkBAIC0xNTAsNyArMTUx
LDcgQEAgZnVuY3Rpb24gY2hlY2tBcmd1bWVudHNGb3JUeXBlKGZ1bmMsIGFyZ3MsIGNvbnN0cnVj
dG9yKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9IH07CiAgICAg
ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FsbEFyZ3NbYXJnTnVtXSwgMSwgZGVzYyk7
Ci0gICAgICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdzKTsKKyAgICAg
ICAgICAgIGNhbGxXaXRoQXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MsIGFyZ051bSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGFyZyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWlu
Y2x1ZGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5
LWluY2x1ZGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNWMzYzM2Y2ZmNmE2NzQ0NTlmMzI3YTFkNzk0OWMy
MDA5Mzc3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3R5cGVkYXJyYXktaW5jbHVkZXMuanMKQEAgLTAsMCArMSw5IEBACitsb2FkKCJyZXNv
dXJjZXMvdHlwZWRhcnJheS10ZXN0LWhlbHBlci1mdW5jdGlvbnMuanMiKTsKKworZm9yIChjb25z
dHJ1Y3RvciBvZiB0eXBlZEFycmF5cykgeworICAgIGxldCBhID0gbmV3IGNvbnN0cnVjdG9yKDEw
KTsKKyAgICBwYXNzZWQgPSB0cnVlOworICAgIHJlc3VsdCA9IGEuaW5jbHVkZXMoeyB2YWx1ZU9m
KCkgeyBwYXNzZWQgPSBmYWxzZTsgcmV0dXJuIDE7IH0gfSk7CisgICAgc2hvdWxkQmVUcnVlKCJw
YXNzZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmRleE9mLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWluZGV4T2YuanMK
aW5kZXggMTkyNzNjODVkN2U3ZDlmZjBlZDNlOWM2ZGRiZTU4YTZjMjUzMjU2OS4uZjhjZjNiMmI3
MzA3NjRlZDM4MWI5ZWY1NDgzYmNlY2EwNjU4NGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWluZGV4T2YuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWluZGV4T2YuanMKQEAgLTI4
LDQgKzI4LDE2IEBAIHNob3VsZEJlVHJ1ZSgidGVzdFByb3RvdHlwZUZ1bmN0aW9uKCdpbmRleE9m
JywgJygyLCAwKScsIGFycmF5LCAwKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0UHJvdG90eXBlRnVu
Y3Rpb24oJ2luZGV4T2YnLCAnKDIsIC0xKScsIGFycmF5LCAzKSIpOwogc2hvdWxkQmVUcnVlKCJ0
ZXN0UHJvdG90eXBlRnVuY3Rpb24oJ2luZGV4T2YnLCAnKDIsIC0yKScsIGFycmF5LCAzKSIpOwog
ZGVidWcoIiIpOworCitkZWJ1ZygiQ2hlY2sgb2JqZWN0IGNvZXJzaW9uIik7Citmb3IgKGNvbnN0
cnVjdG9yIG9mIHR5cGVkQXJyYXlzKSB7CisgICAgbGV0IGEgPSBuZXcgY29uc3RydWN0b3IoMTAp
OworICAgIHBhc3NlZCA9IHRydWU7CisgICAgcmVzdWx0ID0gYS5pbmRleE9mKHsgdmFsdWVPZigp
IHsgcGFzc2VkID0gZmFsc2U7IHJldHVybiAxOyB9fSkKKyAgICBzaG91bGRCZVRydWUoInBhc3Nl
ZCIpOworICAgIHNob3VsZEJlKCJyZXN1bHQiLCAiLTEiKTsKKyAgICByZXN1bHQgPSBhLmluZGV4
T2YoImFiYyIpOworICAgIHNob3VsZEJlKCJyZXN1bHQiLCAiLTEiKTsKK30KKwogZmluaXNoSlNU
ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5
cGVkYXJyYXktbGFzdEluZGV4T2YuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3R5cGVkYXJyYXktbGFzdEluZGV4T2YuanMKaW5kZXggYTM4NmU0NWE1MjY0YzA3OGZhYWMy
Y2Y3MTYwOGVhZjI2NzZjYjhlYi4uYWQwODc2ZjcyOWFjOTE0MTYxN2IxZDU2ZGQ0OWVjY2EwMjQx
OTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBl
ZGFycmF5LWxhc3RJbmRleE9mLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvdHlwZWRhcnJheS1sYXN0SW5kZXhPZi5qcwpAQCAtMjUsNCArMjUsMTYgQEAgc2hvdWxk
QmVUcnVlKCJ0ZXN0UHJvdG90eXBlRnVuY3Rpb24oJ2xhc3RJbmRleE9mJywgJygyLCAwKScsIGFy
cmF5LCAwKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0UHJvdG90eXBlRnVuY3Rpb24oJ2xhc3RJbmRl
eE9mJywgJygyLCAtMSknLCBhcnJheSwgMykiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdFByb3RvdHlw
ZUZ1bmN0aW9uKCdsYXN0SW5kZXhPZicsICcoMiwgLTIpJywgYXJyYXksIDApIik7CiBkZWJ1Zygi
Iik7CisKK2RlYnVnKCJDaGVjayBvYmplY3QgY29lcnNpb24iKTsKK2ZvciAoY29uc3RydWN0b3Ig
b2YgdHlwZWRBcnJheXMpIHsKKyAgICBsZXQgYSA9IG5ldyBjb25zdHJ1Y3RvcigxMCk7CisgICAg
cGFzc2VkID0gdHJ1ZTsKKyAgICByZXN1bHQgPSBhLmxhc3RJbmRleE9mKHsgdmFsdWVPZigpIHsg
cGFzc2VkID0gZmFsc2U7IHJldHVybiAxOyB9fSkKKyAgICBzaG91bGRCZVRydWUoInBhc3NlZCIp
OworICAgIHNob3VsZEJlKCJyZXN1bHQiLCAiLTEiKTsKKyAgICByZXN1bHQgPSBhLmluZGV4T2Yo
ImFiYyIpOworICAgIHNob3VsZEJlKCJyZXN1bHQiLCAiLTEiKTsKK30KKwogZmluaXNoSlNUZXN0
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283781</attachid>
            <date>2016-07-15 12:19:22 -0700</date>
            <delta_ts>2016-07-15 13:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159400-20160715121833.patch</filename>
            <type>text/plain</type>
            <size>22117</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2Q0ZWMzNjhlNmFhZTg4ZDVjZGY0MTZjMTgyZDMwYjA2MDRjNzRkLi4zMjEwM2EyYTlhMzY0ZTRm
MDRiMjI3ZDJjOGY2OWU3MzA3MDVmOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNi0wNy0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICAlVHlwZWRBcnJheSUucHJvdG90eXBlLmluZGV4T2YgaXMgY29lcmNp
bmcgbm9uLWludGVnZXJzIG9yIG5vbi1mbG9hdHMgdG8gbnVtYmVycyB3cm9uZ2x5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IGNvZXJjaW9uIG9mIG5vbi1udW1iZXJzIGluIGluZGV4T2YvbGFzdEluZGV4T2YuCisgICAgICAg
IEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSB3aXRoIGluY2x1ZGVzIHdo
ZXJlIGl0CisgICAgICAgIHdvdWxkIG5vdCBjaGVjayB0aGF0IHRoZSBidWZmZXIgcmVtYWluZWQg
bm9uLW5ldXRlcmVkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhlIHRvSW50ZWdlcigpIGZ1bmN0
aW9uLiBMYXN0bHksIHNvbWUgZXh0cmEgcmVsZWFzZQorICAgICAgICBhc3NlcnRzIGhhdmUgYmVl
biBhZGRlZCBpbiBzb21lIHBsYWNlcyB0byBpbmZvcm0gdXMgb2YgYW55IGlzc3VlcworICAgICAg
ICBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBjaGFu
Z2VzIGJvb2wgdG9OYXRpdmVGcm9tRG91YmxlIHRvCisgICAgICAgIE9wdGlvbmFsPFR5cGU+IHRv
TmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbi4gVGhpcyBtYWtlcyBpdCBhCisgICAgICAg
IGxpdHRsZSBjbGVhcmVyIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgYW5kIGFsc28gcmVtb3ZlcyB0
aGUgcmV0dXJuCisgICAgICAgIGFyZ3VtZW50LiBUaGUgb25seSBiZWhhdmlvciBjaGFuZ2UgaXMg
dGhhdCB0aGUgZnVuY3Rpb24gbm8gbG9uZ2VyCisgICAgICAgIGNvZXJjZXMgbm9uLW51bWJlcnMg
aW50byBudW1iZXJzLiBUaGF0IGJlaGF2aW9yIHdhcyB1bnVzZWQgKG1heWJlCisgICAgICAgIHVu
aW50ZW5kZWQpLCBob3dldmVyLgorCisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6dG9BZGFw
dG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5l
cmljVHlwZWRBcnJheVZpZXc6OnNvcnQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldzo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4pOgorICAg
ICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAg
ICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAg
ICAgICogcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oOgorICAgICAgICAoSlNDOjp0b05hdGl2
ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OnRvTmF0aXZlRnJvbVZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oOgor
ICAgICAgICAoSlNDOjpJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQz
MldpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OkludGVncmFsVHlwZWRBcnJheUFkYXB0
b3I6OnRvTmF0aXZlRnJvbVVpbnQzMldpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6Oklu
dGVncmFsVHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lv
bik6CisgICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbUlu
dDMyV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKEpTQzo6RmxvYXRUeXBlZEFycmF5QWRhcHRv
cjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKEpTQzo6VWlu
dDhDbGFtcGVkQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24pOgorICAg
ICAgICAoSlNDOjpVaW50OENsYW1wZWRBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0
Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yOjp0b05h
dGl2ZUZyb21JbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGVncmFsVHlwZWRBcnJh
eUFkYXB0b3I6OnRvTmF0aXZlRnJvbVVpbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oklu
dGVncmFsVHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmxvYXRUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVG
cm9tRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQWRhcHRvcjo6
dG9OYXRpdmVGcm9tSW50MzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpVaW50OENsYW1wZWRB
ZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9yZXNvdXJjZXMvdHlwZWRhcnJheS10ZXN0LWhlbHBlci1mdW5jdGlvbnMuanM6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQuanM6
CisgICAgICAgIChjYWxsV2l0aEFyZ3MpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90eXBlZGFy
cmF5LWluY2x1ZGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHlwZWRhcnJh
eS1pbmRleE9mLmpzOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90eXBlZGFycmF5LWxhc3RJbmRl
eE9mLmpzOgorCiAyMDE2LTA3LTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRml4IGV4cGVjdGF0aW9ucyBpbiB0ZXN0MjYyLnlhbWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IDc0ZjczZDA1YWMzZGI0N2UyZDFhY2U5NmQ0ZGUzNjVlMjBmMjQ5NTQuLmIwNmY1
NTQ0YmI1OWZiM2Y5MDUyYjg0MmY2Zjg5Y2RjMjdhZWUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
MTg2LDEwICsxODYsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRh
cHRvck5hdGl2ZUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1ZSkgeyBy
ZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1ZSk7IH0KIAotICAg
IHN0YXRpYyBib29sIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUganNWYWx1ZSwgRWxlbWVudFR5cGUmIHJlc3VsdCkgeyByZXR1cm4gdG9OYXRpdmVGcm9t
VmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1ZSwgcmVzdWx0KTsgfQorICAgIHN0YXRpYyBPcHRp
b25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b248QWRhcHRvcj4oanNWYWx1ZSk7IH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghaXNOZXV0ZXJlZCgpKTsKICAgICAgICAgc3dpdGNoIChBZGFwdG9y
Ojp0eXBlVmFsdWUpIHsKICAgICAgICAgY2FzZSBUeXBlRmxvYXQzMjoKICAgICAgICAgICAgIHNv
cnRGbG9hdDxpbnQzMl90PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgKaW5kZXggMzEyOGUxNDNmZjgzMTBhOTc5MmZmYWU2YjlmYzA1NGI5NTlhMGNj
OS4uYTg4Njc3YmUwNjEyMzgzMzkyOTgzYTU0YTU1YWQ3YTM3ZDcxYTM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC0xNTQsMTQgKzE1NCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0YXRlKgogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKLSAgICBpZiAodGhpc09iamVjdC0+aXNO
ZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFy
cmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKLQogICAgIGlmIChmaW5hbCA8
IGZyb20pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dGhpc1ZhbHVlKCkp
OwogCiAgICAgbG9uZyBjb3VudCA9IHN0ZDo6bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9t
KSwgZmluYWwgLSBmcm9tKTsKIAorICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVt
ZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUo
YXJyYXkgKyB0bywgYXJyYXkgKyBmcm9tLCBjb3VudCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXpl
KTsKIApAQCAtMTcxLDYgKzE3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlz
TmV1dGVyZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CkBAIC0xODMsMjYgKzE4NCwy
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZQogICAgIEpTVmFsdWUgdmFsdWVUb0ZpbmQgPSBl
eGVjLT5hcmd1bWVudCgwKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRDbGFtcGVk
SW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAot
ICAgIGlmICghdmFsdWVUb0ZpbmQuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdDbGFz
czo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKLSAgICB0
eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlIHRhcmdldDsKLSAgICBpZiAoIVZpZXdDbGFz
czo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKGV4ZWMsIHZhbHVlVG9GaW5kLCB0YXJnZXQpKQor
ICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOworICAgIGlmICghdGFyZ2V0T3B0aW9uKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKCF0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpOwogCi0gICAgaWYgKHN0ZDo6aXNu
YW4oc3RhdGljX2Nhc3Q8ZG91YmxlPih0YXJnZXQpKSkgeworICAgIGlmIChzdGQ6OmlzbmFuKHN0
YXRpY19jYXN0PGRvdWJsZT4oKnRhcmdldE9wdGlvbikpKSB7CiAgICAgICAgIGZvciAoOyBpbmRl
eCA8IGxlbmd0aDsgKytpbmRleCkgewogICAgICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oc3RhdGlj
X2Nhc3Q8ZG91YmxlPihhcnJheVtpbmRleF0pKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGlm
IChhcnJheVtpbmRleF0gPT0gdGFyZ2V0KQorICAgICAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9
PSB0YXJnZXRPcHRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjMzLDEyICsyMzYsMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5
cGVkVmVjdG9yKCk7Ci0gICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSB0YXJnZXQg
PSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShleGVjLCB2YWx1ZVRvRmluZCk7
Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNz
Ojp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOwor
ICAgIGlmICghdGFyZ2V0T3B0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKC0xKSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIXRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSk7CiAKICAgICBmb3IgKDsgaW5kZXggPCBs
ZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGFycmF5W2luZGV4XSA9PSB0YXJnZXQpCisg
ICAgICAgIGlmIChhcnJheVtpbmRleF0gPT0gdGFyZ2V0T3B0aW9uKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOwogICAgIH0KIApAQCAtMjg3LDYg
KzI5Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy4xNgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKQEAgLTMxMSwxNiArMzE3LDIyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2Yo
RXhlY1N0YXRlCiAgICAgICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9t
RG91YmxlKTsKICAgICB9CiAKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05l
dXRlcmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJy
YXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCisgICAgYXV0byB0YXJnZXRP
cHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lv
bih2YWx1ZVRvRmluZCk7CisgICAgaWYgKCF0YXJnZXRPcHRpb24pCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKKwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6
RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKLSAgICB0eXBl
bmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlIHRhcmdldCA9IFZpZXdDbGFzczo6dG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlKGV4ZWMsIHZhbHVlVG9GaW5kKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSk7CiAKICAgICBmb3IgKDsgaW5kZXggPj0gMDsgLS1pbmRleCkg
ewotICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09IHRhcmdldCkKKyAgICAgICAgaWYgKGFycmF5
W2luZGV4XSA9PSB0YXJnZXRPcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGluZGV4KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaAppbmRleCBiOWI5YWQ3YmU5MTc4YzUwMjRl
MWE1MTEyMzk0YmU5YWY3N2M5ODUyLi43MmZhODEyOWY2MDQwN2FlODQyMTFjNmM4YjcxZjk2MTdj
M2ZjMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2
ZUZyb21WYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZl
RnJvbVZhbHVlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHRv
TmF0aXZlRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLWJvb2wgdG9OYXRpdmVGcm9tVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlJiByZXN1bHQpCitP
cHRpb25hbDx0eXBlbmFtZSBBZGFwdG9yOjpUeXBlPiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRD
b2VyY2lvbihKU1ZhbHVlIHZhbHVlKQogeworICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIEFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyKHZhbHVlLmFzSW50MzIoKSwgcmVzdWx0
KTsKLSAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRv
TmF0aXZlRnJvbURvdWJsZSh2YWx1ZS5hc0RvdWJsZSgpLCByZXN1bHQpOwotICAgIHJldHVybiBB
ZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUudG9OdW1iZXIoZXhlYyksIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lv
bih2YWx1ZS5hc0ludDMyKCkpOworICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3Vi
bGVXaXRob3V0Q29lcmNpb24odmFsdWUuYXNEb3VibGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJh
eUFkYXB0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRh
cHRvcnMuaAppbmRleCBhYzhlMGQ2NmM4OTc2NzFjZjUxZTRjMGY1MTY5ODI1ZTA1N2VhZGIyLi5i
ZTIyYTYzNDlkZThjNGE1NDUxYTZjZTExNjEwNWVlNTlkNmM1MmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAtNzksMzYg
Kzc5LDMxIEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgcmV0
dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOwogICAgIH0KIAotICAg
IHN0YXRpYyBib29sIHRvTmF0aXZlRnJvbUludDMyKGludDMyX3QgdmFsdWUsIFR5cGUmIHJlc3Vs
dCkKKyAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29l
cmNpb24oaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICgodmFsdWUgPj0gMCAmJiBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZh
bHVlKSkgfHwgdmFsdWUgPCBzdGF0aWNfY2FzdDxpbnQzMl90PihtaW5WYWx1ZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4o
dmFsdWUpOwotCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGJvb2wgdG9OYXRpdmVGcm9tVWludDMyKHVpbnQzMl90IHZhbHVlLCBUeXBlJiBy
ZXN1bHQpCisgICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbVVpbnQzMldpdGhv
dXRDb2VyY2lvbih1aW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IHN0
YXRpY19jYXN0PHVpbnQzMl90PihtYXhWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgdG9O
YXRpdmVGcm9tRG91YmxlKGRvdWJsZSB2YWx1ZSwgVHlwZSYgcmVzdWx0KQorICAgIHN0YXRpYyBP
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZh
bHVlKQogICAgIHsKICAgICAgICAgVHlwZSBpbnRlZ2VyID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFs
dWUpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKSAhPSB2YWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owog
CiAgICAgICAgIGlmICh2YWx1ZSA8IDApCi0gICAgICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9t
SW50MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKHN0YXRpY19jYXN0PGludDMy
X3Q+KHZhbHVlKSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tVWludDMy
KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSksIHJlc3VsdCk7CisgICAgICAgIHJldHVybiB0
b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZh
bHVlKSk7CiAgICAgfQogfTsKIApAQCAtMTU0LDI5ICsxNDksMjUgQEAgc3RydWN0IEZsb2F0VHlw
ZWRBcnJheUFkYXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZy
b21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHRvTmF0aXZlRnJvbUlu
dDMyKGludDMyX3QgdmFsdWUsIFR5cGUmIHJlc3VsdCkKKyAgICBzdGF0aWMgT3B0aW9uYWw8VHlw
ZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFR5cGUgdG9OYXRpdmVGcm9tRG91YmxlKGRvdWJsZSB2YWx1ZSwgVHlw
ZSYgcmVzdWx0KQorICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVX
aXRob3V0Q29lcmNpb24oZG91YmxlIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHN0ZDo6aXNu
YW4odmFsdWUpIHx8IHN0ZDo6aXNpbmYodmFsdWUpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwgc3RkOjppc2luZih2YWx1ZSkp
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogCiAgICAgICAg
IFR5cGUgdmFsdWVSZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAKICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWVSZXN1bHQpICE9IHZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKICAgICAgICAg
aWYgKHZhbHVlIDwgbWluVmFsdWUgfHwgdmFsdWUgPiBtYXhWYWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwogCi0gICAgICAgIHJlc3Vs
dCA9IHZhbHVlUmVzdWx0OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlUmVzdWx0OwogICAgIH0KIH07CiAKQEAgLTI2NCwyNCArMjU1LDIxIEBAIHN0cnVjdCBVaW50
OENsYW1wZWRBZGFwdG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVG
cm9tSW50MzIodmFsdWUpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCB0b05hdGl2ZUZy
b21JbnQzMihpbnQzMl90IHZhbHVlLCBUeXBlJiByZXN1bHQpCisgICAgc3RhdGljIE9wdGlvbmFs
PFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAodmFsdWUgPiBtYXhWYWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAK
LSAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwotCi0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAg
IH0KIAotICAgIHN0YXRpYyBib29sIHRvTmF0aXZlRnJvbURvdWJsZShkb3VibGUgdmFsdWUsIHVp
bnQ4X3QmIHJlc3VsdCkKKyAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91
YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVpbnQ4X3Qg
aW50ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgICAgICByZXN1bHQgPSBpbnRl
Z2VyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGludGVnZXI7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9yZXNvdXJjZXMvdHlwZWRhcnJheS10ZXN0LWhlbHBlci1mdW5jdGlvbnMuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc291cmNlcy90eXBlZGFycmF5LXRlc3Qt
aGVscGVyLWZ1bmN0aW9ucy5qcwppbmRleCA3Y2QxNzRiMDcyMDRmYzMxMjRjNmU4ZWQyMWJjZmY2
MmNkMjAyNWFlLi5jOTE1YjI2OTdjOTMxYmU4MjAxYmNhMjEzZjcyYmQ2ZDE4MTQ3OGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc291cmNlcy90eXBl
ZGFycmF5LXRlc3QtaGVscGVyLWZ1bmN0aW9ucy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3Jlc291cmNlcy90eXBlZGFycmF5LXRlc3QtaGVscGVyLWZ1bmN0aW9u
cy5qcwpAQCAtNCw2ICs0LDggQEAgdmFyIHR5cGVkQXJyYXlzID0gW0ludDhBcnJheSwgVWludDhB
cnJheSwgVWludDhDbGFtcGVkQXJyYXksIEludDE2QXJyYXksIFVpbnQxNkEKIAogdmFyIHNpZ25l
ZEFycmF5cyA9IFtJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIEZsb2F0MzJBcnJh
eSwgRmxvYXQ2NEFycmF5XTsKIAordmFyIGludEFycmF5cyA9IFtJbnQ4QXJyYXksIFVpbnQ4QXJy
YXksIFVpbnQ4Q2xhbXBlZEFycmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSwgSW50MzJBcnJh
eSwgVWludDMyQXJyYXldOworCiB2YXIgZmxvYXRBcnJheXMgPSBbRmxvYXQzMkFycmF5LCBGbG9h
dDY0QXJyYXldOwogCiBmdW5jdGlvbiBmb3JFYWNoVHlwZWRBcnJheShjb25zdHJ1Y3RvcnMsIHRl
c3RGdW5jdGlvbiAvKiAsIGluaXRpYWxWYWx1ZXMgKi8gKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1
dGVyZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXkt
ZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQuanMKaW5kZXggZTM5ZmI0MWRiN2Q0Njg5ZmUzYzYzZDQx
NTZiYzA2Nzg4MDg0M2I1MC4uMGU2NmVjOTRjZTgzZWQ0NmUxMTRkYjdlNTM1YzczYmYyOTZmZmE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFy
cmF5LWZ1bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcwpAQCAt
ODMsNiArODMsNyBAQCBwcm90b3R5cGVGdW5jdGlvbnMgPSBbCiAgICAgeyBmdW5jOnByb3RvLmZp
bmRJbmRleCwgYXJnczpbImZ1bmMiXSB9LAogICAgIHsgZnVuYzpwcm90by5mb3JFYWNoLCBhcmdz
OlsiZnVuYyJdIH0sCiAgICAgeyBmdW5jOnByb3RvLmluZGV4T2YsIGFyZ3M6WyJuYSIsICJwcmlt
Il0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uaW5jbHVkZXMsIGFyZ3M6WyJuYSIsICJwcmltIl0gfSwK
ICAgICB7IGZ1bmM6cHJvdG8uam9pbiwgYXJnczpbInByaW0iXSB9LAogICAgIHsgZnVuYzpwcm90
by5sYXN0SW5kZXhPZiwgYXJnczpbIm5hIiwgInByaW0iXSB9LAogICAgIHsgZnVuYzpwcm90by5t
YXAsIGFyZ3M6WyJmdW5jIl0gfSwKQEAgLTEwNSw3ICsxMDYsNyBAQCBmdW5jdGlvbiBkZWZhdWx0
Rm9yQXJnKGFyZywgYXJnTnVtKQogICAgIHJldHVybiBhcmdOdW07CiB9CiAKLWZ1bmN0aW9uIGNh
bGxXaXRoQXJncyhmdW5jLCBhcnJheSwgYXJncykgeworZnVuY3Rpb24gY2FsbFdpdGhBcmdzKGZ1
bmMsIGFycmF5LCBhcmdzLCBhcmdOdW0pIHsKICAgICBsZXQgZmFpbGVkID0gdHJ1ZTsKICAgICB0
cnkgewogICAgICAgICBmdW5jLmNhbGwoYXJyYXksIC4uLmFyZ3MpOwpAQCAtMTE1LDcgKzExNiw3
IEBAIGZ1bmN0aW9uIGNhbGxXaXRoQXJncyhmdW5jLCBhcnJheSwgYXJncykgewogICAgICAgICBm
YWlsZWQgPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKGZhaWxlZCkKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKFtmdW5jLCBhcmdzXSk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihbZnVuYywgYXJn
TnVtXSk7CiB9CiAKIApAQCAtMTM1LDEzICsxMzYsMTMgQEAgZnVuY3Rpb24gY2hlY2tBcmd1bWVu
dHNGb3JUeXBlKGZ1bmMsIGFyZ3MsIGNvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICAgICAgdHJh
bnNmZXJBcnJheUJ1ZmZlcihhcnJheS5idWZmZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jID09PSBhcnJheS5ldmVyeSA/IDEgOiAwOwogICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGNhbGxXaXRoQXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MpOworICAgICAgICAgICAgY2FsbFdp
dGhBcmdzKGZ1bmMsIGFycmF5LCBjYWxsQXJncywgYXJnTnVtKTsKICAgICAgICAgfSBlbHNlIGlm
IChhcmcgPT09ICJwcmltIikgewogICAgICAgICAgICAgY2FsbEFyZ3NbYXJnTnVtXSA9IHsgW1N5
bWJvbC50b1ByaW1pdGl2ZV0oKSB7CiAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUJ1ZmZl
cihhcnJheS5idWZmZXIpOwogICAgICAgICAgICAgICAgIHJldHVybiBhcmdOdW07CiAgICAgICAg
ICAgICB9IH07Ci0gICAgICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdz
KTsKKyAgICAgICAgICAgIGNhbGxXaXRoQXJncyhmdW5jLCBhcnJheSwgY2FsbEFyZ3MsIGFyZ051
bSk7CiAgICAgICAgIH0gZWxzZSBpZiAoYXJnID09PSAiYXJyYXkiKSB7CiAgICAgICAgICAgICBj
YWxsQXJnc1thcmdOdW1dID0gbmV3IEFycmF5KDQpOwogICAgICAgICAgICAgY2FsbEFyZ3NbYXJn
TnVtXS5maWxsKDIpOwpAQCAtMTUwLDcgKzE1MSw3IEBAIGZ1bmN0aW9uIGNoZWNrQXJndW1lbnRz
Rm9yVHlwZShmdW5jLCBhcmdzLCBjb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgICAgIHJldHVy
biAxOwogICAgICAgICAgICAgfSB9OwogICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGNhbGxBcmdzW2FyZ051bV0sIDEsIGRlc2MpOwotICAgICAgICAgICAgY2FsbFdpdGhBcmdzKGZ1
bmMsIGFycmF5LCBjYWxsQXJncyk7CisgICAgICAgICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJy
YXksIGNhbGxBcmdzLCBhcmdOdW0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihhcmcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmNsdWRlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmNsdWRlcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmMw
M2FmOGRhMmQzMDY0YmE4ODk1NDg5MzcxZTJiYzhkYjA2MmI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWluY2x1ZGVzLmpz
CkBAIC0wLDAgKzEsMTAgQEAKK2xvYWQoInJlc291cmNlcy90eXBlZGFycmF5LXRlc3QtaGVscGVy
LWZ1bmN0aW9ucy5qcyIpOworCitmb3IgKGNvbnN0cnVjdG9yIG9mIHR5cGVkQXJyYXlzKSB7Cisg
ICAgbGV0IGEgPSBuZXcgY29uc3RydWN0b3IoMTApOworICAgIHBhc3NlZCA9IHRydWU7CisgICAg
cmVzdWx0ID0gYS5pbmNsdWRlcyh7IHZhbHVlT2YoKSB7IHBhc3NlZCA9IGZhbHNlOyByZXR1cm4g
MTsgfSB9KTsKKyAgICBzaG91bGRCZVRydWUoInBhc3NlZCIpOworICAgIHNob3VsZEJlRmFsc2Uo
InJlc3VsdCIpOworfQorZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktaW5kZXhPZi5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmRleE9mLmpzCmluZGV4IDE5Mjcz
Yzg1ZDdlN2Q5ZmYwZWQzZTljNmRkYmU1OGE2YzI1MzI1NjkuLjdkZDVmMDAxYWE2YTQ1OGVlMGUx
ZDFjZjRjMjM0Yzc2NmE1MjE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmRleE9mLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1pbmRleE9mLmpzCkBAIC0yOCw0ICsyOCw0MCBA
QCBzaG91bGRCZVRydWUoInRlc3RQcm90b3R5cGVGdW5jdGlvbignaW5kZXhPZicsICcoMiwgMCkn
LCBhcnJheSwgMCkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdFByb3RvdHlwZUZ1bmN0aW9uKCdpbmRl
eE9mJywgJygyLCAtMSknLCBhcnJheSwgMykiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdFByb3RvdHlw
ZUZ1bmN0aW9uKCdpbmRleE9mJywgJygyLCAtMiknLCBhcnJheSwgMykiKTsKIGRlYnVnKCIiKTsK
KworZGVidWcoIkNoZWNrIG9iamVjdCBjb2Vyc2lvbiIpOworZm9yIChjb25zdHJ1Y3RvciBvZiB0
eXBlZEFycmF5cykgeworICAgIGEgPSBuZXcgY29uc3RydWN0b3IoWzAsMiwzXSk7CisgICAgcGFz
c2VkID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCJhLmluZGV4T2YoeyB2YWx1ZU9mKCkgeyBwYXNz
ZWQgPSBmYWxzZTsgcmV0dXJuIDE7IH19KSIsICItMSIpOworICAgIHNob3VsZEJlVHJ1ZSgicGFz
c2VkIik7CisgICAgc2hvdWxkQmUoImEuaW5kZXhPZigzLCB7dmFsdWVPZjogKCkgPT4gLTF9KSIs
ICIyIik7CisKKyAgICAvLyB0ZXN0IHdlIGRvbid0IGNvZXJjZSBub24tbmF0aXZlIHZhbHVlcwor
ICAgIHNob3VsZEJlKCJhLmluZGV4T2YoXCJhYmNcIikiLCAiLTEiKTsKKyAgICBzaG91bGRCZSgi
YS5pbmRleE9mKG51bGwpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImEuaW5kZXhPZih1bmRlZmlu
ZWQpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImEuaW5kZXhPZih7MTogJyd9KSIsICItMSIpOwor
ICAgIHNob3VsZEJlKCJhLmluZGV4T2YoXCJcIikiLCAiLTEiKTsKK30KKworCitmb3IgKGNvbnN0
cnVjdG9yIG9mIGludEFycmF5cykgeworICAgIGEgPSBuZXcgY29uc3RydWN0b3IoWzAsMiwzXSk7
CisKKyAgICBzaG91bGRCZSgiYS5pbmRleE9mKDIuMCkiLCAiMSIpOworICAgIHNob3VsZEJlKCJh
LmluZGV4T2YoMi41KSIsICItMSIpOworfQorCitmb3IgKGNvbnN0cnVjdG9yIG9mIGZsb2F0QXJy
YXlzKSB7CisgICAgYSA9IG5ldyBjb25zdHJ1Y3RvcihbMCwyLjAsMy42LCBOYU4sIEluZmluaXR5
XSk7CisKKyAgICBzaG91bGRCZSgiYS5pbmRleE9mKDIuMCkiLCAiMSIpOworICAgIHNob3VsZEJl
KCJhLmluZGV4T2YoMi41KSIsICItMSIpOworICAgIHNob3VsZEJlKCJhLmluZGV4T2YoMy42MDAw
MDEpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImEuaW5kZXhPZihOYU4pIiwgIi0xIik7CisgICAg
c2hvdWxkQmUoImEuaW5kZXhPZihJbmZpbml0eSkiLCAiNCIpOworfQorCiBmaW5pc2hKU1Rlc3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRh
cnJheS1sYXN0SW5kZXhPZi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
dHlwZWRhcnJheS1sYXN0SW5kZXhPZi5qcwppbmRleCBhMzg2ZTQ1YTUyNjRjMDc4ZmFhYzJjZjcx
NjA4ZWFmMjY3NmNiOGViLi5jNzQwMDQzMjQyYzA2N2U4YWRiMWZkOTYyY2M0MWFhNjFmM2NmNjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJy
YXktbGFzdEluZGV4T2YuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90eXBlZGFycmF5LWxhc3RJbmRleE9mLmpzCkBAIC0yNSw0ICsyNSw0MCBAQCBzaG91bGRCZVRy
dWUoInRlc3RQcm90b3R5cGVGdW5jdGlvbignbGFzdEluZGV4T2YnLCAnKDIsIDApJywgYXJyYXks
IDApIik7CiBzaG91bGRCZVRydWUoInRlc3RQcm90b3R5cGVGdW5jdGlvbignbGFzdEluZGV4T2Yn
LCAnKDIsIC0xKScsIGFycmF5LCAzKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0UHJvdG90eXBlRnVu
Y3Rpb24oJ2xhc3RJbmRleE9mJywgJygyLCAtMiknLCBhcnJheSwgMCkiKTsKIGRlYnVnKCIiKTsK
KworZGVidWcoIkNoZWNrIG9iamVjdCBjb2Vyc2lvbiIpOworZm9yIChjb25zdHJ1Y3RvciBvZiB0
eXBlZEFycmF5cykgeworICAgIGEgPSBuZXcgY29uc3RydWN0b3IoWzAsMiwzXSk7CisgICAgcGFz
c2VkID0gdHJ1ZTsKKworICAgIHNob3VsZEJlKCJhLmxhc3RJbmRleE9mKHsgdmFsdWVPZigpIHsg
cGFzc2VkID0gZmFsc2U7IHJldHVybiAxOyB9fSkiLCAiLTEiKTsKKyAgICBzaG91bGRCZVRydWUo
InBhc3NlZCIpOworICAgIHNob3VsZEJlKCJhLmxhc3RJbmRleE9mKDMsIHt2YWx1ZU9mOiAoKSA9
PiAzfSkiLCAiMiIpOworCisgICAgLy8gdGVzdCB3ZSBkb24ndCBjb2VyY2Ugbm9uLW5hdGl2ZSB2
YWx1ZXMKKyAgICBzaG91bGRCZSgiYS5sYXN0SW5kZXhPZihcImFiY1wiKSIsICItMSIpOworICAg
IHNob3VsZEJlKCJhLmxhc3RJbmRleE9mKG51bGwpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImEu
bGFzdEluZGV4T2YodW5kZWZpbmVkKSIsICItMSIpOworICAgIHNob3VsZEJlKCJhLmxhc3RJbmRl
eE9mKHsxOiAnJ30pIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImEubGFzdEluZGV4T2YoXCJcIiki
LCAiLTEiKTsKK30KKworCitmb3IgKGNvbnN0cnVjdG9yIG9mIGludEFycmF5cykgeworICAgIGEg
PSBuZXcgY29uc3RydWN0b3IoWzAsMiwzXSk7CisKKyAgICBzaG91bGRCZSgiYS5sYXN0SW5kZXhP
ZigyLjApIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiYS5sYXN0SW5kZXhPZigyLjUpIiwgIi0xIik7
Cit9CisKK2ZvciAoY29uc3RydWN0b3Igb2YgZmxvYXRBcnJheXMpIHsKKyAgICBhID0gbmV3IGNv
bnN0cnVjdG9yKFswLDIuMCwzLjYsIE5hTiwgSW5maW5pdHldKTsKKworICAgIHNob3VsZEJlKCJh
Lmxhc3RJbmRleE9mKDIuMCkiLCAiMSIpOworICAgIHNob3VsZEJlKCJhLmxhc3RJbmRleE9mKDIu
NSkiLCAiLTEiKTsKKyAgICBzaG91bGRCZSgiYS5sYXN0SW5kZXhPZigzLjYwMDAwMSkiLCAiLTEi
KTsKKyAgICBzaG91bGRCZSgiYS5sYXN0SW5kZXhPZihOYU4pIiwgIi0xIik7CisgICAgc2hvdWxk
QmUoImEubGFzdEluZGV4T2YoSW5maW5pdHkpIiwgIjQiKTsKK30KKwogZmluaXNoSlNUZXN0KCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>