<?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>146643</bug_id>
          
          <creation_ts>2015-07-06 10:06:09 -0700</creation_ts>
          <short_desc>[Streams API] Remove ReadableStreamReader.read() custom binding</short_desc>
          <delta_ts>2015-07-07 01:01:48 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146315</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1107124</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 10:06:09 -0700</bug_when>
    <thetext>We should remove the custom binding and migrate read() to using DOMPromise dedicated to iterators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107149</commentid>
    <comment_count>1</comment_count>
      <attachid>256222</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 11:00:50 -0700</bug_when>
    <thetext>Created attachment 256222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107151</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 11:03:58 -0700</bug_when>
    <thetext>Attachment 256222 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107354</commentid>
    <comment_count>3</comment_count>
      <attachid>256222</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-06 20:22:23 -0700</bug_when>
    <thetext>Comment on attachment 256222
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:413
&gt; +inline JSC::JSValue toJSIterator(JSC::ExecState* state, JSDOMGlobalObject*, JSC::JSValue value)
&gt; +{
&gt; +    return createIteratorResultObject(state, value, false);
&gt; +}
&gt; +
&gt; +template&lt;typename T&gt; inline JSC::JSValue toJSIterator(JSC::ExecState* state, JSDOMGlobalObject* globalObject, const T&amp; value)
&gt; +{
&gt; +    return createIteratorResultObject(state, toJS(state, globalObject, value), false);
&gt; +}
&gt; +
&gt; +inline JSC::JSValue toJSIteratorEnd(JSC::ExecState* state)
&gt; +{
&gt; +    return createIteratorResultObject(state, JSC::jsUndefined(), true);
&gt; +}

I suggest having all these new functions take references rather than pointers.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:49
&gt; +    JSDOMGlobalObject* globalObject() const { return m_globalObject.get(); } 

If this can never be null, then I suggest returning a reference, not a pointer.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:117
&gt; +    DOMPromiseIteratorWithCallback(DeferredWrapper&amp;&amp; wrapper) : m_wrapper(WTF::move(wrapper)) { }

Please consider marking this explicit.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:131
&gt; +    DOMPromiseIteratorWithCallback(DOMPromiseIteratorWithCallback&amp;&amp; promise)
&gt; +        : m_wrapper(WTF::move(promise.m_wrapper))
&gt; +        , m_resolveCallback(WTF::move(promise.m_resolveCallback))
&gt; +        , m_resolveEndCallback(WTF::move(promise.m_resolveEndCallback))
&gt; +        , m_rejectCallback(WTF::move(promise.m_rejectCallback)) { }

This should be generated automatically by the compiler as long as you don’t explicitly define it. Could you try omitting it?

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:283
&gt; +    ASSERT(m_wrapper);

Seems overkill to assert this here, since m_wrapper.value() will also assert it.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:284
&gt; +    JSDOMGlobalObject* globalObject = m_wrapper.value().globalObject();

Should use a reference here since this can never be null. Also might want to use auto&amp; instead of JSDOMGlobalObject&amp;.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:295
&gt; +    ASSERT(m_wrapper);

Seems overkill to assert this here, since m_wrapper.value() will also assert it.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:306
&gt; +    ASSERT(m_wrapper);

Seems overkill to assert this here, since m_wrapper.value() will also assert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107402</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-06 23:59:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 256222 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256222&amp;action=review

Thanks for the review.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:413
&gt; &gt; +inline JSC::JSValue toJSIterator(JSC::ExecState* state, JSDOMGlobalObject*, JSC::JSValue value)
&gt; &gt; +{
&gt; &gt; +    return createIteratorResultObject(state, value, false);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +template&lt;typename T&gt; inline JSC::JSValue toJSIterator(JSC::ExecState* state, JSDOMGlobalObject* globalObject, const T&amp; value)
&gt; &gt; +{
&gt; &gt; +    return createIteratorResultObject(state, toJS(state, globalObject, value), false);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +inline JSC::JSValue toJSIteratorEnd(JSC::ExecState* state)
&gt; &gt; +{
&gt; &gt; +    return createIteratorResultObject(state, JSC::jsUndefined(), true);
&gt; &gt; +}
&gt; 
&gt; I suggest having all these new functions take references rather than
&gt; pointers.

OK. I was not sure of doing that given the other functions in the same file but I will try to stick with this rule.

&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:49
&gt; &gt; +    JSDOMGlobalObject* globalObject() const { return m_globalObject.get(); } 
&gt; 
&gt; If this can never be null, then I suggest returning a reference, not a
&gt; pointer.

It can be null in theory, but in practice, this method should never be called if it is null. I will do the change, adding an ASSERT within the getter.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:117
&gt; &gt; +    DOMPromiseIteratorWithCallback(DeferredWrapper&amp;&amp; wrapper) : m_wrapper(WTF::move(wrapper)) { }
&gt; 
&gt; Please consider marking this explicit.

We cannot do that as we use implicit conversion from DeferredWrapper (created in generated binding) to DOMPromiseXXX in DOM classes.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:131
&gt; &gt; +    DOMPromiseIteratorWithCallback(DOMPromiseIteratorWithCallback&amp;&amp; promise)
&gt; &gt; +        : m_wrapper(WTF::move(promise.m_wrapper))
&gt; &gt; +        , m_resolveCallback(WTF::move(promise.m_resolveCallback))
&gt; &gt; +        , m_resolveEndCallback(WTF::move(promise.m_resolveEndCallback))
&gt; &gt; +        , m_rejectCallback(WTF::move(promise.m_rejectCallback)) { }
&gt; 
&gt; This should be generated automatically by the compiler as long as you don’t
&gt; explicitly define it. Could you try omitting it?

Tried and it is working. I will do the same for DOMPromiseWithCallback.

&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:283
&gt; &gt; +    ASSERT(m_wrapper);
&gt; 
&gt; Seems overkill to assert this here, since m_wrapper.value() will also assert
&gt; it.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107403</commentid>
    <comment_count>5</comment_count>
      <attachid>256283</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-07 00:00:59 -0700</bug_when>
    <thetext>Created attachment 256283
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107406</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-07 00:04:27 -0700</bug_when>
    <thetext>*** Bug 146405 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107419</commentid>
    <comment_count>7</comment_count>
      <attachid>256283</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-07 01:01:26 -0700</bug_when>
    <thetext>Comment on attachment 256283
Patch for landing

Clearing flags on attachment: 256283

Committed r186414: &lt;http://trac.webkit.org/changeset/186414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107420</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-07 01:01:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256222</attachid>
            <date>2015-07-06 11:00:50 -0700</date>
            <delta_ts>2015-07-07 00:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146643-20150706195952.patch</filename>
            <type>text/plain</type>
            <size>16596</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc4NTNiZWVkZjgxNjNm
OGFhYjE0OGQ1Y2NkODgxNzNmZjk4NmRhZC4uYWRiYWMwYWFkZjBjZGIwODE3NmNiMzJmOGFkY2Q4
MTRmMDdhNmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW1SZWFkZXIucmVhZCgpIGN1c3RvbSBiaW5kaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIGhhbmRsaW5nIGZyb20gY2FsbGJhY2tzIHRvIHByb21p
c2VzLgorICAgICAgICBJbnRyb2R1Y2VkIERPTVByb21pc2VJdGVyYXRvcldpdGhDYWxsYmFjayBm
b3IgdGhhdCBwdXJwb3NlOiBpdCB0YWtlcyByZXNvbHZlKCkgdG8gcmVzb2x2ZSBhIHByb21pc2Ug
d2l0aCBhIG5vdC1lbmRpbmcgaXRlcmF0b3IgdmFsdWUsCisgICAgICAgIHJlc29sdmVFbmQoKSB0
byByZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGEgdGVybWluYXRpbmcgaXRlcmF0b3IgdmFsdWUgYW5k
IHJlamVjdCgpLgorICAgICAgICBBZGRlZCB0ZW1wbGF0ZSBoZWxwZXIgcm91dGluZSB0byBjb252
ZXJ0IHR5cGVkIHZhbHVlcyB0byBKUyBpdGVyYXRvciB3cmFwcGluZyB0aGUgdmFsdWUuCisgICAg
ICAgIFJlbW92ZWQgUmVhZGFibGVTdHJlYW1SZWFkZXIucmVhZCBjdXN0b20gYmluZGluZy4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOiBVcGRhdGVkIGNvZGUgdG8gdXNlIERPTVByb21pc2VJ
dGVyYXRvcldpdGhDYWxsYmFjayBBUEkuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6cmVsZWFzZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hh
bmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlc29sdmVSZWFkQ2FsbGJh
Y2spOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZCk6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDogUmVtb3ZlZCBjdXN0b20gYmluZGluZy4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNJ
dGVyYXRvcik6IGNyZWF0ZSBKUyBpdGVyYXRvciBmcm9tIHR5cGVkIHZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6dG9KU0l0ZXJhdG9yRW5kKTogY3JlYXRlIEpTIGVuZCBpdGVyYXRvci4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBy
b21pc2VJdGVyYXRvcldpdGhDYWxsYmFjazo6RE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkVycm9yPjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFcnJvcj46OnJlc29sdmVFbmQpOgorICAgICAgICAoV2ViQ29yZTo6RXJyb3I+OjpyZWplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3Bw
OiBSZW1vdmVkIGN1c3RvbSBiaW5kaW5nLgorCiAyMDE1LTA3LTA2ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggYnVpbGQgZXJyb3JzIHdp
dGggT3BlbkdMIEVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcAppbmRleCAxNDMzOTY5MGE5YzdlOTVmNmU2MDdiN2YxMWFmODMzN2JmZjEw
YmExLi41NTVkMDJkNDJhM2VhYTE4ZDMzNjExNzUzYzk2YzEzYmIzMmYyNDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTk0
LDcgKzk0LDcgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVsZWFzZVJlYWRlcigpCiAgICAgICAg
IG1fY2xvc2VkUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUobnVsbHB0cik7CiAKICAgICBmb3IgKGF1
dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKLSAgICAgICAgcmVxdWVzdC5lbmRDYWxsYmFj
aygpOworICAgICAgICByZXF1ZXN0LnJlc29sdmVFbmQoKTsKIAogICAgIGNsZWFyQ2FsbGJhY2tz
KCk7CiAgICAgaWYgKG1fcmVhZGVyKQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUmVhZGFibGVT
dHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKICAgICAgICAgbV9jbG9zZWRQcm9taXNlLnZh
bHVlKCkucmVqZWN0KGVycm9yKTsKIAogICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJl
cXVlc3RzKQotICAgICAgICByZXF1ZXN0LmZhaWx1cmVDYWxsYmFjayhlcnJvcik7CisgICAgICAg
IHJlcXVlc3QucmVqZWN0KGVycm9yKTsKIAogICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiAgICAgaWYg
KG1fcmVhZGVyKQpAQCAtMjM2LDI1ICsyMzYsMjUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xv
c2VkKENsb3NlZFByb21pc2UmJiBwcm9taXNlKQogICAgIG1fY2xvc2VkUHJvbWlzZSA9IFdURjo6
bW92ZShwcm9taXNlKTsKIH0KIAotdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVhZChSZWFkU3VjY2Vz
c0NhbGxiYWNrJiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkRW5kQ2FsbGJhY2smJiBlbmRDYWxsYmFj
aywgRmFpbHVyZUNhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVh
bTo6cmVhZChSZWFkUHJvbWlzZSYmIHJlYWRQcm9taXNlKQogewogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgZW5kQ2FsbGJhY2soKTsKKyAgICAgICAgcmVhZFBy
b21pc2UucmVzb2x2ZUVuZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIGZhaWx1cmVDYWxsYmFjayhlcnJvcigp
KTsKKyAgICAgICAgcmVhZFByb21pc2UucmVqZWN0KGVycm9yKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChoYXNWYWx1ZSgpKSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhy
ZWFkKCkpOworICAgICAgICByZWFkUHJvbWlzZS5yZXNvbHZlKHJlYWQoKSk7CiAgICAgICAgIGlm
ICghbV9jbG9zZVJlcXVlc3RlZCkKICAgICAgICAgICAgIHB1bGwoKTsKICAgICAgICAgZWxzZSBp
ZiAoIWhhc1ZhbHVlKCkpCiAgICAgICAgICAgICBjbG9zZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZCh7IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJh
Y2spLCBXVEY6Om1vdmUoZW5kQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSB9
KTsKKyAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoV1RGOjptb3ZlKHJlYWRQcm9taXNlKSk7CiAg
ICAgcHVsbCgpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBSZWFkYWJsZVN0cmVhbTo6
cmVzb2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKG1fcmVhZFJl
cXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9yZWFkUmVx
dWVzdHMudGFrZUZpcnN0KCkuc3VjY2Vzc0NhbGxiYWNrKHZhbHVlKTsKKyAgICBtX3JlYWRSZXF1
ZXN0cy50YWtlRmlyc3QoKS5yZXNvbHZlKHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRl
eCBmMDhkODAwMWYzNTBhMTc2YTc1NjUyNDMwODEwZTlhZDRmOWExNWEwLi4yOTU1MDQxNmM3N2Zj
ODkwNjVhYTQwOTg5M2IwMzQyMGZmNjExZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApAQCAtODksOCArODksNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKICAgICB2b2lkIG5vdGlmeUNhbmNlbEZh
aWxlZCgpOwogCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4g
RmFpbHVyZUNhbGxiYWNrOwotCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90
LCBKU0M6OkpTVmFsdWU+IENhbmNlbFByb21pc2U7CiAgICAgdm9pZCBjYW5jZWwoSlNDOjpKU1Zh
bHVlLCBDYW5jZWxQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNhbmNlbE5v
Q2hlY2soSlNDOjpKU1ZhbHVlLCBDYW5jZWxQcm9taXNlJiYpOwpAQCAtOTgsOSArOTYsOCBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBKU0M6OkpTVmFs
dWU+IENsb3NlZFByb21pc2U7CiAgICAgdm9pZCBjbG9zZWQoQ2xvc2VkUHJvbWlzZSYmKTsKIAot
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKEpTQzo6SlNWYWx1ZSk+IFJlYWRTdWNjZXNz
Q2FsbGJhY2s7Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gUmVhZEVuZENhbGxi
YWNrOwotICAgIHZvaWQgcmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNrJiYsIFJlYWRFbmRDYWxsYmFj
ayYmLCBGYWlsdXJlQ2FsbGJhY2smJik7CisgICAgdHlwZWRlZiBET01Qcm9taXNlSXRlcmF0b3JX
aXRoQ2FsbGJhY2s8SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWU+IFJlYWRQcm9taXNlOworICAg
IHZvaWQgcmVhZChSZWFkUHJvbWlzZSYmKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJl
YWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKQEAgLTEyOCwxMiArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxDYW5jZWxQcm9taXNlPiBtX2NhbmNlbFByb21pc2U7
CiAgICAgT3B0aW9uYWw8Q2xvc2VkUHJvbWlzZT4gbV9jbG9zZWRQcm9taXNlOwogCi0gICAgc3Ry
dWN0IFJlYWRDYWxsYmFja3MgewotICAgICAgICBSZWFkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjazsKLSAgICAgICAgUmVhZEVuZENhbGxiYWNrIGVuZENhbGxiYWNrOwotICAgICAgICBG
YWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrOwotICAgIH07Ci0gICAgRGVxdWU8UmVhZENh
bGxiYWNrcz4gbV9yZWFkUmVxdWVzdHM7CisgICAgRGVxdWU8UmVhZFByb21pc2U+IG1fcmVhZFJl
cXVlc3RzOwogCiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
UHVsbGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAppbmRleCAwZmJkNTJmMDFkMjg3NWYyM2Ey
NzVhMjhhOTYyNGU5YTA0MTkwNmZkLi4zZjM3ZDk5YzAxZDljMWFhYWU5ZGM4ZWMyOGNmNzdjNWU2
ZWYwZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFJlYWRhYmxl
U3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFByb21pc2UmJiBwcm9t
aXNlKQogICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUocHJvbWlzZSkpOwogfQogCi12b2lk
IFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkU3VjY2Vzc0Nh
bGxiYWNrJiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJsZVN0cmVhbTo6UmVhZEVuZENhbGxiYWNr
JiYgZW5kQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2spCit2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3RyZWFt
OjpSZWFkUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUo
KSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVuZENhbGxiYWNrKCk7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZUVuZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fc3RyZWFtLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShl
bmRDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICBtX3N0cmVhbS5y
ZWFkKFdURjo6bW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6
OnJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAppbmRleCA2NmYzNWY3MGNk
MmZkYmIyZTA3ZDlhOTllNmIzOGU0MjYwNThmZmZmLi5iNGQyZmI1M2Q1MTEwYjJkMTE2YTUzNzVl
ZGM2MjgzNWYzMTA0OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUsIFJlYWRhYmxlU3RyZWFtOjpDYW5jZWxQcm9t
aXNlJiYpOwogICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRQcm9taXNlJiYp
OwotICAgIHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nlc3NDYWxsYmFjayYmLCBS
ZWFkYWJsZVN0cmVhbTo6UmVhZEVuZENhbGxiYWNrJiYsIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJl
Q2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkUHJvbWlzZSYm
KTsKICAgICB2b2lkIHJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgcmVm
KCkgeyBtX3N0cmVhbS5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKaW5kZXggNzgzOGI2MmMyMmVjMzhl
M2RkNWZmMmViOTI3ZWEzZmFmMjFlZDVmZS4uZGE5Y2U5MzEyMTRhODM4NzdlZWZmMWQyOTgzNjQ2
NGE0ZDE1NDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAgTm9JbnRl
cmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KIF0gaW50ZXJmYWNlIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHsKLSAgICBbQ3VzdG9tXSBPYmplY3QgcmVhZCgpOworICAgIFByb21p
c2UgcmVhZCgpOwogICAgIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgYW55IHJlYXNvbik7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZWxlYXNlTG9jaygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGE2Mjkz
MGExMDk2NWUyNDI1M2UyMmM1OWFmYWM2Y2U3MmY1YmJmNGQuLjBiOWFkZWUxNmU5MGU1NTQ2NWMx
OTY5NmNhZDc0ZjNhNDgwZTMwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CiAjaW5j
bHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KQEAgLTM5Niw2ICszOTcsMjEgQEAgaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdmFsdWUp
OwogfQogCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIHJl
dHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChzdGF0ZSwgdmFsdWUsIGZhbHNlKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTSXRlcmF0b3Io
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBUJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qo
c3RhdGUsIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpLCBmYWxzZSk7Cit9CisKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU0l0ZXJhdG9yRW5kKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkK
K3sKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qoc3RhdGUsIEpTQzo6anNV
bmRlZmluZWQoKSwgdHJ1ZSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU1Zh
bHVlVHJhaXRzIHsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGFycmF5SlNWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVCYg
dmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApp
bmRleCBiMTVhOGFhMDk1OGQxYWQxZjhkZTIwZDJhODhmM2IyZDBiNjAzMmZkLi42NDJlNzU0OGZl
NzA3NGZkOGE3ODQzNjNhMjdiNzdlYjYzZGQ3ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlwZSYpOwogCiAgICAgSlNDOjpKU09iamVjdCogcHJv
bWlzZSgpIGNvbnN0OworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfSAKIAogcHJpdmF0ZToKICAgICB2b2lk
IGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlND
OjpKU1ZhbHVlIHJlc29sdXRpb24pOwpAQCAtMTEwLDYgKzExMSwzNiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBFcnJvciYpPiBtX3JlamVjdENhbGxiYWNrOwogfTsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEVycm9yPgorY2xhc3MgRE9NUHJv
bWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlSXRlcmF0
b3JXaXRoQ2FsbGJhY2soRGVmZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikgOiBtX3dyYXBwZXIoV1RG
Ojptb3ZlKHdyYXBwZXIpKSB7IH0KKyAgICBET01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2so
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZhbHVlJik+IHJlc29sdmUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiByZXNvbHZlRW5kLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgRXJyb3ImKT4gcmVq
ZWN0KQorICAgICAgICA6IG1fcmVzb2x2ZUNhbGxiYWNrKFdURjo6bW92ZShyZXNvbHZlKSkKKyAg
ICAgICAgLCBtX3Jlc29sdmVFbmRDYWxsYmFjayhXVEY6Om1vdmUocmVzb2x2ZUVuZCkpCisgICAg
ICAgICwgbV9yZWplY3RDYWxsYmFjayhXVEY6Om1vdmUocmVqZWN0KSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3Jlc29sdmVDYWxsYmFjayk7CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVFbmRD
YWxsYmFjayk7CisgICAgICAgIEFTU0VSVChtX3JlamVjdENhbGxiYWNrKTsKKyAgICB9CisgICAg
RE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNrKERPTVByb21pc2VJdGVyYXRvcldpdGhDYWxs
YmFjayYmIHByb21pc2UpCisgICAgICAgIDogbV93cmFwcGVyKFdURjo6bW92ZShwcm9taXNlLm1f
d3JhcHBlcikpCisgICAgICAgICwgbV9yZXNvbHZlQ2FsbGJhY2soV1RGOjptb3ZlKHByb21pc2Uu
bV9yZXNvbHZlQ2FsbGJhY2spKQorICAgICAgICAsIG1fcmVzb2x2ZUVuZENhbGxiYWNrKFdURjo6
bW92ZShwcm9taXNlLm1fcmVzb2x2ZUVuZENhbGxiYWNrKSkKKyAgICAgICAgLCBtX3JlamVjdENh
bGxiYWNrKFdURjo6bW92ZShwcm9taXNlLm1fcmVqZWN0Q2FsbGJhY2spKSB7IH0KKworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBWYWx1ZSYpOworICAgIHZvaWQgcmVzb2x2ZUVuZCgpOworICAgIHZv
aWQgcmVqZWN0KGNvbnN0IEVycm9yJik7CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8RGVmZXJy
ZWRXcmFwcGVyPiBtX3dyYXBwZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZhbHVl
Jik+IG1fcmVzb2x2ZUNhbGxiYWNrOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3Jlc29s
dmVFbmRDYWxsYmFjazsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgRXJyb3ImKT4gbV9y
ZWplY3RDYWxsYmFjazsKK307CisKIHRlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBlPgog
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRU
eXBlJiByZXN1bHQpCiB7CkBAIC0yNDIsNiArMjczLDQwIEBAIGlubGluZSB2b2lkIERPTVByb21p
c2VXaXRoQ2FsbGJhY2s8VmFsdWUsIEVycm9yPjo6cmVqZWN0KGNvbnN0IEVycm9yJiBlcnJvcikK
ICAgICBtX3dyYXBwZXIudmFsdWUoKS5yZWplY3QoZXJyb3IpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXJyb3I+CitpbmxpbmUgdm9pZCBET01Qcm9taXNlSXRlcmF0
b3JXaXRoQ2FsbGJhY2s8VmFsdWUsIEVycm9yPjo6cmVzb2x2ZShjb25zdCBWYWx1ZSYgdmFsdWUp
Cit7CisgICAgaWYgKG1fcmVzb2x2ZUNhbGxiYWNrKSB7CisgICAgICAgIG1fcmVzb2x2ZUNhbGxi
YWNrKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQobV93cmFwcGVy
KTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV93cmFwcGVyLnZhbHVl
KCkuZ2xvYmFsT2JqZWN0KCk7CisgICAgbV93cmFwcGVyLnZhbHVlKCkucmVzb2x2ZSh0b0pTSXRl
cmF0b3IoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEVycm9yPgoraW5saW5lIHZv
aWQgRE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNrPFZhbHVlLCBFcnJvcj46OnJlc29sdmVF
bmQoKQoreworICAgIGlmIChtX3Jlc29sdmVFbmRDYWxsYmFjaykgeworICAgICAgICBtX3Jlc29s
dmVFbmRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChtX3dy
YXBwZXIpOworICAgIG1fd3JhcHBlci52YWx1ZSgpLnJlc29sdmUodG9KU0l0ZXJhdG9yRW5kKG1f
d3JhcHBlci52YWx1ZSgpLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEVycm9yPgoraW5saW5lIHZvaWQgRE9NUHJv
bWlzZUl0ZXJhdG9yV2l0aENhbGxiYWNrPFZhbHVlLCBFcnJvcj46OnJlamVjdChjb25zdCBFcnJv
ciYgZXJyb3IpCit7CisgICAgaWYgKG1fcmVqZWN0Q2FsbGJhY2spIHsKKyAgICAgICAgbV9yZWpl
Y3RDYWxsYmFjayhlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1f
d3JhcHBlcik7CisgICAgbV93cmFwcGVyLnZhbHVlKCkucmVqZWN0KGVycm9yKTsKK30KKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAppbmRleCAy
MDJlZTE2Njk2NjRlMjlkYTRlOWMyODIwMWEwMTJmYTI2ZmFiN2MxLi4xM2UyZTFjYjI0NDUwMjMx
ODJkN2YxM2Y5MGVlYjc0Mjg0YmFlODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcApAQCAtNDQs
MjggKzQ0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1KU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OnJlYWQoRXhlY1N0YXRlKiBleGVjKQot
ewotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZl
cnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCgpKTsKLSAgICBEZWZlcnJlZFdyYXBwZXIg
d3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKTsKLQotICAgIGF1
dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKEpTVmFsdWUgdmFsdWUpIG11dGFibGUgewot
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KHdyYXBw
ZXIucHJvbWlzZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB2YWx1ZSwgZmFsc2Up
OwotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKLSAgICB9OwotICAgIGF1dG8gZW5k
Q2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCh3cmFwcGVyLnByb21pc2UoKS0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgSlNDOjpqc1VuZGVmaW5lZCgpLCB0cnVlKTsKLSAgICAgICAg
d3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7Ci0gICAgfTsKLSAgICBhdXRvIGZhaWx1cmVDYWxsYmFj
ayA9IFt3cmFwcGVyXShKU1ZhbHVlIHZhbHVlKSBtdXRhYmxlIHsKLSAgICAgICAgd3JhcHBlci5y
ZWplY3QodmFsdWUpOwotICAgIH07Ci0KLSAgICBpbXBsKCkucmVhZChXVEY6Om1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgV1RGOjptb3ZlKGVuZENhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxs
YmFjaykpOwotCi0gICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOwotfQotCiBK
U1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7CiAgICAgaWYgKG1fY2xvc2VkUHJvbWlzZURlZmVycmVkKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2NjQ0MjBk
OTY4YWQyNmRiNDljYThmMzlhYjIxMTA5MDU2NTczMjQuLjNkMjY3Y2JhNTg1N2JhOTJlOTFiZTJl
ZDY5ZmI4OTFlN2I1ZWE4YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNCBAQAogMjAxNS0wNy0wNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCisgICAgICAgIFtTdHJl
YW1zIEFQSV0gUmVtb3ZlIFJlYWRhYmxlU3RyZWFtU3RyZWFtLnJlYWQoKSBjdXN0b20gYmluZGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NjQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0Ogor
CisyMDE1LTA3LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+
CisKICAgICAgICAgUHJvbWlzZS1yZXR1cm5pbmcgZnVuY3Rpb25zIHNob3VsZCByZWplY3QgcHJv
bWlzZXMgaWYgdGhlIGNhbGxlZSBpcyBub3Qgb2YgdGhlIGV4cGVjdGVkIHR5cGUKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU4NQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1j
aGVja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAppbmRleCBiZjcyYzAwODQ4YjEwMTE0
OWEzOTRhMTAxMTgwODM0YmNiYzkxNjA3Li4zNzM1NzdlYjk4MjFkMjA3NTRkZTg3NzFhNjBmYWU1
MjM4YzliNWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQK
QEAgLTUsOCArNSw4IEBAIEZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdo
IHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMKIFBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCiBGQUlMIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldCcpCiBQQVNTIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLUZBSUwg
UmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayBDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnJlYWQgb24gaW5zdGFuY2VzIG9m
IFJlYWRhYmxlU3RyZWFtUmVhZGVyCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVh
bVJlYWRlci5yZWFkIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlcgorUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxv
Y2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJs
ZVN0cmVhbSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256283</attachid>
            <date>2015-07-07 00:00:59 -0700</date>
            <delta_ts>2015-07-07 01:01:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146643-20150707090000.patch</filename>
            <type>text/plain</type>
            <size>17848</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRhYzIxNjVlMzk5NDZm
N2Q5YTk3NGE3MWU2NzJjZmUwYTM5YTMwMS4uNjVmMjMwNTAzNWVlMmY2MjQ1MTk3NjZmYWJhMThi
OTQzNDAzYzA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA3LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW1SZWFkZXIucmVhZCgpIGN1c3RvbSBiaW5kaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBNb3ZlZCBSZWFk
YWJsZVN0cmVhbVJlYWRlci5yZWFkIGhhbmRsaW5nIGZyb20gY2FsbGJhY2tzIHRvIHByb21pc2Vz
LgorICAgICAgICBJbnRyb2R1Y2VkIERPTVByb21pc2VJdGVyYXRvcldpdGhDYWxsYmFjayBmb3Ig
dGhhdCBwdXJwb3NlOiBpdCB0YWtlcyByZXNvbHZlKCkgdG8gcmVzb2x2ZSBhIHByb21pc2Ugd2l0
aCBhIG5vdC1lbmRpbmcgaXRlcmF0b3IgdmFsdWUsCisgICAgICAgIHJlc29sdmVFbmQoKSB0byBy
ZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGEgdGVybWluYXRpbmcgaXRlcmF0b3IgdmFsdWUgYW5kIHJl
amVjdCgpLgorICAgICAgICBBZGRlZCB0ZW1wbGF0ZSBoZWxwZXIgcm91dGluZSB0byBjb252ZXJ0
IHR5cGVkIHZhbHVlcyB0byBKUyBpdGVyYXRvciB3cmFwcGluZyB0aGUgdmFsdWUuCisgICAgICAg
IFJlbW92ZWQgUmVhZGFibGVTdHJlYW1SZWFkZXIucmVhZCBjdXN0b20gYmluZGluZy4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uY3BwOiBVcGRhdGVkIGNvZGUgdG8gdXNlIERPTVByb21pc2VJdGVy
YXRvcldpdGhDYWxsYmFjayBBUEkuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6
cmVsZWFzZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdl
U3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlc29sdmVSZWFkQ2FsbGJhY2sp
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZCk6CisgICAgICAgICogTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmlkbDogUmVtb3ZlZCBjdXN0b20gYmluZGluZy4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNJdGVy
YXRvcik6IGNyZWF0ZSBKUyBpdGVyYXRvciBmcm9tIHR5cGVkIHZhbHVlLgorICAgICAgICAoV2Vi
Q29yZTo6dG9KU0l0ZXJhdG9yRW5kKTogY3JlYXRlIEpTIGVuZCBpdGVyYXRvci4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRXcmFwcGVyOjpnbG9iYWxPYmplY3QpOiBBZGRlZCBnbG9iYU9iamVjdCBnZXR0ZXIgYW5kIHJl
bW92ZWQgcHJvbWlzZSBnZXR0ZXIuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2s6OkRP
TVByb21pc2VJdGVyYXRvcldpdGhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpFcnJvcj46
OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RXJyb3I+OjpyZXNvbHZlRW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVycm9yPjo6cmVqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDogUmVtb3ZlZCBjdXN0b20gYmluZGluZy4KKwog
MjAxNS0wNy0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT046IFNsaWRlciB0aHVtYiBkb2VzIG5vdCByZW5kZXIgcHJvcGVybHkgKGltYWdlIHRl
c3RzIHdpdGggPGlucHV0IHR5cGU9InJhbmdlIj4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCAxNDMzOTY5MGE5YzdlOTVmNmU2
MDdiN2YxMWFmODMzN2JmZjEwYmExLi41NTVkMDJkNDJhM2VhYTE4ZDMzNjExNzUzYzk2YzEzYmIz
MmYyNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVsZWFz
ZVJlYWRlcigpCiAgICAgICAgIG1fY2xvc2VkUHJvbWlzZS52YWx1ZSgpLnJlc29sdmUobnVsbHB0
cik7CiAKICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKLSAgICAgICAg
cmVxdWVzdC5lbmRDYWxsYmFjaygpOworICAgICAgICByZXF1ZXN0LnJlc29sdmVFbmQoKTsKIAog
ICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiAgICAgaWYgKG1fcmVhZGVyKQpAQCAtMTEyLDcgKzExMiw3
IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKICAgICAgICAg
bV9jbG9zZWRQcm9taXNlLnZhbHVlKCkucmVqZWN0KGVycm9yKTsKIAogICAgIGZvciAoYXV0byYg
cmVxdWVzdCA6IG1fcmVhZFJlcXVlc3RzKQotICAgICAgICByZXF1ZXN0LmZhaWx1cmVDYWxsYmFj
ayhlcnJvcik7CisgICAgICAgIHJlcXVlc3QucmVqZWN0KGVycm9yKTsKIAogICAgIGNsZWFyQ2Fs
bGJhY2tzKCk7CiAgICAgaWYgKG1fcmVhZGVyKQpAQCAtMjM2LDI1ICsyMzYsMjUgQEAgdm9pZCBS
ZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFByb21pc2UmJiBwcm9taXNlKQogICAgIG1fY2xv
c2VkUHJvbWlzZSA9IFdURjo6bW92ZShwcm9taXNlKTsKIH0KIAotdm9pZCBSZWFkYWJsZVN0cmVh
bTo6cmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNrJiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkRW5kQ2Fs
bGJhY2smJiBlbmRDYWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQor
dm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVhZChSZWFkUHJvbWlzZSYmIHJlYWRQcm9taXNlKQogewog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKLSAgICAgICAgZW5kQ2FsbGJhY2so
KTsKKyAgICAgICAgcmVhZFByb21pc2UucmVzb2x2ZUVuZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKSB7Ci0gICAgICAgIGZhaWx1
cmVDYWxsYmFjayhlcnJvcigpKTsKKyAgICAgICAgcmVhZFByb21pc2UucmVqZWN0KGVycm9yKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChoYXNWYWx1ZSgpKSB7Ci0gICAgICAg
IHN1Y2Nlc3NDYWxsYmFjayhyZWFkKCkpOworICAgICAgICByZWFkUHJvbWlzZS5yZXNvbHZlKHJl
YWQoKSk7CiAgICAgICAgIGlmICghbV9jbG9zZVJlcXVlc3RlZCkKICAgICAgICAgICAgIHB1bGwo
KTsKICAgICAgICAgZWxzZSBpZiAoIWhhc1ZhbHVlKCkpCiAgICAgICAgICAgICBjbG9zZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZCh7IFdURjo6
bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZW5kQ2FsbGJhY2spLCBXVEY6Om1vdmUo
ZmFpbHVyZUNhbGxiYWNrKSB9KTsKKyAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoV1RGOjptb3Zl
KHJlYWRQcm9taXNlKSk7CiAgICAgcHVsbCgpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZVJlYWRDYWxsYmFjayhKU0M6OkpTVmFsdWUgdmFsdWUp
CiAgICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgbV9yZWFkUmVxdWVzdHMudGFrZUZpcnN0KCkuc3VjY2Vzc0NhbGxiYWNrKHZhbHVl
KTsKKyAgICBtX3JlYWRSZXF1ZXN0cy50YWtlRmlyc3QoKS5yZXNvbHZlKHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uaAppbmRleCBmMDhkODAwMWYzNTBhMTc2YTc1NjUyNDMwODEwZTlhZDRmOWEx
NWEwLi4yOTU1MDQxNmM3N2ZjODkwNjVhYTQwOTg5M2IwMzQyMGZmNjExZjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApAQCAtODksOCAr
ODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlDYW5jZWxTdWNjZWVkZWQoKTsKICAgICB2
b2lkIG5vdGlmeUNhbmNlbEZhaWxlZCgpOwogCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSlNDOjpKU1ZhbHVlKT4gRmFpbHVyZUNhbGxiYWNrOwotCiAgICAgdHlwZWRlZiBET01Qcm9t
aXNlPHN0ZDo6bnVsbHB0cl90LCBKU0M6OkpTVmFsdWU+IENhbmNlbFByb21pc2U7CiAgICAgdm9p
ZCBjYW5jZWwoSlNDOjpKU1ZhbHVlLCBDYW5jZWxQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIGNhbmNlbE5vQ2hlY2soSlNDOjpKU1ZhbHVlLCBDYW5jZWxQcm9taXNlJiYpOwpA
QCAtOTgsOSArOTYsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVs
bHB0cl90LCBKU0M6OkpTVmFsdWU+IENsb3NlZFByb21pc2U7CiAgICAgdm9pZCBjbG9zZWQoQ2xv
c2VkUHJvbWlzZSYmKTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKEpTQzo6SlNW
YWx1ZSk+IFJlYWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gUmVhZEVuZENhbGxiYWNrOwotICAgIHZvaWQgcmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNr
JiYsIFJlYWRFbmRDYWxsYmFjayYmLCBGYWlsdXJlQ2FsbGJhY2smJik7CisgICAgdHlwZWRlZiBE
T01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2s8SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWU+
IFJlYWRQcm9taXNlOworICAgIHZvaWQgcmVhZChSZWFkUHJvbWlzZSYmKTsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
QEAgLTEyOCwxMiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxDYW5jZWxQcm9taXNl
PiBtX2NhbmNlbFByb21pc2U7CiAgICAgT3B0aW9uYWw8Q2xvc2VkUHJvbWlzZT4gbV9jbG9zZWRQ
cm9taXNlOwogCi0gICAgc3RydWN0IFJlYWRDYWxsYmFja3MgewotICAgICAgICBSZWFkU3VjY2Vz
c0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgUmVhZEVuZENhbGxiYWNrIGVuZENh
bGxiYWNrOwotICAgICAgICBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrOwotICAgIH07
Ci0gICAgRGVxdWU8UmVhZENhbGxiYWNrcz4gbV9yZWFkUmVxdWVzdHM7CisgICAgRGVxdWU8UmVh
ZFByb21pc2U+IG1fcmVhZFJlcXVlc3RzOwogCiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzUHVsbGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAppbmRleCAw
ZmJkNTJmMDFkMjg3NWYyM2EyNzVhMjhhOTYyNGU5YTA0MTkwNmZkLi4zZjM3ZDk5YzAxZDljMWFh
YWU5ZGM4ZWMyOGNmNzdjNWU2ZWYwZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKQEAgLTU1LDEzICs1NSwx
MyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNs
b3NlZFByb21pc2UmJiBwcm9taXNlKQogICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUocHJv
bWlzZSkpOwogfQogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxlU3Ry
ZWFtOjpSZWFkU3VjY2Vzc0NhbGxiYWNrJiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJsZVN0cmVh
bTo6UmVhZEVuZENhbGxiYWNrJiYgZW5kQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJl
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCit2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpy
ZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKG1f
c3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7Ci0gICAg
ICAgIGVuZENhbGxiYWNrKCk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZUVuZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1fc3RyZWFtLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURjo6bW92ZShlbmRDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2sp
KTsKKyAgICBtX3N0cmVhbS5yZWFkKFdURjo6bW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgUmVh
ZGFibGVTdHJlYW1SZWFkZXI6OnJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
aAppbmRleCA2NmYzNWY3MGNkMmZkYmIyZTA3ZDlhOTllNmIzOGU0MjYwNThmZmZmLi5iNGQyZmI1
M2Q1MTEwYjJkMTE2YTUzNzVlZGM2MjgzNWYzMTA0OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUsIFJlYWRhYmxl
U3RyZWFtOjpDYW5jZWxQcm9taXNlJiYpOwogICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFt
OjpDbG9zZWRQcm9taXNlJiYpOwotICAgIHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1
Y2Nlc3NDYWxsYmFjayYmLCBSZWFkYWJsZVN0cmVhbTo6UmVhZEVuZENhbGxiYWNrJiYsIFJlYWRh
YmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkKFJlYWRhYmxlU3Ry
ZWFtOjpSZWFkUHJvbWlzZSYmKTsKICAgICB2b2lkIHJlbGVhc2VMb2NrKEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX3N0cmVhbS5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKaW5k
ZXggNzgzOGI2MmMyMmVjMzhlM2RkNWZmMmViOTI3ZWEzZmFmMjFlZDVmZS4uZGE5Y2U5MzEyMTRh
ODM4NzdlZWZmMWQyOTgzNjQ2NGE0ZDE1NDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCkBAIC0zMyw3ICsz
Myw3IEBACiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHsKLSAgICBbQ3VzdG9tXSBPYmplY3Qg
cmVhZCgpOworICAgIFByb21pc2UgcmVhZCgpOwogICAgIFByb21pc2UgY2FuY2VsKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0g
dm9pZCByZWxlYXNlTG9jaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IGE2MjkzMGExMDk2NWUyNDI1M2UyMmM1OWFmYWM2Y2U3MmY1YmJmNGQuLmFl
N2MxNWZhZjcxMDdiYWEwNTEwNmZlMzkyZmVhMTBiY2RlMWQ0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
aGVhcC9XZWFrLmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KQEAgLTM5Niw2
ICszOTcsMjEgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4ganNTdHJpbmdP
ck51bGwoZXhlYywgdmFsdWUpOwogfQogCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNJdGVyYXRv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQoreworICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmc3RhdGUs
IHZhbHVlLCBmYWxzZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpT
VmFsdWUgdG9KU0l0ZXJhdG9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgY29uc3QgVCYgdmFsdWUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUl0
ZXJhdG9yUmVzdWx0T2JqZWN0KCZzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIHZh
bHVlKSwgZmFsc2UpOworfQorCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNJdGVyYXRvckVuZChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0
T2JqZWN0KCZzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpLCB0cnVlKTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEpTVmFsdWVUcmFpdHMgewogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBUJiB2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAppbmRleCA5NjU2ZTIxZWRjN2ZiMjQ1MzUzN2ZjNjk4
NmQ1N2FjNTg4MGY1NWYxLi5jNGIwNjExM2Q4NWY3MGQ4M2FjNTZiNWFkNzg1ZGMxNTcwZjUxMjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTQx
LDEyICs0MSwxMSBAQCBEZWZlcnJlZFdyYXBwZXI6OkRlZmVycmVkV3JhcHBlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogfQogCi1KU09iamVjdCog
RGVmZXJyZWRXcmFwcGVyOjpwcm9taXNlKCkgY29uc3QKK0pTRE9NR2xvYmFsT2JqZWN0JiBEZWZl
cnJlZFdyYXBwZXI6Omdsb2JhbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGFjY2Vzc29yIG9uY2UgUmVhZGFibGVTdHJlYW1SZWFkZXIgY3VzdG9tIGJpbmRpbmcg
ZG9lcyBub3QgbmVlZCBpdC4KLSAgICBBU1NFUlQobV9kZWZlcnJlZCk7Ci0gICAgcmV0dXJuIG1f
ZGVmZXJyZWQtPnByb21pc2UoKTsKLX0KKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAg
IHJldHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7Cit9IAogCiB2b2lkIERlZmVycmVkV3JhcHBl
cjo6Y2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgSlNWYWx1
ZSByZXNvbHV0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCBiMTVhOGFhMDk1OGQxYWQxZjhkZTIwZDJhODhmM2IyZDBiNjAzMmZkLi44NjQzYWI3
NzBhNjFhMzU1ZTg5MGE1Y2NlMzViMzg2M2U0OWFjNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4KICAgICB2b2lkIHJlamVjdChjb25zdCBSZWpl
Y3RSZXN1bHRUeXBlJik7CiAKLSAgICBKU0M6OkpTT2JqZWN0KiBwcm9taXNlKCkgY29uc3Q7Cisg
ICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHZvaWQgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbik7CkBAIC05NiwxMCArOTYsNiBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChtX3Jlc29sdmVDYWxsYmFjayk7CiAgICAgICAgIEFTU0VSVChtX3Jl
amVjdENhbGxiYWNrKTsKICAgICB9Ci0gICAgZXhwbGljaXQgRE9NUHJvbWlzZVdpdGhDYWxsYmFj
ayhET01Qcm9taXNlV2l0aENhbGxiYWNrJiYgcHJvbWlzZSkKLSAgICAgICAgOiBtX3dyYXBwZXIo
V1RGOjptb3ZlKHByb21pc2UubV93cmFwcGVyKSkKLSAgICAgICAgLCBtX3Jlc29sdmVDYWxsYmFj
ayhXVEY6Om1vdmUocHJvbWlzZS5tX3Jlc29sdmVDYWxsYmFjaykpCi0gICAgICAgICwgbV9yZWpl
Y3RDYWxsYmFjayhXVEY6Om1vdmUocHJvbWlzZS5tX3JlamVjdENhbGxiYWNrKSkgeyB9CiAKICAg
ICB2b2lkIHJlc29sdmUoY29uc3QgVmFsdWUmKTsKICAgICB2b2lkIHJlamVjdChjb25zdCBFcnJv
ciYpOwpAQCAtMTEwLDYgKzEwNiwzMSBAQCBwcml2YXRlOgogICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBFcnJvciYpPiBtX3JlamVjdENhbGxiYWNrOwogfTsKIAordGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEVycm9yPgorY2xhc3MgRE9NUHJvbWlzZUl0ZXJhdG9yV2l0aENh
bGxiYWNrIHsKK3B1YmxpYzoKKyAgICBET01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2soRGVm
ZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikgOiBtX3dyYXBwZXIoV1RGOjptb3ZlKHdyYXBwZXIpKSB7
IH0KKyAgICBET01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IFZhbHVlJik+IHJlc29sdmUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiByZXNvbHZlRW5k
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgRXJyb3ImKT4gcmVqZWN0KQorICAgICAgICA6IG1f
cmVzb2x2ZUNhbGxiYWNrKFdURjo6bW92ZShyZXNvbHZlKSkKKyAgICAgICAgLCBtX3Jlc29sdmVF
bmRDYWxsYmFjayhXVEY6Om1vdmUocmVzb2x2ZUVuZCkpCisgICAgICAgICwgbV9yZWplY3RDYWxs
YmFjayhXVEY6Om1vdmUocmVqZWN0KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVD
YWxsYmFjayk7CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVFbmRDYWxsYmFjayk7CisgICAgICAg
IEFTU0VSVChtX3JlamVjdENhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc29sdmUoY29u
c3QgVmFsdWUmKTsKKyAgICB2b2lkIHJlc29sdmVFbmQoKTsKKyAgICB2b2lkIHJlamVjdChjb25z
dCBFcnJvciYpOworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPERlZmVycmVkV3JhcHBlcj4gbV93
cmFwcGVyOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWYWx1ZSYpPiBtX3Jlc29sdmVD
YWxsYmFjazsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9yZXNvbHZlRW5kQ2FsbGJhY2s7
CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IEVycm9yJik+IG1fcmVqZWN0Q2FsbGJhY2s7
Cit9OworCiB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KIGlubGluZSB2b2lkIERl
ZmVycmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBSZXNvbHZlUmVzdWx0VHlwZSYgcmVzdWx0KQog
ewpAQCAtMjI3LDcgKzI0OCw2IEBAIGlubGluZSB2b2lkIERPTVByb21pc2VXaXRoQ2FsbGJhY2s8
VmFsdWUsIEVycm9yPjo6cmVzb2x2ZShjb25zdCBWYWx1ZSYgdmFsdWUpCiAgICAgICAgIG1fcmVz
b2x2ZUNhbGxiYWNrKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQo
bV93cmFwcGVyKTsKICAgICBtX3dyYXBwZXIudmFsdWUoKS5yZXNvbHZlKHZhbHVlKTsKIH0KIApA
QCAtMjM4LDcgKzI1OCwzNyBAQCBpbmxpbmUgdm9pZCBET01Qcm9taXNlV2l0aENhbGxiYWNrPFZh
bHVlLCBFcnJvcj46OnJlamVjdChjb25zdCBFcnJvciYgZXJyb3IpCiAgICAgICAgIG1fcmVqZWN0
Q2FsbGJhY2soZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVChtX3dy
YXBwZXIpOworICAgIG1fd3JhcHBlci52YWx1ZSgpLnJlamVjdChlcnJvcik7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFcnJvcj4KK2lubGluZSB2b2lkIERPTVByb21p
c2VJdGVyYXRvcldpdGhDYWxsYmFjazxWYWx1ZSwgRXJyb3I+OjpyZXNvbHZlKGNvbnN0IFZhbHVl
JiB2YWx1ZSkKK3sKKyAgICBpZiAobV9yZXNvbHZlQ2FsbGJhY2spIHsKKyAgICAgICAgbV9yZXNv
bHZlQ2FsbGJhY2sodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSBtX3dyYXBwZXIudmFsdWUoKS5nbG9iYWxPYmplY3Qo
KTsKKyAgICBtX3dyYXBwZXIudmFsdWUoKS5yZXNvbHZlKHRvSlNJdGVyYXRvcigqZ2xvYmFsT2Jq
ZWN0Lmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXJyb3I+CitpbmxpbmUgdm9pZCBET01Qcm9taXNlSXRl
cmF0b3JXaXRoQ2FsbGJhY2s8VmFsdWUsIEVycm9yPjo6cmVzb2x2ZUVuZCgpCit7CisgICAgaWYg
KG1fcmVzb2x2ZUVuZENhbGxiYWNrKSB7CisgICAgICAgIG1fcmVzb2x2ZUVuZENhbGxiYWNrKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV93cmFwcGVyLnZhbHVlKCkucmVzb2x2ZSh0
b0pTSXRlcmF0b3JFbmQoKm1fd3JhcHBlci52YWx1ZSgpLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4
ZWMoKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXJyb3I+Citp
bmxpbmUgdm9pZCBET01Qcm9taXNlSXRlcmF0b3JXaXRoQ2FsbGJhY2s8VmFsdWUsIEVycm9yPjo6
cmVqZWN0KGNvbnN0IEVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAobV9yZWplY3RDYWxsYmFjaykg
eworICAgICAgICBtX3JlamVjdENhbGxiYWNrKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBtX3dyYXBwZXIudmFsdWUoKS5yZWplY3QoZXJyb3IpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCmluZGV4IDIwMmVlMTY2OTY2NGUyOWRhNGU5YzI4MjAxYTAxMmZhMjZmYWI3YzEu
LjEzZTJlMWNiMjQ0NTAyMzE4MmQ3ZjEzZjkwZWViNzQyODRiYWU4NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCkBAIC00NCwyOCArNDQsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJl
ZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOwotICAg
IERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVm
ZXJyZWQpOwotCi0gICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2
YWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY3JlYXRlSXRlcmF0b3JS
ZXN1bHRPYmplY3Qod3JhcHBlci5wcm9taXNlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCksIHZhbHVlLCBmYWxzZSk7Ci0gICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOwotICAg
IH07Ci0gICAgYXV0byBlbmRDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewotICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KHdyYXBwZXIucHJv
bWlzZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBKU0M6OmpzVW5kZWZpbmVkKCks
IHRydWUpOwotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKLSAgICB9OwotICAgIGF1
dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKEpTVmFsdWUgdmFsdWUpIG11dGFibGUgewot
ICAgICAgICB3cmFwcGVyLnJlamVjdCh2YWx1ZSk7Ci0gICAgfTsKLQotICAgIGltcGwoKS5yZWFk
KFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZW5kQ2FsbGJhY2spLCBXVEY6
Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5w
cm9taXNlKCk7Ci19Ci0KIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAobV9jbG9zZWRQcm9taXNlRGVmZXJyZWQp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzBjNTU2NDg4OWNlNjQ1NzBjZTExM2M0ZWZhNjVjYWJlM2M2Y2I1OS4uMTgxNWZj
N2IyYThlMDMzZTk2MjAyNDllYTdlN2U4YTY0MDUzNTkyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTA3LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+
CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBSZW1vdmUgUmVhZGFibGVTdHJlYW1TdHJlYW0ucmVh
ZCgpIGN1c3RvbSBiaW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1l
eHBlY3RlZC50eHQ6CisKIDIwMTUtMDctMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBTbGlkZXIgdGh1bWIgZG9lcyBub3QgcmVuZGVyIHBy
b3Blcmx5IChpbWFnZSB0ZXN0cyB3aXRoIDxpbnB1dCB0eXBlPSJyYW5nZSI+KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hl
Y2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKaW5kZXggYmY3MmMwMDg0OGIxMDExNDlh
Mzk0YTEwMTE4MDgzNGJjYmM5MTYwNy4uMzczNTc3ZWI5ODIxZDIwNzU0ZGU4NzcxYTYwZmFlNTIz
OGM5YjVmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CkBA
IC01LDggKzUsOCBAQCBGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCB3
b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzCiBQQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAogRkFJTCBSZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQnKQogUEFTUyBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1GQUlMIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIG9uIGluc3RhbmNlcyBvZiBS
ZWFkYWJsZVN0cmVhbVJlYWRlcgotRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUu
cmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1S
ZWFkZXIucmVhZCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIKK1BBU1MgUmVh
ZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAK
K1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2Nr
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGNhbid0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVT
dHJlYW0gCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>