<?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>204151</bug_id>
          
          <creation_ts>2019-11-13 04:06:28 -0800</creation_ts>
          <short_desc>Automation: evaluateJavaScriptFunction should use Promises</short_desc>
          <delta_ts>2020-01-23 13:44:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206646</see_also>
          <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>
          <dependson>204880</dependson>
          <blocked>184966</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1589821</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-13 04:06:28 -0800</bug_when>
    <thetext>As documented in the spec. This is causing several test failures:

imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_resolve
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_resolve_delayed
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_all_resolve
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_await_promise_resolve
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_resolve_timeout
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_reject
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_reject_delayed
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_all_reject
imported/w3c/webdriver/tests/execute_async_script/promise.py::test_promise_reject_timeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595762</commentid>
    <comment_count>1</comment_count>
      <attachid>384893</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-05 03:18:49 -0800</bug_when>
    <thetext>Created attachment 384893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601226</commentid>
    <comment_count>2</comment_count>
      <attachid>386336</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-23 03:30:04 -0800</bug_when>
    <thetext>Created attachment 386336
Rebased partch

It won&apos;t apply yet though, but it&apos;s rebased after r253883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603850</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-07 16:06:51 -0800</bug_when>
    <thetext>Does this apply now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603991</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-08 00:23:19 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #3)
&gt; Does this apply now?

I don&apos;t think so, it depends on bug #204880. Even if this applied, it would make imported/w3c/webdriver/tests/back/user_prompts.py and imported/w3c/webdriver/tests/forward/user_prompts.py regress without the patch for bug #204880, so better fix that one first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604021</commentid>
    <comment_count>5</comment_count>
      <attachid>387089</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-08 02:59:43 -0800</bug_when>
    <thetext>Created attachment 387089
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604759</commentid>
    <comment_count>6</comment_count>
      <attachid>387089</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-09 12:05:52 -0800</bug_when>
    <thetext>Comment on attachment 387089
Rebased patch

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

r=me, nice work!

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:198
&gt; +    } else if (JSValueIsObject(context, arguments[2])) {

I like this change.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:102
&gt; +        // finishes resolved, so we need to start a new one here to wait for the second promise to be reolved or the timeout.

Nit: resolved

So in other words, `resultPromise` could resolve to a Promise that is not settled (because we passed the `resolve` for the inner racing promise), so it has to be waited. It&apos;s a little tragic to have to do this, but I guess I can&apos;t think of an alternative if we can&apos;t assume anything about the callback&apos;s argument type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605024</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-10 00:44:44 -0800</bug_when>
    <thetext>Committed r254329: &lt;https://trac.webkit.org/changeset/254329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605025</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 00:45:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/58472883&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384893</attachid>
            <date>2019-12-05 03:18:49 -0800</date>
            <delta_ts>2019-12-23 03:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-promises.diff</filename>
            <type>text/plain</type>
            <size>18828</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggNGRlZmQ3MDg1MDEuLjQ0YzhiMDU2OWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEyLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbiBzaG91bGQgdXNlIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2Vi
RHJpdmVyOjpDb21tYW5kUmVzdWx0OjpodHRwU3RhdHVzQ29kZSBjb25zdCk6IFRpbWVvdXQgZXJy
b3JzIHNob3VsZCByZXR1cm4gNTAwIG5vdCA0MDguCisgICAgICAgICogU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmV4ZWN1dGVTY3JpcHQpOiBFbnN1cmUgdGhlIHNj
cmlwdCBib2R5IGdvZXMgYmV0d2VlbiBuZXcgbGluZXMgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aAor
ICAgICAgICB0cmFpbGluZyBjb21tZW50cyBsaWtlIGluIGZ1bmN0aW9uKCkgeyByZXR1cm4gZm9v
OyAvLyBDb21tZW50IH0uCisKIDIwMTktMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaGFuZGxlIGVsZW1lbnRzIG9m
IHR5cGUgZmlsZSBpbiBzZW5kIGtleXMgY29tbWFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5j
cHAKaW5kZXggZDQwZmY2NTgxZjAuLjY0MTFjMWM5YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5jcHAKQEAgLTE0NiwxMiArMTQ2LDExIEBAIHVuc2lnbmVkIENvbW1hbmRSZXN1bHQ6Omh0
dHBTdGF0dXNDb2RlKCkgY29uc3QKICAgICBjYXNlIEVycm9yQ29kZTo6SW52YWxpZFNlc3Npb25J
RDoKICAgICBjYXNlIEVycm9yQ29kZTo6VW5rbm93bkNvbW1hbmQ6CiAgICAgICAgIHJldHVybiA0
MDQ7Ci0gICAgY2FzZSBFcnJvckNvZGU6OlNjcmlwdFRpbWVvdXQ6Ci0gICAgY2FzZSBFcnJvckNv
ZGU6OlRpbWVvdXQ6Ci0gICAgICAgIHJldHVybiA0MDg7CiAgICAgY2FzZSBFcnJvckNvZGU6Okph
dmFzY3JpcHRFcnJvcjoKICAgICBjYXNlIEVycm9yQ29kZTo6TW92ZVRhcmdldE91dE9mQm91bmRz
OgorICAgIGNhc2UgRXJyb3JDb2RlOjpTY3JpcHRUaW1lb3V0OgogICAgIGNhc2UgRXJyb3JDb2Rl
OjpTZXNzaW9uTm90Q3JlYXRlZDoKKyAgICBjYXNlIEVycm9yQ29kZTo6VGltZW91dDoKICAgICBj
YXNlIEVycm9yQ29kZTo6VW5hYmxlVG9DYXB0dXJlU2NyZWVuOgogICAgIGNhc2UgRXJyb3JDb2Rl
OjpVbmV4cGVjdGVkQWxlcnRPcGVuOgogICAgIGNhc2UgRXJyb3JDb2RlOjpVbmtub3duRXJyb3I6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcAppbmRleCAxNTNkZTgwYzYwNS4uZGJkMTQ5MjQ1YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtMjEzMCwxMyArMjEzMCwxMiBAQCB2b2lkIFNlc3Npb246OmV4ZWN1dGVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBhcmd1bWVu
dAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJf
cywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKG1fY3Vy
cmVudEJyb3dzaW5nQ29udGV4dCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
ZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICAg
ICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKCl7IiArIHNj
cmlwdCArICd9Jyk7CisgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnVuY3Rpb24iX3Ms
ICJmdW5jdGlvbigpe1xuIiArIHNjcmlwdCArICJcbn0iKTsKICAgICAgICAgcGFyYW1ldGVycy0+
c2V0QXJyYXkoImFyZ3VtZW50cyJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKLSAgICAgICAgaWYg
KG1vZGUgPT0gRXhlY3V0ZVNjcmlwdE1vZGU6OkFzeW5jKSB7CisgICAgICAgIGlmIChtb2RlID09
IEV4ZWN1dGVTY3JpcHRNb2RlOjpBc3luYykKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldEJv
b2xlYW4oImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQiX3MsIHRydWUpOwotICAgICAg
ICAgICAgaWYgKG1fc2NyaXB0VGltZW91dCkKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5z
ZXRJbnRlZ2VyKCJjYWxsYmFja1RpbWVvdXQiX3MsIG1fc2NyaXB0VGltZW91dC5taWxsaXNlY29u
ZHNBczxpbnQ+KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3NjcmlwdFRpbWVvdXQpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRJbnRlZ2VyKCJjYWxsYmFja1RpbWVvdXQiX3MsIG1f
c2NyaXB0VGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCkpOwogICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlS
ZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewog
ICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3Zl
KHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYWQ0NDdjYmNjLi44NTg2
MDVkZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0xMi0wNSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgQXV0b21hdGlvbjog
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24gc2hvdWxkIHVzZSBQcm9taXNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0aGUgZnVuY3Rpb24g
dG8gcnVuIHNjcmlwdHMgYXN5bmMgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFzIGEgcHJvbWlzZS4g
VG8gaW1wbGVtZW50IHRoZSBzY3JpcHQgdGltZW91dCB3ZQorICAgICAgICB1c2UgYW5vdGhlciBw
cm9taXNlIHRoYXQgc3RhcnRzIHRoZSB0aW1lciBhbmQgdGhlbiB3ZSBydW4gYSBQcm9taXNlLnJh
Y2UoKSB3aXRoIGJvdGggcHJvbWlzZXMuIFRvIHNpbXBsaWZ5IHRoZQorICAgICAgICByZXN1bHRz
IHJlcG9ydGluZywgYWxsIGV4Y2VwdGlvbnMgKGluY2x1ZGluZyB0aW1lb3V0IGVycm9ycyB0aGF0
IGFyZSBub3cgaGFuZGxlZCBhcyBleGNlcHRpb25zKSBhcmUgbm93IGhhbmRsZWQKKyAgICAgICAg
YXMgZXJyb3JzIHBhc3NlZCB0byB0aGUgcmVzdWx0Q2FsbGJhY2suIFRoZSBib29sZWFuIHBhcmFt
ZXRlciBoYXMgYmVlbiByZW1vdmVkLCB3ZSBjYW4gc2ltcGx5IGNoZWNrIHRoZSB0eXBlIG9mCisg
ICAgICAgIHRoZSB2YWx1ZSByZWNlaXZlZCBiZWNhdXNlIHJlc3VsdHMgYXJlIGFsd2F5cyBzdHJp
bmdzIGFuZCBlcnJvcnMgYXJlIGFsd2F5cyBleGNlcHRpb24gb2JqZWN0cy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6ZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2spOiBIYW5kbGUgdGhlIHNj
cmlwdCByZXN1bHQsIGluY2x1ZGluZyBhbGwgcG9zc2libGUgZXJyb3JzIG5vdyAobm90IG9ubHkg
dGltZW91dHMpLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbik6IEFueSBleGNlcHRpb24gcnVubmluZyB0aGUgc2Ny
aXB0IHNob3VsZCBiZSBhbgorICAgICAgICBpbnRlcm5hbCBlcnJvciBub3cuIFRoZSBjb2RlIHRv
IGhhbmRsZSBlcnJvciBoYXMgYmVlbiBtb3ZlZCB0byBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFj
aygpLgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmpzOgorICAgICAgICAoV2ViS2l0QXV0b21hdGlvbi5BdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LnByb3RvdHlwZS5ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbik6IENhbGwgX2V4ZWN1dGUg
YW5kIGhhbmRsZSB0aGUKKyAgICAgICAgcHJvbWlzZSByZXN1bHQgdG8gY2FsbCByZXN1bHRDYWxs
YmFjayB3aXR5aCBlaXRoZXIgdGhlIHJlc3VsdCBvciB0aGUgZXJyb3IuCisgICAgICAgIChXZWJL
aXRBdXRvbWF0aW9uLkF1dG9tYXRpb25TZXNzaW9uUHJveHkucHJvdG90eXBlLl9leGVjdXRlKTog
TWFrZSB0aGUgZnVuY3Rpb24gdG8gcnVuIHRoZSBzY3JpcHQgYXN5bmMgYW5kCisgICAgICAgIGhh
bmRsZSB0aGUgcmVzdWx0IGFzIGEgcHJvbWlzZS4KKwogMjAxOS0xMi0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQXV0b21hdGlvbjogc2Ny
aXB0cyBhcmUgZXhlY3V0ZWQgaW4gdGhlIHdyb25nIGpzIGNvbnRleHQgYWZ0ZXIgYSBoaXN0b3J5
IG5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggNzUwMWEz
MjNkZmMuLjZjZjBmODJiNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApA
QCAtMTM2LDExICsxMzYsMTAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVVVJRChKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWMKIAogc3RhdGljIEpT
VmFsdWVSZWYgZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewotICAgIEFTU0VSVF9BUkcoYXJndW1lbnRDb3VudCwgYXJndW1lbnRDb3VudCA9
PSA0KTsKKyAgICBBU1NFUlRfQVJHKGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQgPT0gMyk7
CiAgICAgQVNTRVJUX0FSRyhhcmd1bWVudHMsIEpTVmFsdWVJc051bWJlcihjb250ZXh0LCBhcmd1
bWVudHNbMF0pKTsKICAgICBBU1NFUlRfQVJHKGFyZ3VtZW50cywgSlNWYWx1ZUlzTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSkpOwotICAgIEFTU0VSVF9BUkcoYXJndW1lbnRzLCBKU1ZhbHVl
SXNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzJdKSk7Ci0gICAgQVNTRVJUX0FSRyhhcmd1bWVu
dHMsIEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzNdKSk7CisgICAgQVNTRVJU
X0FSRyhhcmd1bWVudHMsIEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMl0pIHx8
IEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMl0pKTsKIAogICAgIGF1dG8gYXV0
b21hdGlvblNlc3Npb25Qcm94eSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1dG9tYXRpb25T
ZXNzaW9uUHJveHkoKTsKICAgICBpZiAoIWF1dG9tYXRpb25TZXNzaW9uUHJveHkpCkBAIC0xNDgs
MjEgKzE0NywzNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZgogCiAgICAgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQgPSBXZWJDb3JlOjpmcmFtZUlkZW50aWZpZXJGcm9tSUQoSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbik7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKSk7Ci0KLSAgICBib29sIHJlc3Vs
dElzRXJyb3JOYW1lID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbM10pOwot
Ci0gICAgaWYgKHJlc3VsdElzRXJyb3JOYW1lKSB7Ci0gICAgICAgIGlmIChyZXN1bHQtPnN0cmlu
ZygpID09ICJKYXZhU2NyaXB0VGltZW91dCIpIHsKLSAgICAgICAgICAgIFN0cmluZyBlcnJvclR5
cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpK
YXZhU2NyaXB0VGltZW91dCk7Ci0gICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5k
aWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBjYWxsYmFja0lELCBTdHJpbmco
KSwgZXJyb3JUeXBlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpOwotICAg
ICAgICAgICAgYXV0b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgU3RyaW5nKCksIGVycm9yVHlwZSk7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UKLSAgICAgICAgYXV0b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgcmVzdWx0LT5zdHJpbmco
KSwgU3RyaW5nKCkpOworICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRz
WzJdKSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsKKyAgICAgICAgYXV0b21hdGlv
blNlc3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2Fs
bGJhY2tJRCwgcmVzdWx0LT5zdHJpbmcoKSwgeyB9KTsKKyAgICB9IGVsc2UgaWYgKEpTVmFsdWVJ
c09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMl0pKSB7CisgICAgICAgIEpTT2JqZWN0UmVmIGVy
cm9yID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgSlNWYWx1ZVJlZiBuYW1lVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGVycm9yLCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJuYW1lIl9zKS5nZXQoKSwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgU3RyaW5nIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKKyAg
ICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6OkphdmFTY3JpcHRFcnJvcik7CisgICAgICAgIGlmIChleGNlcHRp
b25OYW1lID09ICJKYXZhU2NyaXB0VGltZW91dCIpCisgICAgICAgICAgICBlcnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpKYXZhU2Ny
aXB0VGltZW91dCk7CisgICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RG
b3VuZCIpCisgICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOworICAgICAgICBlbHNlIGlm
IChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkRWxlbWVudFN0YXRlIikKKyAgICAgICAgICAgIGVy
cm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVt
Q29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3Nh
Z2U6OkludmFsaWRFbGVtZW50U3RhdGUpOworICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1l
ID09ICJJbnZhbGlkUGFyYW1ldGVyIikKKyAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRQYXJhbWV0
ZXIpOworICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkU2VsZWN0b3Ii
KQorICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZFNlbGVjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAo
ZXhjZXB0aW9uTmFtZSA9PSAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIpCisgICAgICAgICAgICBl
cnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNz
YWdlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKKworICAgICAgICBKU1ZhbHVlUmVmIG1lc3Nh
Z2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZXJyb3IsIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICBh
dXRvIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIG1lc3NhZ2VWYWx1ZSwgZXhjZXB0aW9uKSktPnN0cmluZygpOworICAgICAgICBhdXRvbWF0
aW9uU2Vzc2lvblByb3h5LT5kaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBj
YWxsYmFja0lELCBleGNlcHRpb25NZXNzYWdlLCBlcnJvclR5cGUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgYXV0b21hdGlvblNl
c3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJh
Y2tJRCwgeyB9LCBlcnJvclR5cGUpOworICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTI4NSwyMyArMjk3LDEwIEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFn
ZUlkZW50aWZpCiAgICAgaWYgKCFleGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpKYXZhU2NyaXB0RXJyb3IpOworICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUo
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVy
cm9yKTsKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIGlmIChKU1ZhbHVlSXNP
YmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1
ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4o
ZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51
bGxwdHIpOwotICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKLSAgICAg
ICAgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCi0gICAgICAgICAgICBlcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpOb2RlTm90Rm91bmQpOwotICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZh
bGlkRWxlbWVudFN0YXRlIikKLSAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRFbGVtZW50U3RhdGUp
OwotICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkUGFyYW1ldGVyIikK
LSAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRQYXJhbWV0ZXIpOwotICAgICAgICBlbHNlIGlmIChl
eGNlcHRpb25OYW1lID09ICJJbnZhbGlkU2VsZWN0b3IiKQotICAgICAgICAgICAgZXJyb3JUeXBl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFu
dFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52
YWxpZFNlbGVjdG9yKTsKLSAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiRWxlbWVu
dE5vdEludGVyYWN0YWJsZSIpCi0gICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpFbGVtZW50Tm90SW50ZXJhY3Rh
YmxlKTsKLQogICAgICAgICBKU1ZhbHVlUmVmIG1lc3NhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZSgibWVzc2FnZSJfcykuZ2V0KCksIG51bGxwdHIpOwogICAgICAg
ICBleGNlcHRpb25NZXNzYWdlID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBtZXNzYWdlVmFsdWUsIG51bGxwdHIpKS0+c3RyaW5nKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmpzIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5qcwppbmRleCA2YWNlMTVkOTMyYy4uODljNjhiMWU0NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuanMKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAtNDMsMzMgKzQzLDkgQEAgV2ViS2l0
QXV0b21hdGlvbi5BdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Np
b25Qcm94eQogCiAgICAgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnVuY3Rpb25TdHJpbmcs
IGFyZ3VtZW50U3RyaW5ncywgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgZnJhbWVJ
RCwgY2FsbGJhY2tJRCwgcmVzdWx0Q2FsbGJhY2ssIGNhbGxiYWNrVGltZW91dCkKICAgICB7Ci0g
ICAgICAgIC8vIFRoZSBzY3JpcHQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiBkZWNsYXJh
dGlvbi4gRXZhbHVhdGUgaXQgaW5zaWRlIHBhcmVudGhlc2lzIHRvIGdldCB0aGUgZnVuY3Rpb24g
dmFsdWUuCi0gICAgICAgIGxldCBmdW5jdGlvblZhbHVlID0gdGhpcy5fZXZhbHVhdGUoIigiICsg
ZnVuY3Rpb25TdHJpbmcgKyAiKSIpOwotICAgICAgICBpZiAodHlwZW9mIGZ1bmN0aW9uVmFsdWUg
IT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTY3JpcHQg
ZGlkIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uLiIpOwotCi0gICAgICAgIHRoaXMuX2NsZWFy
U3RhbGVOb2RlcygpOwotCi0gICAgICAgIGxldCBhcmd1bWVudFZhbHVlcyA9IGFyZ3VtZW50U3Ry
aW5ncy5tYXAodGhpcy5fanNvblBhcnNlLCB0aGlzKTsKLQotICAgICAgICBsZXQgdGltZW91dElk
ZW50aWZpZXIgPSAwOwotICAgICAgICBsZXQgcmVzdWx0UmVwb3J0ZWQgPSBmYWxzZTsKLQotICAg
ICAgICBsZXQgcmVwb3J0UmVzdWx0ID0gKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgaWYgKHRp
bWVvdXRJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRl
bnRpZmllcik7Ci0gICAgICAgICAgICByZXN1bHRDYWxsYmFjayhmcmFtZUlELCBjYWxsYmFja0lE
LCB0aGlzLl9qc29uU3RyaW5naWZ5KHJlc3VsdCksIGZhbHNlKTsKLSAgICAgICAgICAgIHJlc3Vs
dFJlcG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgbGV0IHJlcG9ydFRpbWVvdXRF
cnJvciA9ICgpID0+IHsgcmVzdWx0Q2FsbGJhY2soZnJhbWVJRCwgY2FsbGJhY2tJRCwgIkphdmFT
Y3JpcHRUaW1lb3V0IiwgdHJ1ZSk7IH07Ci0KLSAgICAgICAgaWYgKGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQpIHsKLSAgICAgICAgICAgIGFyZ3VtZW50VmFsdWVzLnB1c2gocmVwb3J0
UmVzdWx0KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uVmFsdWUuYXBwbHkobnVsbCwgYXJndW1lbnRW
YWx1ZXMpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHRSZXBvcnRlZCkKLSAgICAgICAgICAgICAg
ICB0aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQocmVwb3J0VGltZW91dEVycm9yLCBjYWxs
YmFja1RpbWVvdXQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcG9ydFJlc3VsdChm
dW5jdGlvblZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFsdWVzKSk7CisgICAgICAgIHRoaXMu
X2V4ZWN1dGUoZnVuY3Rpb25TdHJpbmcsIGFyZ3VtZW50U3RyaW5ncywgZXhwZWN0c0ltcGxpY2l0
Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1lb3V0KQorICAgICAgICAgICAgLnRoZW4ocmVz
dWx0ID0+IHsgcmVzdWx0Q2FsbGJhY2soZnJhbWVJRCwgY2FsbGJhY2tJRCwgdGhpcy5fanNvblN0
cmluZ2lmeShyZXN1bHQpKTsgfSkKKyAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7IHJlc3Vs
dENhbGxiYWNrKGZyYW1lSUQsIGNhbGxiYWNrSUQsIGVycm9yKTsgfSk7CiAgICAgfQogCiAgICAg
bm9kZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTg0LDYgKzYwLDU5IEBAIFdlYktpdEF1
dG9tYXRpb24uQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNsYXNzIEF1dG9tYXRpb25TZXNzaW9u
UHJveHkKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9leGVjdXRlKGZ1bmN0aW9uU3RyaW5nLCBh
cmd1bWVudFN0cmluZ3MsIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxiYWNr
VGltZW91dCkKKyAgICB7CisgICAgICAgIGxldCB0aW1lb3V0UHJvbWlzZTsKKyAgICAgICAgbGV0
IHRpbWVvdXRJZGVudGlmaWVyID0gMDsKKyAgICAgICAgaWYgKGNhbGxiYWNrVGltZW91dCkgewor
ICAgICAgICAgICAgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICAgICAgdGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KCgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHsgbmFtZTogIkphdmFTY3JpcHRUaW1l
b3V0IiwgbWVzc2FnZTogInNjcmlwdCB0aW1lZCBvdXQgYWZ0ZXIgIiArIGNhbGxiYWNrVGltZW91
dCArICJtcyIgfSk7CisgICAgICAgICAgICAgICAgfSwgY2FsbGJhY2tUaW1lb3V0KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICAvLyBUaGUgc2NyaXB0IGlzIGV4
cGVjdGVkIHRvIGJlIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uIEV2YWx1YXRlIGl0IGluc2lkZSBw
YXJlbnRoZXNpcyB0byBnZXQgdGhlIGZ1bmN0aW9uIHZhbHVlLgorICAgICAgICAgICAgbGV0IGZ1
bmN0aW9uVmFsdWUgPSB0aGlzLl9ldmFsdWF0ZSgiKGFzeW5jICIgKyBmdW5jdGlvblN0cmluZyAr
ICIpIik7CisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmN0aW9uVmFsdWUgIT09ICJmdW5jdGlv
biIpCisgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoIlNjcmlwdCBkaWQgbm90
IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24uIikpOworCisgICAgICAgICAgICB0aGlzLl9jbGVhclN0
YWxlTm9kZXMoKTsKKworICAgICAgICAgICAgbGV0IGFyZ3VtZW50VmFsdWVzID0gYXJndW1lbnRT
dHJpbmdzLm1hcCh0aGlzLl9qc29uUGFyc2UsIHRoaXMpOworICAgICAgICAgICAgaWYgKGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQpCisgICAgICAgICAgICAgICAgYXJndW1lbnRWYWx1
ZXMucHVzaChyZXNvbHZlKTsKKyAgICAgICAgICAgIGxldCByZXN1bHRQcm9taXNlID0gZnVuY3Rp
b25WYWx1ZS5hcHBseShudWxsLCBhcmd1bWVudFZhbHVlcyk7CisKKyAgICAgICAgICAgIGxldCBw
cm9taXNlcyA9IFtyZXN1bHRQcm9taXNlXTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0UHJvbWlz
ZSkKKyAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRpbWVvdXRQcm9taXNlKTsKKyAgICAg
ICAgICAgIFByb21pc2UucmFjZShwcm9taXNlcykKKyAgICAgICAgICAgICAgICAudGhlbihyZXN1
bHQgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAoIWV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAg
LmNhdGNoKGVycm9yID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQXN5bmMgc2NyaXB0
cyBjYW4gY2FsbCBQcm9taXNlLnJlc29sdmUoKSBpbiB0aGUgZnVuY3Rpb24gc2NyaXB0LCBnZW5l
cmF0aW5nIGEgbmV3IHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBpbiBhCisgICAgICAgIC8vIHRp
bWVyIChzZWUgdzNjIHRlc3QgZXhlY3V0ZV9hc3luY19zY3JpcHQvcHJvbWlzZS5weTo6dGVzdF9w
cm9taXNlX3Jlc29sdmVfdGltZW91dCkuIEluIHRoYXQgY2FzZSwgdGhlIGludGVybmFsIHJhY2UK
KyAgICAgICAgLy8gZmluaXNoZXMgcmVzb2x2ZWQsIHNvIHdlIG5lZWQgdG8gc3RhcnQgYSBuZXcg
b25lIGhlcmUgdG8gd2FpdCBmb3IgdGhlIHNlY29uZCBwcm9taXNlIHRvIGJlIHJlb2x2ZWQgb3Ig
dGhlIHRpbWVvdXQuCisgICAgICAgIGxldCBwcm9taXNlcyA9IFtwcm9taXNlXTsKKyAgICAgICAg
aWYgKHRpbWVvdXRQcm9taXNlKQorICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aW1lb3V0UHJv
bWlzZSk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJhY2UocHJvbWlzZXMpCisgICAgICAgICAg
ICAuZmluYWxseSgoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXRJZGVudGlmaWVy
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRlbnRpZmllcik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgfQorCiAgICAgX2pzb25Q
YXJzZShzdHJpbmcpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZykKZGlmZiAtLWdpdCBhL1dl
YkRyaXZlclRlc3RzL0NoYW5nZUxvZyBiL1dlYkRyaXZlclRlc3RzL0NoYW5nZUxvZwppbmRleCA2
YjA5MGRiMmEyMC4uNTU3YWYwMDM3MTEgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL0NoYW5n
ZUxvZworKysgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
OS0xMi0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgQXV0b21hdGlvbjogZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24gc2hvdWxkIHVzZSBQ
cm9taXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA0MTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdGhhdCBhcmUgbm93IHBhc3NpbmcuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zLmpzb246CisKIDIwMTktMTItMDMgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaGFu
ZGxlIGVsZW1lbnRzIG9mIHR5cGUgZmlsZSBpbiBzZW5kIGtleXMgY29tbWFuZApkaWZmIC0tZ2l0
IGEvV2ViRHJpdmVyVGVzdHMvVGVzdEV4cGVjdGF0aW9ucy5qc29uIGIvV2ViRHJpdmVyVGVzdHMv
VGVzdEV4cGVjdGF0aW9ucy5qc29uCmluZGV4IGNiZjZkZTNkMzdkLi4zZjRhNTZhZTcxNSAxMDA2
NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvVGVzdEV4cGVjdGF0aW9ucy5qc29uCisrKyBiL1dlYkRy
aXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgpAQCAtNTU4LDIyICs1NTgsNiBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZl
ci90ZXN0cy9leGVjdXRlX2FzeW5jX3NjcmlwdC9wcm9taXNlLnB5IjogewotICAgICAgICAiZXhw
ZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9i
LzIwNDE1MSJ9fSwKLSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAgInRlc3RfYXdh
aXRfcHJvbWlzZV9yZWplY3QiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwi
OiB7InN0YXR1cyI6IFsiUEFTUyJdfX0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0s
Ci0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvZXhlY3V0ZV9zY3JpcHQvcHJvbWlz
ZS5weSI6IHsKLSAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJd
LCAiYnVnIjogIndlYmtpdC5vcmcvYi8yMDQxNTEifX0sCi0gICAgICAgICJzdWJ0ZXN0cyI6IHsK
LSAgICAgICAgICAgICJ0ZXN0X2F3YWl0X3Byb21pc2VfcmVqZWN0IjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIlBBU1MiXX19Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9LAogICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3Rz
L2VsZW1lbnRfc2VuZF9rZXlzL2NvbnRlbnRfZWRpdGFibGUucHkiOiB7CiAgICAgICAgICJleHBl
Y3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2Iv
MTgwNDAzIn19CiAgICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386336</attachid>
            <date>2019-12-23 03:30:04 -0800</date>
            <delta_ts>2020-01-08 02:59:43 -0800</delta_ts>
            <desc>Rebased partch</desc>
            <filename>wd-promises.diff</filename>
            <type>text/plain</type>
            <size>18911</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggNGM0YzliNWY1MDQuLjNjOWZmNDcwZDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEyLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbiBzaG91bGQgdXNlIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2Vi
RHJpdmVyOjpDb21tYW5kUmVzdWx0OjpodHRwU3RhdHVzQ29kZSBjb25zdCk6IFRpbWVvdXQgZXJy
b3JzIHNob3VsZCByZXR1cm4gNTAwIG5vdCA0MDguCisgICAgICAgICogU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmV4ZWN1dGVTY3JpcHQpOiBFbnN1cmUgdGhlIHNj
cmlwdCBib2R5IGdvZXMgYmV0d2VlbiBuZXcgbGluZXMgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aAor
ICAgICAgICB0cmFpbGluZyBjb21tZW50cyBsaWtlIGluIGZ1bmN0aW9uKCkgeyByZXR1cm4gZm9v
OyAvLyBDb21tZW50IH0uCisKIDIwMTktMTItMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogZml4IGhhbmRsaW5nIG9mIHNl
c3Npb24gdGltZW91dHMgZm9yIHZhbHVlcyBoaWdoZXIgdGhhbiBNQVhfSU5UCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCBkNDBmZjY1ODFmMC4uNjQxMWMxYzljNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtMTQ2LDEyICsxNDYsMTEgQEAgdW5zaWduZWQgQ29t
bWFuZFJlc3VsdDo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAogICAgIGNhc2UgRXJyb3JDb2RlOjpJ
bnZhbGlkU2Vzc2lvbklEOgogICAgIGNhc2UgRXJyb3JDb2RlOjpVbmtub3duQ29tbWFuZDoKICAg
ICAgICAgcmV0dXJuIDQwNDsKLSAgICBjYXNlIEVycm9yQ29kZTo6U2NyaXB0VGltZW91dDoKLSAg
ICBjYXNlIEVycm9yQ29kZTo6VGltZW91dDoKLSAgICAgICAgcmV0dXJuIDQwODsKICAgICBjYXNl
IEVycm9yQ29kZTo6SmF2YXNjcmlwdEVycm9yOgogICAgIGNhc2UgRXJyb3JDb2RlOjpNb3ZlVGFy
Z2V0T3V0T2ZCb3VuZHM6CisgICAgY2FzZSBFcnJvckNvZGU6OlNjcmlwdFRpbWVvdXQ6CiAgICAg
Y2FzZSBFcnJvckNvZGU6OlNlc3Npb25Ob3RDcmVhdGVkOgorICAgIGNhc2UgRXJyb3JDb2RlOjpU
aW1lb3V0OgogICAgIGNhc2UgRXJyb3JDb2RlOjpVbmFibGVUb0NhcHR1cmVTY3JlZW46CiAgICAg
Y2FzZSBFcnJvckNvZGU6OlVuZXhwZWN0ZWRBbGVydE9wZW46CiAgICAgY2FzZSBFcnJvckNvZGU6
OlVua25vd25FcnJvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDFiZjk5YjY2NTJiLi5mNzE3NWI4
NTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0yMTMzLDEzICsyMTMzLDEyIEBAIHZvaWQgU2Vz
c2lvbjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgUmVmUHRyPEpTT046OkFy
cmF5PiYmIGFyZ3VtZW50CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdD
b250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBpZiAobV9jdXJyZW50QnJvd3NpbmdDb250ZXh0KQogICAgICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwotICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVu
Y3Rpb24oKXsiICsgc2NyaXB0ICsgJ30nKTsKKyAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJmdW5jdGlvbiJfcywgImZ1bmN0aW9uKCl7XG4iICsgc2NyaXB0ICsgIlxufSIpOwogICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRBcnJheSgiYXJndW1lbnRzIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cykp
OwotICAgICAgICBpZiAobW9kZSA9PSBFeGVjdXRlU2NyaXB0TW9kZTo6QXN5bmMpIHsKKyAgICAg
ICAgaWYgKG1vZGUgPT0gRXhlY3V0ZVNjcmlwdE1vZGU6OkFzeW5jKQogICAgICAgICAgICAgcGFy
YW1ldGVycy0+c2V0Qm9vbGVhbigiZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCJfcywg
dHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9zY3JpcHRUaW1lb3V0ICE9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5z
ZXREb3VibGUoImNhbGxiYWNrVGltZW91dCJfcywgbV9zY3JpcHRUaW1lb3V0KTsKLSAgICAgICAg
fQorICAgICAgICBpZiAobV9zY3JpcHRUaW1lb3V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldERvdWJsZSgiY2Fs
bGJhY2tUaW1lb3V0Il9zLCBtX3NjcmlwdFRpbWVvdXQpOwogICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiJfcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYo
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lv
bkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAg
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhOGFhNzM4ZGIyLi41MTNkYTNh
ZmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0xMi0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgQXV0b21hdGlvbjogZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24gc2hvdWxkIHVzZSBQcm9taXNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0aGUgZnVuY3Rpb24gdG8g
cnVuIHNjcmlwdHMgYXN5bmMgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFzIGEgcHJvbWlzZS4gVG8g
aW1wbGVtZW50IHRoZSBzY3JpcHQgdGltZW91dCB3ZQorICAgICAgICB1c2UgYW5vdGhlciBwcm9t
aXNlIHRoYXQgc3RhcnRzIHRoZSB0aW1lciBhbmQgdGhlbiB3ZSBydW4gYSBQcm9taXNlLnJhY2Uo
KSB3aXRoIGJvdGggcHJvbWlzZXMuIFRvIHNpbXBsaWZ5IHRoZQorICAgICAgICByZXN1bHRzIHJl
cG9ydGluZywgYWxsIGV4Y2VwdGlvbnMgKGluY2x1ZGluZyB0aW1lb3V0IGVycm9ycyB0aGF0IGFy
ZSBub3cgaGFuZGxlZCBhcyBleGNlcHRpb25zKSBhcmUgbm93IGhhbmRsZWQKKyAgICAgICAgYXMg
ZXJyb3JzIHBhc3NlZCB0byB0aGUgcmVzdWx0Q2FsbGJhY2suIFRoZSBib29sZWFuIHBhcmFtZXRl
ciBoYXMgYmVlbiByZW1vdmVkLCB3ZSBjYW4gc2ltcGx5IGNoZWNrIHRoZSB0eXBlIG9mCisgICAg
ICAgIHRoZSB2YWx1ZSByZWNlaXZlZCBiZWNhdXNlIHJlc3VsdHMgYXJlIGFsd2F5cyBzdHJpbmdz
IGFuZCBlcnJvcnMgYXJlIGFsd2F5cyBleGNlcHRpb24gb2JqZWN0cy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6ZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2spOiBIYW5kbGUgdGhlIHNjcmlw
dCByZXN1bHQsIGluY2x1ZGluZyBhbGwgcG9zc2libGUgZXJyb3JzIG5vdyAobm90IG9ubHkgdGlt
ZW91dHMpLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbik6IEFueSBleGNlcHRpb24gcnVubmluZyB0aGUgc2NyaXB0
IHNob3VsZCBiZSBhbgorICAgICAgICBpbnRlcm5hbCBlcnJvciBub3cuIFRoZSBjb2RlIHRvIGhh
bmRsZSBlcnJvciBoYXMgYmVlbiBtb3ZlZCB0byBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFjaygp
LgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmpzOgorICAgICAgICAoV2ViS2l0QXV0b21hdGlvbi5BdXRvbWF0aW9uU2Vzc2lvblByb3h5
LnByb3RvdHlwZS5ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbik6IENhbGwgX2V4ZWN1dGUgYW5k
IGhhbmRsZSB0aGUKKyAgICAgICAgcHJvbWlzZSByZXN1bHQgdG8gY2FsbCByZXN1bHRDYWxsYmFj
ayB3aXR5aCBlaXRoZXIgdGhlIHJlc3VsdCBvciB0aGUgZXJyb3IuCisgICAgICAgIChXZWJLaXRB
dXRvbWF0aW9uLkF1dG9tYXRpb25TZXNzaW9uUHJveHkucHJvdG90eXBlLl9leGVjdXRlKTogTWFr
ZSB0aGUgZnVuY3Rpb24gdG8gcnVuIHRoZSBzY3JpcHQgYXN5bmMgYW5kCisgICAgICAgIGhhbmRs
ZSB0aGUgcmVzdWx0IGFzIGEgcHJvbWlzZS4KKwogMjAxOS0xMi0wNSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQXV0b21hdGlvbjogc2NyaXB0
cyBhcmUgZXhlY3V0ZWQgaW4gdGhlIHdyb25nIGpzIGNvbnRleHQgYWZ0ZXIgYSBoaXN0b3J5IG5h
dmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMTkwNWE4YWMy
YzcuLmM4YjM4ZGU0ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
MTM2LDExICsxMzYsMTAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVVVJRChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWMKIAogc3RhdGljIEpTVmFs
dWVSZWYgZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewotICAgIEFTU0VSVF9BUkcoYXJndW1lbnRDb3VudCwgYXJndW1lbnRDb3VudCA9PSA0
KTsKKyAgICBBU1NFUlRfQVJHKGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQgPT0gMyk7CiAg
ICAgQVNTRVJUX0FSRyhhcmd1bWVudHMsIEpTVmFsdWVJc051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMF0pKTsKICAgICBBU1NFUlRfQVJHKGFyZ3VtZW50cywgSlNWYWx1ZUlzTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1sxXSkpOwotICAgIEFTU0VSVF9BUkcoYXJndW1lbnRzLCBKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzJdKSk7Ci0gICAgQVNTRVJUX0FSRyhhcmd1bWVudHMs
IEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzNdKSk7CisgICAgQVNTRVJUX0FS
Ryhhcmd1bWVudHMsIEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMl0pIHx8IEpT
VmFsdWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMl0pKTsKIAogICAgIGF1dG8gYXV0b21h
dGlvblNlc3Npb25Qcm94eSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1dG9tYXRpb25TZXNz
aW9uUHJveHkoKTsKICAgICBpZiAoIWF1dG9tYXRpb25TZXNzaW9uUHJveHkpCkBAIC0xNDgsMjEg
KzE0NywzNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZgogCiAgICAgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQgPSBXZWJDb3JlOjpmcmFtZUlkZW50aWZpZXJGcm9tSUQoSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4
Y2VwdGlvbik7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKSk7Ci0KLSAgICBib29sIHJlc3VsdElz
RXJyb3JOYW1lID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbM10pOwotCi0g
ICAgaWYgKHJlc3VsdElzRXJyb3JOYW1lKSB7Ci0gICAgICAgIGlmIChyZXN1bHQtPnN0cmluZygp
ID09ICJKYXZhU2NyaXB0VGltZW91dCIpIHsKLSAgICAgICAgICAgIFN0cmluZyBlcnJvclR5cGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpKYXZh
U2NyaXB0VGltZW91dCk7Ci0gICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5kaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBjYWxsYmFja0lELCBTdHJpbmcoKSwg
ZXJyb3JUeXBlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpOwotICAgICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgU3RyaW5nKCksIGVycm9yVHlwZSk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UKLSAgICAgICAgYXV0b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJRCwgcmVzdWx0LT5zdHJpbmcoKSwg
U3RyaW5nKCkpOworICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzJd
KSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsKKyAgICAgICAgYXV0b21hdGlvblNl
c3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJh
Y2tJRCwgcmVzdWx0LT5zdHJpbmcoKSwgeyB9KTsKKyAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc09i
amVjdChjb250ZXh0LCBhcmd1bWVudHNbMl0pKSB7CisgICAgICAgIEpTT2JqZWN0UmVmIGVycm9y
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZiBuYW1lVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IGVycm9yLCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJuYW1lIl9zKS5nZXQoKSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgU3RyaW5nIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKKyAgICAg
ICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6OkphdmFTY3JpcHRFcnJvcik7CisgICAgICAgIGlmIChleGNlcHRpb25O
YW1lID09ICJKYXZhU2NyaXB0VGltZW91dCIpCisgICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUo
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpKYXZhU2NyaXB0
VGltZW91dCk7CisgICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3Vu
ZCIpCisgICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOworICAgICAgICBlbHNlIGlmIChl
eGNlcHRpb25OYW1lID09ICJJbnZhbGlkRWxlbWVudFN0YXRlIikKKyAgICAgICAgICAgIGVycm9y
VHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
OkludmFsaWRFbGVtZW50U3RhdGUpOworICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09
ICJJbnZhbGlkUGFyYW1ldGVyIikKKyAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRQYXJhbWV0ZXIp
OworICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkU2VsZWN0b3IiKQor
ICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhl
bHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkVycm9yTWVzc2FnZTo6SW52YWxpZFNlbGVjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAoZXhj
ZXB0aW9uTmFtZSA9PSAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIpCisgICAgICAgICAgICBlcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKKworICAgICAgICBKU1ZhbHVlUmVmIG1lc3NhZ2VW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZXJyb3IsIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICBhdXRv
IGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IG1lc3NhZ2VWYWx1ZSwgZXhjZXB0aW9uKSktPnN0cmluZygpOworICAgICAgICBhdXRvbWF0aW9u
U2Vzc2lvblByb3h5LT5kaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBjYWxs
YmFja0lELCBleGNlcHRpb25NZXNzYWdlLCBlcnJvclR5cGUpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgYXV0b21hdGlvblNlc3Np
b25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJRCwgY2FsbGJhY2tJ
RCwgeyB9LCBlcnJvclR5cGUpOworICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KQEAgLTI4NSwyMyArMjk3LDEwIEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlk
ZW50aWZpCiAgICAgaWYgKCFleGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
ZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JN
ZXNzYWdlOjpKYXZhU2NyaXB0RXJyb3IpOworICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9y
KTsKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIGlmIChKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhj
ZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51bGxw
dHIpOwotICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCi0gICAgICAgICAgICBlcnJvclR5
cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpO
b2RlTm90Rm91bmQpOwotICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlk
RWxlbWVudFN0YXRlIikKLSAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRFbGVtZW50U3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkUGFyYW1ldGVyIikKLSAg
ICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6OkludmFsaWRQYXJhbWV0ZXIpOwotICAgICAgICBlbHNlIGlmIChleGNl
cHRpb25OYW1lID09ICJJbnZhbGlkU2VsZWN0b3IiKQotICAgICAgICAgICAgZXJyb3JUeXBlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxp
ZFNlbGVjdG9yKTsKLSAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiRWxlbWVudE5v
dEludGVyYWN0YWJsZSIpCi0gICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxl
KTsKLQogICAgICAgICBKU1ZhbHVlUmVmIG1lc3NhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNT
dHJpbmc6OnRyeUNyZWF0ZSgibWVzc2FnZSJfcykuZ2V0KCksIG51bGxwdHIpOwogICAgICAgICBl
eGNlcHRpb25NZXNzYWdlID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBt
ZXNzYWdlVmFsdWUsIG51bGxwdHIpKS0+c3RyaW5nKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmpzIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5qcwppbmRleCA0ZDA1MjdmZjUwNi4uOTI3ZTgzNDA3MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuanMKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAtNDMsMzMgKzQzLDkgQEAgV2ViS2l0QXV0
b21hdGlvbi5BdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Q
cm94eQogCiAgICAgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnVuY3Rpb25TdHJpbmcsIGFy
Z3VtZW50U3RyaW5ncywgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgZnJhbWVJRCwg
Y2FsbGJhY2tJRCwgcmVzdWx0Q2FsbGJhY2ssIGNhbGxiYWNrVGltZW91dCkKICAgICB7Ci0gICAg
ICAgIC8vIFRoZSBzY3JpcHQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiBkZWNsYXJhdGlv
bi4gRXZhbHVhdGUgaXQgaW5zaWRlIHBhcmVudGhlc2lzIHRvIGdldCB0aGUgZnVuY3Rpb24gdmFs
dWUuCi0gICAgICAgIGxldCBmdW5jdGlvblZhbHVlID0gdGhpcy5fZXZhbHVhdGUoIigiICsgZnVu
Y3Rpb25TdHJpbmcgKyAiKSIpOwotICAgICAgICBpZiAodHlwZW9mIGZ1bmN0aW9uVmFsdWUgIT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTY3JpcHQgZGlk
IG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uLiIpOwotCi0gICAgICAgIHRoaXMuX2NsZWFyU3Rh
bGVOb2RlcygpOwotCi0gICAgICAgIGxldCBhcmd1bWVudFZhbHVlcyA9IGFyZ3VtZW50U3RyaW5n
cy5tYXAodGhpcy5fanNvblBhcnNlLCB0aGlzKTsKLQotICAgICAgICBsZXQgdGltZW91dElkZW50
aWZpZXIgPSAwOwotICAgICAgICBsZXQgcmVzdWx0UmVwb3J0ZWQgPSBmYWxzZTsKLQotICAgICAg
ICBsZXQgcmVwb3J0UmVzdWx0ID0gKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgaWYgKHRpbWVv
dXRJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICByZXN1bHRDYWxsYmFjayhmcmFtZUlELCBjYWxsYmFja0lELCB0
aGlzLl9qc29uU3RyaW5naWZ5KHJlc3VsdCksIGZhbHNlKTsKLSAgICAgICAgICAgIHJlc3VsdFJl
cG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICAgICAgbGV0IHJlcG9ydFRpbWVvdXRFcnJv
ciA9ICgpID0+IHsgcmVzdWx0Q2FsbGJhY2soZnJhbWVJRCwgY2FsbGJhY2tJRCwgIkphdmFTY3Jp
cHRUaW1lb3V0IiwgdHJ1ZSk7IH07Ci0KLSAgICAgICAgaWYgKGV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQpIHsKLSAgICAgICAgICAgIGFyZ3VtZW50VmFsdWVzLnB1c2gocmVwb3J0UmVz
dWx0KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uVmFsdWUuYXBwbHkobnVsbCwgYXJndW1lbnRWYWx1
ZXMpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHRSZXBvcnRlZCAmJiBjYWxsYmFja1RpbWVvdXQg
Pj0gMCkKLSAgICAgICAgICAgICAgICB0aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQocmVw
b3J0VGltZW91dEVycm9yLCBjYWxsYmFja1RpbWVvdXQpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJlcG9ydFJlc3VsdChmdW5jdGlvblZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFs
dWVzKSk7CisgICAgICAgIHRoaXMuX2V4ZWN1dGUoZnVuY3Rpb25TdHJpbmcsIGFyZ3VtZW50U3Ry
aW5ncywgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1lb3V0KQor
ICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHsgcmVzdWx0Q2FsbGJhY2soZnJhbWVJRCwgY2Fs
bGJhY2tJRCwgdGhpcy5fanNvblN0cmluZ2lmeShyZXN1bHQpKTsgfSkKKyAgICAgICAgICAgIC5j
YXRjaChlcnJvciA9PiB7IHJlc3VsdENhbGxiYWNrKGZyYW1lSUQsIGNhbGxiYWNrSUQsIGVycm9y
KTsgfSk7CiAgICAgfQogCiAgICAgbm9kZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTg0
LDYgKzYwLDU5IEBAIFdlYktpdEF1dG9tYXRpb24uQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNs
YXNzIEF1dG9tYXRpb25TZXNzaW9uUHJveHkKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9leGVj
dXRlKGZ1bmN0aW9uU3RyaW5nLCBhcmd1bWVudFN0cmluZ3MsIGV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQsIGNhbGxiYWNrVGltZW91dCkKKyAgICB7CisgICAgICAgIGxldCB0aW1lb3V0
UHJvbWlzZTsKKyAgICAgICAgbGV0IHRpbWVvdXRJZGVudGlmaWVyID0gMDsKKyAgICAgICAgaWYg
KGNhbGxiYWNrVGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICB0aW1lb3V0UHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0
SWRlbnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICByZWpl
Y3QoeyBuYW1lOiAiSmF2YVNjcmlwdFRpbWVvdXQiLCBtZXNzYWdlOiAic2NyaXB0IHRpbWVkIG91
dCBhZnRlciAiICsgY2FsbGJhY2tUaW1lb3V0ICsgIm1zIiB9KTsKKyAgICAgICAgICAgICAgICB9
LCBjYWxsYmFja1RpbWVvdXQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIC8vIFRoZSBzY3JpcHQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiBkZWNsYXJh
dGlvbi4gRXZhbHVhdGUgaXQgaW5zaWRlIHBhcmVudGhlc2lzIHRvIGdldCB0aGUgZnVuY3Rpb24g
dmFsdWUuCisgICAgICAgICAgICBsZXQgZnVuY3Rpb25WYWx1ZSA9IHRoaXMuX2V2YWx1YXRlKCIo
YXN5bmMgIiArIGZ1bmN0aW9uU3RyaW5nICsgIikiKTsKKyAgICAgICAgICAgIGlmICh0eXBlb2Yg
ZnVuY3Rpb25WYWx1ZSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICByZWplY3QobmV3
IFR5cGVFcnJvcigiU2NyaXB0IGRpZCBub3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbi4iKSk7CisK
KyAgICAgICAgICAgIHRoaXMuX2NsZWFyU3RhbGVOb2RlcygpOworCisgICAgICAgICAgICBsZXQg
YXJndW1lbnRWYWx1ZXMgPSBhcmd1bWVudFN0cmluZ3MubWFwKHRoaXMuX2pzb25QYXJzZSwgdGhp
cyk7CisgICAgICAgICAgICBpZiAoZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCkKKyAg
ICAgICAgICAgICAgICBhcmd1bWVudFZhbHVlcy5wdXNoKHJlc29sdmUpOworICAgICAgICAgICAg
bGV0IHJlc3VsdFByb21pc2UgPSBmdW5jdGlvblZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFs
dWVzKTsKKworICAgICAgICAgICAgbGV0IHByb21pc2VzID0gW3Jlc3VsdFByb21pc2VdOworICAg
ICAgICAgICAgaWYgKHRpbWVvdXRQcm9taXNlKQorICAgICAgICAgICAgICAgIHByb21pc2VzLnB1
c2godGltZW91dFByb21pc2UpOworICAgICAgICAgICAgUHJvbWlzZS5yYWNlKHByb21pc2VzKQor
ICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSkKKyAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4geworICAgICAgICAgICAg
ICAgICAgICByZWplY3QoZXJyb3IpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KworICAgICAgICAvLyBBc3luYyBzY3JpcHRzIGNhbiBjYWxsIFByb21pc2UucmVzb2x2ZSgpIGlu
IHRoZSBmdW5jdGlvbiBzY3JpcHQsIGdlbmVyYXRpbmcgYSBuZXcgcHJvbWlzZSB0aGF0IGlzIHJl
c29sdmVkIGluIGEKKyAgICAgICAgLy8gdGltZXIgKHNlZSB3M2MgdGVzdCBleGVjdXRlX2FzeW5j
X3NjcmlwdC9wcm9taXNlLnB5Ojp0ZXN0X3Byb21pc2VfcmVzb2x2ZV90aW1lb3V0KS4gSW4gdGhh
dCBjYXNlLCB0aGUgaW50ZXJuYWwgcmFjZQorICAgICAgICAvLyBmaW5pc2hlcyByZXNvbHZlZCwg
c28gd2UgbmVlZCB0byBzdGFydCBhIG5ldyBvbmUgaGVyZSB0byB3YWl0IGZvciB0aGUgc2Vjb25k
IHByb21pc2UgdG8gYmUgcmVvbHZlZCBvciB0aGUgdGltZW91dC4KKyAgICAgICAgbGV0IHByb21p
c2VzID0gW3Byb21pc2VdOworICAgICAgICBpZiAodGltZW91dFByb21pc2UpCisgICAgICAgICAg
ICBwcm9taXNlcy5wdXNoKHRpbWVvdXRQcm9taXNlKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmFjZShwcm9taXNlcykKKyAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBpZiAodGltZW91dElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRpbWVvdXRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9KTsKKyAgICB9CisKICAgICBfanNvblBhcnNlKHN0cmluZykKICAgICB7CiAgICAgICAgIGlm
ICghc3RyaW5nKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nIGIvV2ViRHJp
dmVyVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZiMDkwZGIyYTIwLi41NTdhZjAwMzcxMSAxMDA2NDQK
LS0tIGEvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1dlYkRyaXZlclRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbiBzaG91bGQgdXNlIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZXhwZWN0YXRpb25zIGZvciB0ZXN0cyB0
aGF0IGFyZSBub3cgcGFzc2luZy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnMuanNvbjoK
KwogMjAxOS0xMi0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgV2ViRHJpdmVyOiBoYW5kbGUgZWxlbWVudHMgb2YgdHlwZSBmaWxlIGluIHNl
bmQga2V5cyBjb21tYW5kCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0YXRp
b25zLmpzb24gYi9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0YXRpb25zLmpzb24KaW5kZXggY2Jm
NmRlM2QzN2QuLjNmNGE1NmFlNzE1IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zLmpzb24KKysrIGIvV2ViRHJpdmVyVGVzdHMvVGVzdEV4cGVjdGF0aW9ucy5qc29u
CkBAIC01NTgsMjIgKzU1OCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAot
ICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL2V4ZWN1dGVfYXN5bmNfc2NyaXB0L3By
b21pc2UucHkiOiB7Ci0gICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZB
SUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMjA0MTUxIn19LAotICAgICAgICAic3VidGVzdHMi
OiB7Ci0gICAgICAgICAgICAidGVzdF9hd2FpdF9wcm9taXNlX3JlamVjdCI6IHsKLSAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJQQVNTIl19fQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90
ZXN0cy9leGVjdXRlX3NjcmlwdC9wcm9taXNlLnB5IjogewotICAgICAgICAiZXhwZWN0ZWQiOiB7
ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzIwNDE1MSJ9
fSwKLSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAgInRlc3RfYXdhaXRfcHJvbWlz
ZV9yZWplY3QiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1
cyI6IFsiUEFTUyJdfX0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCiAgICAgImlt
cG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvZWxlbWVudF9zZW5kX2tleXMvY29udGVudF9lZGl0
YWJsZS5weSI6IHsKICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJ
TCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODA0MDMifX0KICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387089</attachid>
            <date>2020-01-08 02:59:43 -0800</date>
            <delta_ts>2020-01-09 12:05:52 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wd-promises.diff</filename>
            <type>text/plain</type>
            <size>19282</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggZjk2NjkyMDhkNWUuLjhmNjhmN2Q1MzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbiBzaG91bGQgdXNlIFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2Vi
RHJpdmVyOjpDb21tYW5kUmVzdWx0OjpodHRwU3RhdHVzQ29kZSBjb25zdCk6IFRpbWVvdXQgZXJy
b3JzIHNob3VsZCByZXR1cm4gNTAwIG5vdCA0MDguCisgICAgICAgICogU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmV4ZWN1dGVTY3JpcHQpOiBFbnN1cmUgdGhlIHNj
cmlwdCBib2R5IGdvZXMgYmV0d2VlbiBuZXcgbGluZXMgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aAor
ICAgICAgICB0cmFpbGluZyBjb21tZW50cyBsaWtlIGluIGZ1bmN0aW9uKCkgeyByZXR1cm4gZm9v
OyAvLyBDb21tZW50IH0uCisKIDIwMjAtMDEtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaGFuZGxlIG5vIHN1Y2ggZWxl
bWVudCBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IGJjNDY4M2Y5Yjk5
Li5hNzIwNzA5OTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC0xNDgsMTIg
KzE0OCwxMSBAQCB1bnNpZ25lZCBDb21tYW5kUmVzdWx0OjpodHRwU3RhdHVzQ29kZSgpIGNvbnN0
CiAgICAgY2FzZSBFcnJvckNvZGU6OkludmFsaWRTZXNzaW9uSUQ6CiAgICAgY2FzZSBFcnJvckNv
ZGU6OlVua25vd25Db21tYW5kOgogICAgICAgICByZXR1cm4gNDA0OwotICAgIGNhc2UgRXJyb3JD
b2RlOjpTY3JpcHRUaW1lb3V0OgotICAgIGNhc2UgRXJyb3JDb2RlOjpUaW1lb3V0OgotICAgICAg
ICByZXR1cm4gNDA4OwogICAgIGNhc2UgRXJyb3JDb2RlOjpKYXZhc2NyaXB0RXJyb3I6CiAgICAg
Y2FzZSBFcnJvckNvZGU6Ok1vdmVUYXJnZXRPdXRPZkJvdW5kczoKKyAgICBjYXNlIEVycm9yQ29k
ZTo6U2NyaXB0VGltZW91dDoKICAgICBjYXNlIEVycm9yQ29kZTo6U2Vzc2lvbk5vdENyZWF0ZWQ6
CisgICAgY2FzZSBFcnJvckNvZGU6OlRpbWVvdXQ6CiAgICAgY2FzZSBFcnJvckNvZGU6OlVuYWJs
ZVRvQ2FwdHVyZVNjcmVlbjoKICAgICBjYXNlIEVycm9yQ29kZTo6VW5leHBlY3RlZEFsZXJ0T3Bl
bjoKICAgICBjYXNlIEVycm9yQ29kZTo6VW5rbm93bkVycm9yOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5k
ZXggMWJmOTliNjY1MmIuLmY3MTc1Yjg1MWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIxMzMs
MTMgKzIxMzMsMTIgQEAgdm9pZCBTZXNzaW9uOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnQKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2lu
Z0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQp
CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9zLCBtX2N1
cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiZnVuY3Rpb24iX3MsICJmdW5jdGlvbigpeyIgKyBzY3JpcHQgKyAnfScpOworICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZ1bmN0aW9uIl9zLCAiZnVuY3Rpb24oKXtcbiIgKyBz
Y3JpcHQgKyAiXG59Iik7CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJhcmd1bWVudHMi
X3MsIFdURk1vdmUoYXJndW1lbnRzKSk7Ci0gICAgICAgIGlmIChtb2RlID09IEV4ZWN1dGVTY3Jp
cHRNb2RlOjpBc3luYykgeworICAgICAgICBpZiAobW9kZSA9PSBFeGVjdXRlU2NyaXB0TW9kZTo6
QXN5bmMpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50Il9zLCB0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX3NjcmlwdFRp
bWVvdXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKQotICAgICAg
ICAgICAgICAgIHBhcmFtZXRlcnMtPnNldERvdWJsZSgiY2FsbGJhY2tUaW1lb3V0Il9zLCBtX3Nj
cmlwdFRpbWVvdXQpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3NjcmlwdFRpbWVvdXQgIT0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKQorICAgICAgICAgICAgcGFy
YW1ldGVycy0+c2V0RG91YmxlKCJjYWxsYmFja1RpbWVvdXQiX3MsIG1fc2NyaXB0VGltZW91dCk7
CiAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoImV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIl9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2Up
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZTdiMzRlZTM5MzEuLmQyNmU5YTExNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDIwLTAxLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBBdXRvbWF0aW9uOiBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiBzaG91bGQgdXNl
IFByb21pc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIHRoZSBmdW5jdGlvbiB0byBydW4gc2NyaXB0cyBhc3luYyBhbmQgaGFuZGxlIHRoZSBy
ZXN1bHQgYXMgYSBwcm9taXNlLiBUbyBpbXBsZW1lbnQgdGhlIHNjcmlwdCB0aW1lb3V0IHdlCisg
ICAgICAgIHVzZSBhbm90aGVyIHByb21pc2UgdGhhdCBzdGFydHMgdGhlIHRpbWVyIGFuZCB0aGVu
IHdlIHJ1biBhIFByb21pc2UucmFjZSgpIHdpdGggYm90aCBwcm9taXNlcy4gVG8gc2ltcGxpZnkg
dGhlCisgICAgICAgIHJlc3VsdHMgcmVwb3J0aW5nLCBhbGwgZXhjZXB0aW9ucyAoaW5jbHVkaW5n
IHRpbWVvdXQgZXJyb3JzIHRoYXQgYXJlIG5vdyBoYW5kbGVkIGFzIGV4Y2VwdGlvbnMpIGFyZSBu
b3cgaGFuZGxlZAorICAgICAgICBhcyBlcnJvcnMgcGFzc2VkIHRvIHRoZSByZXN1bHRDYWxsYmFj
ay4gVGhlIGJvb2xlYW4gcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQsIHdlIGNhbiBzaW1wbHkg
Y2hlY2sgdGhlIHR5cGUgb2YKKyAgICAgICAgdGhlIHZhbHVlIHJlY2VpdmVkIGJlY2F1c2UgcmVz
dWx0cyBhcmUgYWx3YXlzIHN0cmluZ3MgYW5kIGVycm9ycyBhcmUgYWx3YXlzIGV4Y2VwdGlvbiBv
YmplY3RzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpldmFsdWF0ZUphdmFTY3JpcHRDYWxs
YmFjayk6IEhhbmRsZSB0aGUgc2NyaXB0IHJlc3VsdCwgaW5jbHVkaW5nIGFsbCBwb3NzaWJsZSBl
cnJvcnMgbm93IChub3Qgb25seSB0aW1lb3V0cykuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKTogQW55IGV4Y2Vw
dGlvbiBydW5uaW5nIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFuCisgICAgICAgIGludGVybmFsIGVy
cm9yIG5vdy4gVGhlIGNvZGUgdG8gaGFuZGxlIGVycm9yIGhhcyBiZWVuIG1vdmVkIHRvIGV2YWx1
YXRlSmF2YVNjcmlwdENhbGxiYWNrKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanM6CisgICAgICAgIChXZWJLaXRBdXRvbWF0aW9u
LkF1dG9tYXRpb25TZXNzaW9uUHJveHkucHJvdG90eXBlLmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKTogQ2FsbCBfZXhlY3V0ZSBhbmQgaGFuZGxlIHRoZQorICAgICAgICBwcm9taXNlIHJlc3Vs
dCB0byBjYWxsIHJlc3VsdENhbGxiYWNrIHdpdHloIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBl
cnJvci4KKyAgICAgICAgKFdlYktpdEF1dG9tYXRpb24uQXV0b21hdGlvblNlc3Npb25Qcm94eS5w
cm90b3R5cGUuX2V4ZWN1dGUpOiBNYWtlIHRoZSBmdW5jdGlvbiB0byBydW4gdGhlIHNjcmlwdCBh
c3luYyBhbmQKKyAgICAgICAgaGFuZGxlIHRoZSByZXN1bHQgYXMgYSBwcm9taXNlLgorCiAyMDIw
LTAxLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBBdXRvbWF0aW9uOiBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbiB0aGUgd3JvbmcganMgY29u
dGV4dCBhZnRlciBhIGhpc3RvcnkgbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcAppbmRleCAxZmY0Y2Y0ZWJmMC4uYmFjZGE4OGQ4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwCkBAIC0xODEsMTEgKzE4MSwxMCBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBjcmVhdGVVVUlEKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplYwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgQVNTRVJUX0FSRyhhcmd1bWVudENv
dW50LCBhcmd1bWVudENvdW50ID09IDQpOworICAgIEFTU0VSVF9BUkcoYXJndW1lbnRDb3VudCwg
YXJndW1lbnRDb3VudCA9PSAzKTsKICAgICBBU1NFUlRfQVJHKGFyZ3VtZW50cywgSlNWYWx1ZUlz
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOwogICAgIEFTU0VSVF9BUkcoYXJndW1lbnRz
LCBKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdKSk7Ci0gICAgQVNTRVJUX0FS
Ryhhcmd1bWVudHMsIEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMl0pKTsKLSAg
ICBBU1NFUlRfQVJHKGFyZ3VtZW50cywgSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBhcmd1bWVu
dHNbM10pKTsKKyAgICBBU1NFUlRfQVJHKGFyZ3VtZW50cywgSlNWYWx1ZUlzT2JqZWN0KGNvbnRl
eHQsIGFyZ3VtZW50c1syXSkgfHwgSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1sy
XSkpOwogCiAgICAgYXV0byBhdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYXV0b21hdGlvblNlc3Npb25Qcm94eSgpOwogICAgIGlmICghYXV0b21hdGlvblNl
c3Npb25Qcm94eSkKQEAgLTE5MywyMSArMTkyLDM2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1
YXRlSmF2YVNjcmlwdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCA9IFdlYkNvcmU6OmZyYW1l
SWRlbnRpZmllckZyb21JRChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24p
KTsKLQotICAgIGJvb2wgcmVzdWx0SXNFcnJvck5hbWUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIGFyZ3VtZW50c1szXSk7Ci0KLSAgICBpZiAocmVzdWx0SXNFcnJvck5hbWUpIHsKLSAgICAg
ICAgaWYgKHJlc3VsdC0+c3RyaW5nKCkgPT0gIkphdmFTY3JpcHRUaW1lb3V0IikgewotICAgICAg
ICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6OkphdmFTY3JpcHRUaW1lb3V0KTsKLSAgICAgICAgICAgIGF1dG9t
YXRpb25TZXNzaW9uUHJveHktPmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGZyYW1lSUQs
IGNhbGxiYWNrSUQsIFN0cmluZygpLCBlcnJvclR5cGUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBTdHJpbmcgZXJyb3JU
eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25z
dGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6
SW50ZXJuYWxFcnJvcik7Ci0gICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5kaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBjYWxsYmFja0lELCBTdHJpbmcoKSwg
ZXJyb3JUeXBlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBhdXRvbWF0aW9uU2Vz
c2lvblByb3h5LT5kaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihmcmFtZUlELCBjYWxsYmFj
a0lELCByZXN1bHQtPnN0cmluZygpLCBTdHJpbmcoKSk7CisgICAgaWYgKEpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCBhcmd1bWVudHNbMl0pKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRS
ZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikp
OworICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5kaWRFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbihmcmFtZUlELCBjYWxsYmFja0lELCByZXN1bHQtPnN0cmluZygpLCB7IH0pOworICAg
IH0gZWxzZSBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50c1syXSkpIHsKKyAg
ICAgICAgSlNPYmplY3RSZWYgZXJyb3IgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1l
bnRzWzJdLCBleGNlcHRpb24pOworICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZXJyb3IsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
Im5hbWUiX3MpLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICBTdHJpbmcgZXhjZXB0aW9uTmFt
ZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgbmFtZVZhbHVlLCBudWxs
cHRyKSktPnN0cmluZygpOworICAgICAgICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SmF2YVNjcmlwdEVycm9yKTsK
KyAgICAgICAgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkphdmFTY3JpcHRUaW1lb3V0IikKKyAgICAg
ICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OkphdmFTY3JpcHRUaW1lb3V0KTsKKyAgICAgICAgZWxzZSBpZiAoZXhjZXB0
aW9uTmFtZSA9PSAiTm9kZU5vdEZvdW5kIikKKyAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3Vu
ZCk7CisgICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkludmFsaWROb2RlSWRlbnRp
ZmllciIpCisgICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlkTm9kZUlkZW50aWZpZXIpOworICAgICAg
ICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlkRWxlbWVudFN0YXRlIikKKyAgICAg
ICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OkludmFsaWRFbGVtZW50U3RhdGUpOworICAgICAgICBlbHNlIGlmIChleGNl
cHRpb25OYW1lID09ICJJbnZhbGlkUGFyYW1ldGVyIikKKyAgICAgICAgICAgIGVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFs
aWRQYXJhbWV0ZXIpOworICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlk
U2VsZWN0b3IiKQorICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZFNlbGVjdG9yKTsKKyAgICAgICAg
ZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIpCisgICAg
ICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKKworICAgICAgICBKU1ZhbHVl
UmVmIG1lc3NhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZXJyb3IsIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBleGNlcHRpb24pOwor
ICAgICAgICBhdXRvIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIG1lc3NhZ2VWYWx1ZSwgZXhjZXB0aW9uKSktPnN0cmluZygpOworICAgICAg
ICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5kaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihm
cmFtZUlELCBjYWxsYmFja0lELCBleGNlcHRpb25NZXNzYWdlLCBlcnJvclR5cGUpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgYXV0
b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWVJ
RCwgY2FsbGJhY2tJRCwgeyB9LCBlcnJvclR5cGUpOworICAgIH0KIAogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTMyOCwyNSArMzQyLDEwIEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2Vi
Q29yZTo6UGFnZUlkZW50aWZpCiAgICAgaWYgKCFleGNlcHRpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpKYXZhU2NyaXB0RXJyb3IpOworICAgIFN0cmluZyBlcnJvclR5
cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJ
bnRlcm5hbEVycm9yKTsKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIGlmIChK
U1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBKU1ZhbHVlUmVm
IG5hbWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09i
amVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcyku
Z2V0KCksIG51bGxwdHIpOwotICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmco
KTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCi0gICAgICAg
ICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOwotICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1l
ID09ICJJbnZhbGlkTm9kZUlkZW50aWZpZXIiKQotICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZE5v
ZGVJZGVudGlmaWVyKTsKLSAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiSW52YWxp
ZEVsZW1lbnRTdGF0ZSIpCi0gICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlkRWxlbWVudFN0YXRlKTsK
LSAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiSW52YWxpZFBhcmFtZXRlciIpCi0g
ICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlkUGFyYW1ldGVyKTsKLSAgICAgICAgZWxzZSBpZiAoZXhj
ZXB0aW9uTmFtZSA9PSAiSW52YWxpZFNlbGVjdG9yIikKLSAgICAgICAgICAgIGVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFs
aWRTZWxlY3Rvcik7Ci0gICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkVsZW1lbnRO
b3RJbnRlcmFjdGFibGUiKQotICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RWxlbWVudE5vdEludGVyYWN0YWJs
ZSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBKU09iamVjdEdldFByb3Bl
cnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpT
U3RyaW5nOjp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBudWxscHRyKTsKICAgICAgICAg
ZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
bWVzc2FnZVZhbHVlLCBudWxscHRyKSktPnN0cmluZygpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5qcyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuanMKaW5kZXggNmUyMzE1Y2Y5ZDguLmVhN2YwMzhmYzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmpzCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMKQEAgLTQxLDMzICs0MSw5IEBAIGxldCBBdXRv
bWF0aW9uU2Vzc2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94eQogCiAgICAg
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnVuY3Rpb25TdHJpbmcsIGFyZ3VtZW50U3RyaW5n
cywgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgZnJhbWVJRCwgY2FsbGJhY2tJRCwg
cmVzdWx0Q2FsbGJhY2ssIGNhbGxiYWNrVGltZW91dCkKICAgICB7Ci0gICAgICAgIC8vIFRoZSBz
Y3JpcHQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4gRXZhbHVhdGUg
aXQgaW5zaWRlIHBhcmVudGhlc2lzIHRvIGdldCB0aGUgZnVuY3Rpb24gdmFsdWUuCi0gICAgICAg
IGxldCBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGUoIigiICsgZnVuY3Rpb25TdHJpbmcgKyAiKSIp
OwotICAgICAgICBpZiAodHlwZW9mIGZ1bmN0aW9uVmFsdWUgIT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTY3JpcHQgZGlkIG5vdCBldmFsdWF0ZSB0byBh
IGZ1bmN0aW9uLiIpOwotCi0gICAgICAgIHRoaXMuX2NsZWFyU3RhbGVOb2RlcygpOwotCi0gICAg
ICAgIGxldCBhcmd1bWVudFZhbHVlcyA9IGFyZ3VtZW50U3RyaW5ncy5tYXAodGhpcy5fanNvblBh
cnNlLCB0aGlzKTsKLQotICAgICAgICBsZXQgdGltZW91dElkZW50aWZpZXIgPSAwOwotICAgICAg
ICBsZXQgcmVzdWx0UmVwb3J0ZWQgPSBmYWxzZTsKLQotICAgICAgICBsZXQgcmVwb3J0UmVzdWx0
ID0gKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgaWYgKHRpbWVvdXRJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWRlbnRpZmllcik7Ci0gICAgICAgICAg
ICByZXN1bHRDYWxsYmFjayhmcmFtZUlELCBjYWxsYmFja0lELCB0aGlzLl9qc29uU3RyaW5naWZ5
KHJlc3VsdCksIGZhbHNlKTsKLSAgICAgICAgICAgIHJlc3VsdFJlcG9ydGVkID0gdHJ1ZTsKLSAg
ICAgICAgfTsKLSAgICAgICAgbGV0IHJlcG9ydFRpbWVvdXRFcnJvciA9ICgpID0+IHsgcmVzdWx0
Q2FsbGJhY2soZnJhbWVJRCwgY2FsbGJhY2tJRCwgIkphdmFTY3JpcHRUaW1lb3V0IiwgdHJ1ZSk7
IH07Ci0KLSAgICAgICAgaWYgKGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQpIHsKLSAg
ICAgICAgICAgIGFyZ3VtZW50VmFsdWVzLnB1c2gocmVwb3J0UmVzdWx0KTsKLSAgICAgICAgICAg
IGZ1bmN0aW9uVmFsdWUuYXBwbHkobnVsbCwgYXJndW1lbnRWYWx1ZXMpOwotICAgICAgICAgICAg
aWYgKCFyZXN1bHRSZXBvcnRlZCAmJiBjYWxsYmFja1RpbWVvdXQgPj0gMCkKLSAgICAgICAgICAg
ICAgICB0aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQocmVwb3J0VGltZW91dEVycm9yLCBj
YWxsYmFja1RpbWVvdXQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcG9ydFJlc3Vs
dChmdW5jdGlvblZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFsdWVzKSk7CisgICAgICAgIHRo
aXMuX2V4ZWN1dGUoZnVuY3Rpb25TdHJpbmcsIGFyZ3VtZW50U3RyaW5ncywgZXhwZWN0c0ltcGxp
Y2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1lb3V0KQorICAgICAgICAgICAgLnRoZW4o
cmVzdWx0ID0+IHsgcmVzdWx0Q2FsbGJhY2soZnJhbWVJRCwgY2FsbGJhY2tJRCwgdGhpcy5fanNv
blN0cmluZ2lmeShyZXN1bHQpKTsgfSkKKyAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7IHJl
c3VsdENhbGxiYWNrKGZyYW1lSUQsIGNhbGxiYWNrSUQsIGVycm9yKTsgfSk7CiAgICAgfQogCiAg
ICAgbm9kZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTgyLDYgKzU4LDU5IEBAIGxldCBB
dXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94eQogCiAg
ICAgLy8gUHJpdmF0ZQogCisgICAgX2V4ZWN1dGUoZnVuY3Rpb25TdHJpbmcsIGFyZ3VtZW50U3Ry
aW5ncywgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tUaW1lb3V0KQor
ICAgIHsKKyAgICAgICAgbGV0IHRpbWVvdXRQcm9taXNlOworICAgICAgICBsZXQgdGltZW91dElk
ZW50aWZpZXIgPSAwOworICAgICAgICBpZiAoY2FsbGJhY2tUaW1lb3V0ID49IDApIHsKKyAgICAg
ICAgICAgIHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgICAgICAgIHRpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dCgoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCh7IG5hbWU6ICJKYXZhU2NyaXB0VGltZW91dCIs
IG1lc3NhZ2U6ICJzY3JpcHQgdGltZWQgb3V0IGFmdGVyICIgKyBjYWxsYmFja1RpbWVvdXQgKyAi
bXMiIH0pOworICAgICAgICAgICAgICAgIH0sIGNhbGxiYWNrVGltZW91dCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgLy8gVGhlIHNjcmlwdCBpcyBleHBlY3Rl
ZCB0byBiZSBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiBFdmFsdWF0ZSBpdCBpbnNpZGUgcGFyZW50
aGVzaXMgdG8gZ2V0IHRoZSBmdW5jdGlvbiB2YWx1ZS4KKyAgICAgICAgICAgIGxldCBmdW5jdGlv
blZhbHVlID0gZXZhbHVhdGUoIihhc3luYyAiICsgZnVuY3Rpb25TdHJpbmcgKyAiKSIpOworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBmdW5jdGlvblZhbHVlICE9PSAiZnVuY3Rpb24iKQorICAgICAg
ICAgICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCJTY3JpcHQgZGlkIG5vdCBldmFsdWF0ZSB0
byBhIGZ1bmN0aW9uLiIpKTsKKworICAgICAgICAgICAgdGhpcy5fY2xlYXJTdGFsZU5vZGVzKCk7
CisKKyAgICAgICAgICAgIGxldCBhcmd1bWVudFZhbHVlcyA9IGFyZ3VtZW50U3RyaW5ncy5tYXAo
dGhpcy5fanNvblBhcnNlLCB0aGlzKTsKKyAgICAgICAgICAgIGlmIChleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50KQorICAgICAgICAgICAgICAgIGFyZ3VtZW50VmFsdWVzLnB1c2gocmVz
b2x2ZSk7CisgICAgICAgICAgICBsZXQgcmVzdWx0UHJvbWlzZSA9IGZ1bmN0aW9uVmFsdWUuYXBw
bHkobnVsbCwgYXJndW1lbnRWYWx1ZXMpOworCisgICAgICAgICAgICBsZXQgcHJvbWlzZXMgPSBb
cmVzdWx0UHJvbWlzZV07CisgICAgICAgICAgICBpZiAodGltZW91dFByb21pc2UpCisgICAgICAg
ICAgICAgICAgcHJvbWlzZXMucHVzaCh0aW1lb3V0UHJvbWlzZSk7CisgICAgICAgICAgICBQcm9t
aXNlLnJhY2UocHJvbWlzZXMpCisgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC5jYXRjaChlcnJv
ciA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIEFzeW5jIHNjcmlwdHMgY2FuIGNhbGwg
UHJvbWlzZS5yZXNvbHZlKCkgaW4gdGhlIGZ1bmN0aW9uIHNjcmlwdCwgZ2VuZXJhdGluZyBhIG5l
dyBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgaW4gYQorICAgICAgICAvLyB0aW1lciAoc2VlIHcz
YyB0ZXN0IGV4ZWN1dGVfYXN5bmNfc2NyaXB0L3Byb21pc2UucHk6OnRlc3RfcHJvbWlzZV9yZXNv
bHZlX3RpbWVvdXQpLiBJbiB0aGF0IGNhc2UsIHRoZSBpbnRlcm5hbCByYWNlCisgICAgICAgIC8v
IGZpbmlzaGVzIHJlc29sdmVkLCBzbyB3ZSBuZWVkIHRvIHN0YXJ0IGEgbmV3IG9uZSBoZXJlIHRv
IHdhaXQgZm9yIHRoZSBzZWNvbmQgcHJvbWlzZSB0byBiZSByZW9sdmVkIG9yIHRoZSB0aW1lb3V0
LgorICAgICAgICBsZXQgcHJvbWlzZXMgPSBbcHJvbWlzZV07CisgICAgICAgIGlmICh0aW1lb3V0
UHJvbWlzZSkKKyAgICAgICAgICAgIHByb21pc2VzLnB1c2godGltZW91dFByb21pc2UpOworICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKHByb21pc2VzKQorICAgICAgICAgICAgLmZpbmFsbHko
KCkgPT4geworICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0SWRlbnRpZmllcikgeworICAgICAg
ICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkZW50aWZpZXIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgIH0KKwogICAgIF9qc29uUGFyc2Uoc3RyaW5n
KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcpCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0
cy9DaGFuZ2VMb2cgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGM2ZmJhNjE0ZWQu
Ljg2YjEyNjE5MDZiIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
V2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMDggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIEF1dG9t
YXRpb246IGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIHNob3VsZCB1c2UgUHJvbWlzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE1MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBleHBl
Y3RhdGlvbnMgZm9yIHRlc3RzIHRoYXQgYXJlIG5vdyBwYXNzaW5nLgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9ucy5qc29uOgorCiAyMDIwLTAxLTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IHNldmVyYWwgdzNjIGNv
bGxlY3Rpb25zIHRlc3RzIGFkZGVkIGluIHIyMzA5NTMgYXJlIGZhaWxpbmcKZGlmZiAtLWdpdCBh
L1dlYkRyaXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbiBiL1dlYkRyaXZlclRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMuanNvbgppbmRleCBmY2Y3ZWZlYjZlOS4uYTdjYzNkODI2OTAgMTAwNjQ0
Ci0tLSBhL1dlYkRyaXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9XZWJEcml2
ZXJUZXN0cy9UZXN0RXhwZWN0YXRpb25zLmpzb24KQEAgLTUzMiwyMiArNTMyLDYgQEAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIv
dGVzdHMvZXhlY3V0ZV9hc3luY19zY3JpcHQvcHJvbWlzZS5weSI6IHsKLSAgICAgICAgImV4cGVj
dGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8y
MDQxNTEifX0sCi0gICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0ZXN0X2F3YWl0
X3Byb21pc2VfcmVqZWN0IjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjog
eyJzdGF0dXMiOiBbIlBBU1MiXX19Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAot
ICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL2V4ZWN1dGVfc2NyaXB0L3Byb21pc2Uu
cHkiOiB7Ci0gICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwg
ImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMjA0MTUxIn19LAotICAgICAgICAic3VidGVzdHMiOiB7Ci0g
ICAgICAgICAgICAidGVzdF9hd2FpdF9wcm9taXNlX3JlamVjdCI6IHsKLSAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJQQVNTIl19fQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfSwKICAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy9l
bGVtZW50X3NlbmRfa2V5cy9jb250ZW50X2VkaXRhYmxlLnB5IjogewogICAgICAgICAiZXhwZWN0
ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4
MDQwMyJ9fQogICAgIH0sCg==
</data>
<flag name="review"
          id="402852"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>