<?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>180333</bug_id>
          
          <creation_ts>2017-12-03 08:30:18 -0800</creation_ts>
          <short_desc>[WTF] Thread::create should have Thread::tryCreate</short_desc>
          <delta_ts>2017-12-12 02:36:43 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377466</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 08:30:18 -0800</bug_when>
    <thetext>[WTF] Thread::create should have Thread::tryCreate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377467</commentid>
    <comment_count>1</comment_count>
      <attachid>328294</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 08:33:18 -0800</bug_when>
    <thetext>Created attachment 328294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377493</commentid>
    <comment_count>2</comment_count>
      <attachid>328294</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-03 13:39:20 -0800</bug_when>
    <thetext>Comment on attachment 328294
Patch

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

The move from RefPtr to Ref is a nice cleanup.

But as for tryCreate, I don’t fully understand this. Do we really think it’s OK for WebKit to run without some threads that it needs? Maybe we have a discipline where all threads allocated first are required and then later we can run in a thread-starved state with some operations failing, but others continuing to work correctly?

Normally with memory allocation, for example, very few clients are actually prepared to have a second path if allocation fails. It’s the ones that are allocating large amounts of data, typically proportional to end user data sets, and thus those are written to understand the possibility of failure. But small allocations are assumed to never fail.

I don’t see two separate categories like this for threads. There aren’t cheaper threads and more costly threads, so we can’t assume that cheaper thread allocations will succeed after the more costly ones.

It’s OK to go on this path if we have a clear goal in mind, but I am not sure the goal is clear, at least I don’t understand it.

&gt; Source/WebCore/platform/audio/ReverbConvolver.cpp:66
&gt; -    , m_backgroundThread(0)
&gt; +    , m_backgroundThread(nullptr)
&gt;      , m_wantsToExit(false)
&gt;      , m_moreInputBuffered(false)

Can we initialize these in the class definition?

&gt; Source/WebCore/workers/WorkerThread.cpp:143
&gt; +    m_thread = Thread::tryCreate(&quot;WebCore: Worker&quot;, [this] {

Why is it OK to change the semantics of WorkerThread::start? Doesn’t it need to be renamed to tryStart if it can fail? Do callers really handle the case where it fails?

&gt; Source/WebKit/UIProcess/API/glib/IconDatabase.cpp:222
&gt; +    m_syncThread = Thread::tryCreate(&quot;WebCore: IconDatabase&quot;, [this] {

Seems that this function is written half-claiming it can handle a failure to create a thread, but not really. For example, if this open function returns false, it’s not OK that you then have to call the close function. But we have already done m_mainThreadNotifier.setActive(true) here, which seems to indicate I need to call close.

I think that maybe this isn’t quite right when m_syncThread ends up null.

&gt; Source/WebKitLegacy/Storage/StorageThread.cpp:57
&gt; +        m_thread = Thread::tryCreate(&quot;WebCore: LocalStorage&quot;, [this] {

Same question: Why is it OK to change the semantics of StorageThread::start? Doesn’t it need to be renamed to tryStart if it can fail? Do callers really handle the case where it fails?

Maybe we should not add this thread to activeStorageThreads() if we weren’t able to create a thread? Again, not sure what the concept is here.

&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CVDisplayLink.cpp:-67
&gt; -    ASSERT(m_ioThread);

Why remove this assertion? Doesn’t seem necessary to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378156</commentid>
    <comment_count>3</comment_count>
      <attachid>328294</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 07:32:07 -0800</bug_when>
    <thetext>Comment on attachment 328294
Patch

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

The problem I attempt to solve with this patch is that there are clients that do not null check of the `RefPtr&lt;Thread&gt;`.
If the clients think that should never fail, failing early with RELEASE_ASSERT is safer.

This patch is introducing `Thread::create` and `Thread::tryCreate`. `Thread::tryCreate` is the same one to the current `Thread::create`. It returns `RefPtr&lt;Thread&gt;`. But new `Thread::create` performs RELEASE_ASSERT and returns `Ref&lt;Thread&gt;`.
Using `Thread::create` with RELEASE_ASSERT is safer way for clients that think thread is mandatory. It enforce the nullptr check.

So basically, this patch attempts to insert RELEASE_ASSERT to the result of the current `Thread::create`. This patch changes only several places intentionally to using `Thread::tryCreate` because I see the explicit handling of nullptr is described in these code. But I&apos;m not sure this handling is reasonable. Anyway, in this patch, I keep these code as is.

I think we should revisit these code. I&apos;m not sure whether these nullptr handlings are reasonable ones. At that time, `Thread::tryCreate` is a good marker for these code. And it explicitly describes that the code handles the failure case of the thread creation.

&gt;&gt; Source/WebCore/platform/audio/ReverbConvolver.cpp:66
&gt;&gt;      , m_moreInputBuffered(false)
&gt; 
&gt; Can we initialize these in the class definition?

Fixed.

&gt;&gt; Source/WebCore/workers/WorkerThread.cpp:143
&gt;&gt; +    m_thread = Thread::tryCreate(&quot;WebCore: Worker&quot;, [this] {
&gt; 
&gt; Why is it OK to change the semantics of WorkerThread::start? Doesn’t it need to be renamed to tryStart if it can fail? Do callers really handle the case where it fails?

This code does not change the semantics because the old `Thread::create` is the same to the `Thread::tryCreate`.
This patch is not attempting to change the semantics of the current code. Since this `start()` has the handling of nullptr thread case, this patch uses `Thread::tryCreate` here.
I&apos;m not sure whether the failure case of `WorkerThread::start` is well handled. We should revisit, but this is not the intension of this patch. Rather, this patch makes it explicit by renaming the old `Thread::create` with `Thread::tryCreate`.

&gt;&gt; Source/WebKit/UIProcess/API/glib/IconDatabase.cpp:222
&gt;&gt; +    m_syncThread = Thread::tryCreate(&quot;WebCore: IconDatabase&quot;, [this] {
&gt; 
&gt; Seems that this function is written half-claiming it can handle a failure to create a thread, but not really. For example, if this open function returns false, it’s not OK that you then have to call the close function. But we have already done m_mainThreadNotifier.setActive(true) here, which seems to indicate I need to call close.
&gt; 
&gt; I think that maybe this isn’t quite right when m_syncThread ends up null.

Interesting. And I think exploiting this is the intension of this patch. This patch uses `Thread::tryCreate` only when the code has the failure case of `Thread::create`.
But these places should be revisited.

&gt;&gt; Source/WebKitLegacy/Storage/StorageThread.cpp:57
&gt;&gt; +        m_thread = Thread::tryCreate(&quot;WebCore: LocalStorage&quot;, [this] {
&gt; 
&gt; Same question: Why is it OK to change the semantics of StorageThread::start? Doesn’t it need to be renamed to tryStart if it can fail? Do callers really handle the case where it fails?
&gt; 
&gt; Maybe we should not add this thread to activeStorageThreads() if we weren’t able to create a thread? Again, not sure what the concept is here.

Ditto. This change does not change the semantics. The old `Thread::create` is the same to the new `Thread::tryCreate`.

&gt;&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CVDisplayLink.cpp:-67
&gt;&gt; -    ASSERT(m_ioThread);
&gt; 
&gt; Why remove this assertion? Doesn’t seem necessary to remove it.

This is what this patch is doing. The bad thing is that the old `Thread::create` returns `RefPtr&lt;Thread&gt;`, not `Ref&lt;Thread&gt;`. The new `Thread::create` returns `Ref&lt;Thread&gt;` by ensuring the success of the thread creation by using `RELEASE_ASSERT`. So, now, m_ioThread becomes `Ref&lt;Thread&gt;`, and this assertion is not necessary since it is exactly done in the new `Thread::create`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378157</commentid>
    <comment_count>4</comment_count>
      <attachid>328449</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 07:36:57 -0800</bug_when>
    <thetext>Created attachment 328449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378161</commentid>
    <comment_count>5</comment_count>
      <attachid>328451</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 07:49:56 -0800</bug_when>
    <thetext>Created attachment 328451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380555</commentid>
    <comment_count>6</comment_count>
      <attachid>328451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-11 21:51:00 -0800</bug_when>
    <thetext>Comment on attachment 328451
Patch

Seems fine. We should also come back and change every last one of these from tryCreate to create. I am not convinced that any of these really want to stay with tryCreate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380611</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-12 02:35:45 -0800</bug_when>
    <thetext>Committed r225778: &lt;https://trac.webkit.org/changeset/225778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380612</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-12 02:36:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/35990798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328294</attachid>
            <date>2017-12-03 08:33:18 -0800</date>
            <delta_ts>2017-12-05 07:36:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180333-20171204013317.patch</filename>
            <type>text/plain</type>
            <size>25104</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDI4ZTNiNzZhZGVjZWZkZGQyMjBmNjEzMGY4ZjM5ZGEzOThjMmU0Li5iOTRkMWRiM2RhOWZmMTE3
YmQ3NmUyYjViYTY5YTA5YTllNDUyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQgaGF2ZSBUaHJlYWQ6
OnRyeUNyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAg
ICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25E
b2xsYXJBZ2VudFN0YXJ0KToKKwogMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmU6IG1pc3NpbmcgZXhjZXB0aW9uIGNo
ZWNrcyBpbiBNYXRoIGZ1bmN0aW9ucyB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1bWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCAwOWJlNGM0NWNkNDZkMTg2Mjk1NjliN2M3YTUwY2FlZGUyYTg5N2IwLi40MDExYjBhNzIy
NjY5NjVjMmIwY2UyMGM3YjM3MzQ4YTY5ZmM5NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3
LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW55IGNhbGxlcnMg
b2YgVGhyZWFkOjpjcmVhdGUgYXNzdW1lIHRoYXQgaXQgcmV0dXJucyBub24tbnVsbHB0ciBUaHJl
YWQuCisgICAgICAgIEJ1dCBpZiB0aGUgbnVtYmVyIG9mIHRocmVhZHMgaGl0cyB0aGUgbGltaXQg
aW4gdGhlIHN5c3RlbSwgY3JlYXRpbmcgVGhyZWFkCisgICAgICAgIHdvdWxkIGZhaWwuIEluIHRo
YXQgY2FzZSwgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCB0byBrZWVwIFdlYktpdCB3b3JraW5nLgor
CisgICAgICAgIFdlIGludHJvZHVjZSBUaHJlYWQ6OnRyeUNyZWF0ZSwgYW5kIGNoYW5nZSB0aGUg
cmV0dXJuZWQgdmFsdWUgZnJvbSBUaHJlYWQ6OmNyZWF0ZQorICAgICAgICBmcm9tIFJlZlB0cjxU
aHJlYWQ+IHRvIFJlZjxUaHJlYWQ+LiBJbiBUaHJlYWQ6OmNyZWF0ZSwgd2UgZW5zdXJlIHRocmVh
ZCBjcmVhdGlvbgorICAgICAgICBzdWNjZWVkcyBieSBSRUxFQVNFX0FTU0VSVC4gQW5kIHdlIHVz
ZSBUaHJlYWQ6OmNyZWF0ZSBpbnRlbnRpb25hbGx5IGlmIHRoZQorICAgICAgICBjYWxsZXIgYXNz
dW1lcyB0aGF0IHRocmVhZCBzaG91bGQgYmUgY3JlYXRlZC4KKworICAgICAgICAqIHd0Zi9BdXRv
bWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToK
KyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBh
cmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYv
V29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkp
OgorCiAyMDE3LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGYWN0b3Igb3V0IHRoZSAiZGF0YWJhc2VUYXNrUXVldWUiIHBhcnRzIG9mIElEQlNlcnZl
ciBpbnRvIHNvbWV0aGluZyByZXVzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZDNmOTYyMzFmNjY4YTEy
YTllNTZkYjdlODM3YjljYjVjOTQwMGU5Li45NmM4ZDJjZjMwYzcyNzRiZDU2OTE2OGQxYTllMGMx
ZDA5NDE3MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTItMDMgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFk
OjpjcmVhdGUgc2hvdWxkIGhhdmUgVGhyZWFkOjp0cnlDcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
Q0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
OjpzdGFydCk6CisKIDIwMTctMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEdzdFBhZCBsZWFrZWQgaW4gV2ViS2l0
VGV4dENvbWJpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY0Mzc1MDJiY2RmZDA3YmVhMjM0NmRhOGU1ZjI0NDFm
N2EyNWY1OGQuLjRkN2E3M2MwNmIyODRiODU1YjUwMGNjY2Q5OGI0OTk5ZmNjM2JkODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFkOjpjcmVhdGUgc2hvdWxkIGhh
dmUgVGhyZWFkOjp0cnlDcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6b3Blbik6CisgICAgICAgICogVUlQcm9jZXNzL2xp
bnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lbW9yeVBy
ZXNzdXJlTW9uaXRvcjo6TWVtb3J5UHJlc3N1cmVNb25pdG9yKToKKwogMjAxNy0xMi0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCBiNWJiZDZiNGEzNGYwMjI5M2MyNGRkZmEyZjZlZDlmMTY2NjY1NWI4Li4y
NmY2NTRhMTE5NGRiNGNiMjg2YzA1YmQ2MDU0ODQxYjYyOWQ0MTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3VsZCBo
YXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisKIDIwMTctMTEtMjcgIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdW1dpbl0gQ29uZGl0aW9u
YWxseSBzZWxlY3QgRExMIENSVCBvciBzdGF0aWMgQ1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggZmYzOWU1ODkxYzA1NTUzYmJmYzEyZGYyMWM3M2YyMjRhMmJmYzFjYS4uYjJjZmY0
ZjdlMGU3MTE2NDNkNTU0NjAwMWZkZmMyZjFlM2VlOWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3Vs
ZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGlu
ay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6c3RhcnQpOgorCiAyMDE3LTEx
LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGljdGlv
bmFyeSBsZWFrIGluIGxvb2t1cCwgY29udmVydCBGaW5kT3B0aW9ucyB0byBPcHRpb25TZXQsIHR3
ZWFrIGNvZGUgc3R5bGUgbmVhcmJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCmluZGV4IDA4NTRhY2I4YTMyMzA3MmE4NDNlNzc3OTg3MWEzN2JhZDBjMzlh
MDAuLmVlYTc3NDE4ZmM2NmY0OTE0NDY0YmRkYjEyMDNmMzU3ZDNhM2U2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC04MDgsNyArODA4LDcg
QEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgTG9jayBsb2NrOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4g
dGhyZWFkczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaWx0ZXIgPyAxIDogV1RGOjpudW1iZXJP
ZlByb2Nlc3NvckNvcmVzKCk7IGktLTspIHsKICAgICAgICAgdGhyZWFkcy5hcHBlbmQoCiAgICAg
ICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgfSkpOwogICAgIH0KIAotICAgIGZvciAo
UmVmUHRyPFRocmVhZD4gdGhyZWFkIDogdGhyZWFkcykKKyAgICBmb3IgKGF1dG8mIHRocmVhZCA6
IHRocmVhZHMpCiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKICAgICBjcmFz
aExvY2subG9jaygpOwogICAgIGRhdGFMb2coIkNvbXBsZXRlZCAiLCBudW1iZXJPZlRlc3RzLCAi
IHRlc3RzXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVz
dGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4
IDI0YmRjMmM0NmI3MjE4NTIyN2FmMTE5NzE0NTMyY2MzMGVhYzk4NGYuLjQ3N2U3MzdjMWE4MjIx
NjRlNDA3OGI3ODhjY2FiMWI2Mjk5MzdlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci90ZXN0YWlyLmNwcApAQCAtMjAyNSw3ICsyMDI1LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogCiAgICAgTG9jayBsb2NrOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0
aHJlYWRzOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBmaWx0ZXIgPyAxIDogV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7IGktLTsp
IHsKICAgICAgICAgdGhyZWFkcy5hcHBlbmQoCiAgICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgK
QEAgLTIwNDUsNyArMjA0NSw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAg
ICAgICAgICAgICB9KSk7CiAgICAgfQogCi0gICAgZm9yIChSZWZQdHI8VGhyZWFkPiB0aHJlYWQg
OiB0aHJlYWRzKQorICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKICAgICAgICAgdGhy
ZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIGNyYXNoTG9jay5sb2NrKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGNhYjIzZjYyNjM4YmMyZTkwOTY0YjA1ZWI0
OWE1NjhiODJlNDQ2MzUuLjkwMGJkMzg3YTllNWZlNzJiYzhhNjUwNDE3NTMwNGZmOTZjYTQ3OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xNzc5NCw3ICsxNzc5NCw3IEBA
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogICAgIExvY2sgbG9jazsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IHRo
cmVhZHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlsdGVyID8gMSA6IFdURjo6bnVtYmVyT2ZQ
cm9jZXNzb3JDb3JlcygpOyBpLS07KSB7CiAgICAgICAgIHRocmVhZHMuYXBwZW5kKAogICAgICAg
ICAgICAgVGhyZWFkOjpjcmVhdGUoCkBAIC0xNzgxNCw3ICsxNzgxNCw3IEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICB9KSk7CiAgICAgfQogCi0gICAgZm9y
IChSZWZQdHI8VGhyZWFkPiB0aHJlYWQgOiB0aHJlYWRzKQorICAgIGZvciAoYXV0byYgdGhyZWFk
IDogdGhyZWFkcykKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIGNy
YXNoTG9jay5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQxMTVlOTM3MDI1MzJj
MWViZDg2NmQ5ZTQ0Y2QzNmIyODM0ZTc3ODMuLmY5N2M3Njg1MGU4OGJiNTY4MWQ0MWZlYWM3MGQx
NGI0NTQ3ZWJmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgQ29uZGl0aW9uIGRpZFN0YXJ0Q29uZGl0aW9uOwogICAgIGJvb2wg
ZGlkU3RhcnQgPSBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZSgKKyAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgKICAg
ICAgICAgIkpTQyBBZ2VudCIsCiAgICAgICAgIFtzb3VyY2VDb2RlLCAmZGlkU3RhcnRMb2NrLCAm
ZGlkU3RhcnRDb25kaXRpb24sICZkaWRTdGFydF0gKCkgewogICAgICAgICAgICAgQ29tbWFuZExp
bmUgY29tbWFuZExpbmUoMCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9B
dXRvbWF0aWNUaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcApp
bmRleCA2OTBjODBmZTI2MzM1NjZlMzk1ZDA0NGJiMzY5M2RlNzU2YTlmOTQzLi5hNWQ5ZmU3MWQ2
NDljNDY0MjVkZjM4ZWUzNWFkOGFjMzU3NDlmMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVh
ZC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29u
c3QgQWJzdHJhY3RMb2NrZXImKQogICAgIAogICAgIG1faGFzVW5kZXJseWluZ1RocmVhZCA9IHRy
dWU7CiAgICAgCi0gICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoCisg
ICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoCiAgICAgICAgICJXVEY6OkF1
dG9tYXRpY1RocmVhZCIsCiAgICAgICAgIFs9XSAoKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIGIv
U291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggYWFjYzdjY2MzNTU2
NmZmNjlkM2EwYzIxYjZjNmEyOTQzNzU1YzM3Yi4uYWU2YzE3ZmQxYzVhZWFkNzE0ZWNjYTM0MWRk
ZDk2NGI5OGVhMDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgYm9vbCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp0
cnlMb2NrRm9yKFBhcmFsbGVsRW52aXJvbm1lbnQqIHBhcmVudCkKICAgICB9CiAKICAgICBpZiAo
IW1fdGhyZWFkKSB7Ci0gICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlBhcmFsbGVs
IHdvcmtlciIsIFt0aGlzXSB7CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjp0cnlDcmVhdGUo
IlBhcmFsbGVsIHdvcmtlciIsIFt0aGlzXSB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CiAKICAgICAgICAgICAgIHdoaWxlIChtX3RocmVhZCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5j
cHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5YWIyMDlhOTAwYTgyOS4uNzY5Njhh
NGM3Y2U5NGQwOGNjYjY2YWZhYjU5MDZhNDkwZmIxNDY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4
dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICBmdW5jdGlvbigpOwogfQogCi1SZWZQdHI8VGhyZWFk
PiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50
cnlQb2ludCkKK1JlZlB0cjxUaHJlYWQ+IFRocmVhZDo6dHJ5Q3JlYXRlKGNvbnN0IGNoYXIqIG5h
bWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50KQogewogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOwogICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0UmVmKCpuZXcgVGhy
ZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBlZTEzMDNhMTkxYjA5ZDRlYzlkZGM4N2NjYzg4MTU0
Mjk3ZmEyMzA2Li4zMzM2YTlmZDA2NTE1NDM5ZTk5NTNjODc1MTAwOTg0MTU0MWM0NGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaApAQCAtODYsNyArODYsMTMgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHRo
cmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAgICAgLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBs
aXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJl
YWQuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBjcmVhdGUo
Y29uc3QgY2hhciogdGhyZWFkTmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IHRyeUNyZWF0ZShjb25zdCBjaGFyKiB0
aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyBpbmxpbmUgUmVmPFRo
cmVhZD4gY3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8gdGhyZWFkID0gdHJ5Q3JlYXRlKHRocmVhZE5h
bWUsIFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkKTsK
KyAgICAgICAgcmV0dXJuICp0aHJlYWQ7CisgICAgfQogCiAgICAgLy8gUmV0dXJucyBUaHJlYWQg
b2JqZWN0LgogICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCm9s
ZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggNWFlMzJmMzkzZGVmNWY1YThiZjgz
YzM1YjU5ZjlkMjkyYzY1MDg1Yi4uMTcwZDhiZTZiMTE1YjEwZDFmMjhmNGY0ZTgxYmVjZDNiNzhh
M2UwZgotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1dvcmtRdWV1ZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6Y29u
Y3VycmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHNpemVf
dCBpbgogICAgICAgICBDb25kaXRpb24gbV9jb25kaXRpb247CiAgICAgICAgIERlcXVlPGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4qPiBtX3F1ZXVlOwogCi0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8VGhyZWFkPj4gbV93b3JrZXJzOworICAgICAgICBWZWN0b3I8UmVmPFRocmVhZD4+IG1fd29y
a2VyczsKICAgICB9OwogCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRQb29s
PiB0aHJlYWRQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5j
cHAKaW5kZXggMzdmZTMxYjM2MzFmMDMxYTM5ZDEyOTkzYzZjZWVmYjUwMWY2OWVjNS4uMmEwODlh
MTVhNzkyNWFjZGI0NWNkODIyNjMyNzc2N2NiMTdiZDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBHQ0Nv
bnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVjZW50bHkoKQogCiB2b2lkIEdD
Q29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyhi
b29sIHdhaXRVbnRpbERvbmUpCiB7Ci0gICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIldlYkNvcmU6IEdDQ29udHJvbGxlciIsICZjb2xsZWN0KTsKKyAgICBSZWY8VGhy
ZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogR0NDb250cm9sbGVyIiwgJmNv
bGxlY3QpOwogCiAgICAgaWYgKHdhaXRVbnRpbERvbmUpIHsKICAgICAgICAgdGhyZWFkLT53YWl0
Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMGU3NDY2MTg1ODhjZTg4NDlhN2QzZGExYjFhMDBkMzQz
YzUyMzc5Ny4uZjYxYzI2Y2QzNzUxMzc3YjU3YjE4YjJiZTdjMGJlZTEzMTlkY2EyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hh
bm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAgICAgLCBtX21pbkZGVFNp
emUoTWluRkZUU2l6ZSkgLy8gRmlyc3Qgc3RhZ2Ugd2lsbCBoYXZlIHRoaXMgc2l6ZSAtIHN1Y2Nl
c3NpdmUgc3RhZ2VzIHdpbGwgZG91YmxlIGluIHNpemUgZWFjaCB0aW1lCiAgICAgLCBtX21heEZG
VFNpemUobWF4RkZUU2l6ZSkgLy8gdW50aWwgd2UgaGl0IG1fbWF4RkZUU2l6ZQogICAgICwgbV91
c2VCYWNrZ3JvdW5kVGhyZWFkcyh1c2VCYWNrZ3JvdW5kVGhyZWFkcykKLSAgICAsIG1fYmFja2dy
b3VuZFRocmVhZCgwKQorICAgICwgbV9iYWNrZ3JvdW5kVGhyZWFkKG51bGxwdHIpCiAgICAgLCBt
X3dhbnRzVG9FeGl0KGZhbHNlKQogICAgICwgbV9tb3JlSW5wdXRCdWZmZXJlZChmYWxzZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBmNDU1NTg4NDlhYWZj
YzJmNzZhOWE0MDU0ZWEwNzZkMjk5Y2ZmNGIyLi4wNWZmOTI0M2ViZDlkYTc1YzMxNjg2N2Q4YTEz
ZGFhOGUxODE3NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBA
IC0xNDAsNyArMTQwLDcgQEAgYm9vbCBXb3JrZXJUaHJlYWQ6OnN0YXJ0KFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKQogCiAgICAgbV9ldmFsdWF0
ZUNhbGxiYWNrID0gV1RGTW92ZShldmFsdWF0ZUNhbGxiYWNrKTsKIAotICAgIG1fdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IFdvcmtlciIsIFt0aGlzXSB7CisgICAgbV90aHJlYWQg
PSBUaHJlYWQ6OnRyeUNyZWF0ZSgiV2ViQ29yZTogV29ya2VyIiwgW3RoaXNdIHsKICAgICAgICAg
d29ya2VyVGhyZWFkKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGMzNzc1ODI1NGI0ZDRmOGYwMWNlOWEz
OGU2ZjBkZThiNTI1ODk5NmEuLjg1MDYyYTE1NWI3ZjEyZDQzNjhiOTk4ZTAwZDUyMGIyOTMxZjYz
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpvcGVuKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIC8vIExvY2sg
aGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJlYWQgc28gdGhlIHRocmVhZCBk
b2Vzbid0IGFjdHVhbGx5IGNvbW1lbmNlIHVudGlsIHRoZSBjcmVhdGVUaHJlYWQoKSBjYWxsCiAg
ICAgLy8gY29tcGxldGVzIGFuZCBtX3N5bmNUaHJlYWRSdW5uaW5nIGlzIHByb3Blcmx5IHNldAog
ICAgIG1fc3luY0xvY2subG9jaygpOwotICAgIG1fc3luY1RocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJXZWJDb3JlOiBJY29uRGF0YWJhc2UiLCBbdGhpc10geworICAgIG1fc3luY1RocmVhZCA9IFRo
cmVhZDo6dHJ5Q3JlYXRlKCJXZWJDb3JlOiBJY29uRGF0YWJhc2UiLCBbdGhpc10gewogICAgICAg
ICBpY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CiAgICAgfSk7CiAgICAgbV9zeW5jVGhyZWFkUnVu
bmluZyA9IG1fc3luY1RocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCmluZGV4IDQ4ZDEwNjk3NzY1YTk1YThi
MzU4NzIzMGUxMDJkODAzYWQ1OGMwYWEuLjhhNDk1MzYwYmI2Nzg2MTIyYTUyYzE2MzczYzY0Mzgz
MGE0ODgwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9y
eVByZXNzdXJlTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgv
TWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIE1lbW9yeVByZXNz
dXJlTW9uaXRvcjo6TWVtb3J5UHJlc3N1cmVNb25pdG9yKCkKICAgICBpZiAobV9ldmVudEZEID09
IC0xKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZSgiTWVtb3J5UHJlc3N1cmVNb25pdG9yIiwgW3RoaXNdIHsKKyAgICBSZWY8VGhy
ZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiTWVtb3J5UHJlc3N1cmVNb25pdG9yIiwgW3Ro
aXNdIHsKICAgICAgICAgZG91YmxlIHBvbGxJbnRlcnZhbCA9IHNfbWF4UG9sbGluZ0ludGVydmFs
SW5TZWNvbmRzOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgc2xlZXAocG9s
bEludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmNwcAppbmRleCBjNzcyZmY5ZTNmZGMxZjYxNDZmNTRjOTNkYWRmODc5MDNiMGM4YjE4Li45NDUz
NmJiYWJlMGM4MzZlYWUyMTMzMTdhNjVkZmZhYjZjNjQyM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wg
U3RvcmFnZVRocmVhZDo6c3RhcnQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKCFtX3RocmVhZCkgewotICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJX
ZWJDb3JlOiBMb2NhbFN0b3JhZ2UiLCBbdGhpc10geworICAgICAgICBtX3RocmVhZCA9IFRocmVh
ZDo6dHJ5Q3JlYXRlKCJXZWJDb3JlOiBMb2NhbFN0b3JhZ2UiLCBbdGhpc10gewogICAgICAgICAg
ICAgdGhyZWFkRW50cnlQb2ludCgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxh
eUxpbmsuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DVkRpc3BsYXlMaW5rLmNwcAppbmRleCA1MDY4YWYxZDE4N2M2OWQ4ODBiNWZlZjJlMDMz
YzYwYWJmMjc1OTFmLi5iMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5ZmM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NWRGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKQEAgLTY0LDcgKzY0LDYgQEAg
dm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCiAgICAgbV9pb1RocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJXS1FDQTogQ1ZEaXNwbGF5TGluayIsIFt0aGlzXSB7CiAgICAgICAgIHJ1bklPVGhyZWFk
KCk7CiAgICAgfSk7Ci0gICAgQVNTRVJUKG1faW9UaHJlYWQpOwogfQogCiB2b2lkIENWRGlzcGxh
eUxpbms6OnN0b3AoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGQxYWFkZGU1YzQ5MTM2MzBhZWM5MDgwNDM4NjQ0YzFlZjIxMjlhNjUuLmExMDUz
MzY3YWRlMGRkMjRkZWZmMWJlNjVjNGRmMjkxODI1OGYyYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0w
MyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RG
XSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQgaGF2ZSBUaHJlYWQ6OnRyeUNyZWF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db25kaXRpb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25h
bHMuY3BwOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVGhyZWFkR3JvdXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFRocmVhZEdy
b3VwKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEyLTAxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2
ZXI6IGF1dG8taW5zdGFsbCBweXRlc3QgaW5zdGVhZCBvZiBpbXBvcnRpbmcgaXQgZnJvbSB3cHQg
dG9vbHMgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db25kaXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9u
LmNwcAppbmRleCA3NzIxNjM2Yjc3ODA3ZjEzOTUxZWExMTJmYmQ0MTNlOGZhYzQ2MGJjLi4wYTMy
OWMyODNmNzI4NzFmMThkZGZjY2M3NWIzYTU0YTQ0ZWQyMWI2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCB2b2lkIHJ1
blRlc3QoCiAgICAgQ29uZGl0aW9uIGVtcHR5Q29uZGl0aW9uOwogICAgIENvbmRpdGlvbiBmdWxs
Q29uZGl0aW9uOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiBjb25zdW1lclRocmVhZHM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiBwcm9kdWNlclRocmVhZHM7CisgICAgVmVjdG9y
PFJlZjxUaHJlYWQ+PiBjb25zdW1lclRocmVhZHM7CisgICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiBw
cm9kdWNlclRocmVhZHM7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IHJlY2VpdmVkOwogICAgIExv
Y2sgcmVjZWl2ZWRMb2NrOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG51bUNvbnN1bWVy
czsgaS0tOykgewotICAgICAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWRJZGVudGlmaWVyID0gVGhy
ZWFkOjpjcmVhdGUoCisgICAgICAgIGNvbnN1bWVyVGhyZWFkcy5hcHBlbmQoVGhyZWFkOjpjcmVh
dGUoCiAgICAgICAgICAgICAiQ29uc3VtZXIgdGhyZWFkIiwKICAgICAgICAgICAgIFsmXSAoKSB7
CiAgICAgICAgICAgICAgICAgZm9yICg7OykgewpAQCAtMTI0LDE0ICsxMjQsMTMgQEAgdm9pZCBy
dW5UZXN0KAogICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgY29uc3VtZXJUaHJlYWRzLmFwcGVuZCh0aHJlYWRJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIH0pKTsKICAgICB9CiAKICAgICBzbGVlcChkZWxheSk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBudW1Qcm9kdWNlcnM7IGktLTspIHsKLSAgICAgICAgUmVmUHRyPFRocmVhZD4g
dGhyZWFkSWRlbnRpZmllciA9IFRocmVhZDo6Y3JlYXRlKAorICAgICAgICBwcm9kdWNlclRocmVh
ZHMuYXBwZW5kKFRocmVhZDo6Y3JlYXRlKAogICAgICAgICAgICAgIlByb2R1Y2VyIFRocmVhZCIs
CiAgICAgICAgICAgICBbJl0gKCkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1NZXNzYWdlc1BlclByb2R1Y2VyOyArK2kpIHsKQEAgLTE1MSwxMiArMTUwLDEx
IEBAIHZvaWQgcnVuVGVzdCgKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBub3RpZnkobm90aWZ5U3R5bGUsIGVtcHR5Q29uZGl0aW9uLCBzaG91bGROb3RpZnkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICBwcm9kdWNlclRocmVh
ZHMuYXBwZW5kKHRocmVhZElkZW50aWZpZXIpOworICAgICAgICAgICAgfSkpOwogICAgIH0KIAot
ICAgIGZvciAoUmVmUHRyPFRocmVhZD4gdGhyZWFkSWRlbnRpZmllciA6IHByb2R1Y2VyVGhyZWFk
cykKLSAgICAgICAgdGhyZWFkSWRlbnRpZmllci0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBm
b3IgKGF1dG8mIHRocmVhZCA6IHByb2R1Y2VyVGhyZWFkcykKKyAgICAgICAgdGhyZWFkLT53YWl0
Rm9yQ29tcGxldGlvbigpOwogCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9ja2VyKGxvY2spOwpAQCAtMTY0LDggKzE2Miw4IEBAIHZvaWQgcnVuVGVzdCgKICAgICB9CiAg
ICAgZW1wdHlDb25kaXRpb24ubm90aWZ5QWxsKCk7CiAKLSAgICBmb3IgKFJlZlB0cjxUaHJlYWQ+
IHRocmVhZElkZW50aWZpZXIgOiBjb25zdW1lclRocmVhZHMpCi0gICAgICAgIHRocmVhZElkZW50
aWZpZXItPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiBjb25z
dW1lclRocmVhZHMpCisgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKIAogICAg
IEVYUEVDVF9FUShudW1Qcm9kdWNlcnMgKiBudW1NZXNzYWdlc1BlclByb2R1Y2VyLCByZWNlaXZl
ZC5zaXplKCkpOwogICAgIHN0ZDo6c29ydChyZWNlaXZlZC5iZWdpbigpLCByZWNlaXZlZC5lbmQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCmluZGV4
IGJhOGRkNTZhNWIzMGEyNGVmNWZkY2UzYmQzMDFkMDZmNTRhZDRlODguLmJhZTZjZTAxYjdlNTY5
NGE3MzE2YmQ5NTRmNzhiM2VkYTgyN2U1YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC0xMjgsOCArMTI4LDggQEAgc3RydWN0IFNpbmdsZUxh
dGNoVGVzdCB7CiAgICAgICAgICAgICAgICAgY29uZGl0aW9uLndhaXQobG9ja2VyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZvciAoUmVmUHRyPFRocmVhZD4gdGhyZWFkSWRlbnRpZmllciA6IHRo
cmVhZHMpCi0gICAgICAgICAgICB0aHJlYWRJZGVudGlmaWVyLT53YWl0Rm9yQ29tcGxldGlvbigp
OworICAgICAgICBmb3IgKGF1dG8mIHRocmVhZCA6IHRocmVhZHMpCisgICAgICAgICAgICB0aHJl
YWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgfQogCiAgICAgLy8gU2VtYXBob3JlIG9wZXJh
dGlvbnMuCkBAIC0xNzksNyArMTc5LDcgQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAg
c3RkOjptdXRleCBsb2NrOwogICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGNvbmRpdGlvbjsK
ICAgICBIYXNoU2V0PFJlZjxUaHJlYWQ+PiBhd2FrZTsKLSAgICBWZWN0b3I8UmVmUHRyPFRocmVh
ZD4+IHRocmVhZHM7CisgICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiB0aHJlYWRzOwogICAgIFJlZlB0
cjxUaHJlYWQ+IGxhc3RBd29rZW47CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TaWduYWxzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1NpZ25hbHMuY3BwCmluZGV4IDA3NzVhODJjYjJkOGU4ZjE0Y2ZmOTUzZGU0Y2U3MGRkMzAwMmEy
NzEuLjM3MzczNmVhYmNhZTIyM2ZkZTQ2OTMwN2ZhOGY3MzJhYTk2ZmI2YWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwCkBAIC00NywxOSArNDcsMTggQEAgVEVT
VChTaWduYWxzLCBTaWduYWxzV29ya09uRXhpdCkKICAgICB9KTsKIAogICAgIEF0b21pYzxib29s
PiByZWNlaXZlclNob3VsZEtlZXBSdW5uaW5nKHRydWUpOwotICAgIFJlZlB0cjxUaHJlYWQ+IHJl
Y2VpdmVyVGhyZWFkID0gKFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHJlY2VpdmVyIiwK
KyAgICBSZWY8VGhyZWFkPiByZWNlaXZlclRocmVhZCA9IChUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFk
TWVzc2FnZSByZWNlaXZlciIsCiAgICAgICAgIFsmcmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZ10g
KCkgewogICAgICAgICAgICAgd2hpbGUgKHJlY2VpdmVyU2hvdWxkS2VlcFJ1bm5pbmcubG9hZCgp
KSB7IH0KICAgICB9KSk7Ci0gICAgQVNTRVJUX1RSVUUocmVjZWl2ZXJUaHJlYWQpOwogCiAgICAg
Ym9vbCBzaWduYWxGaXJlZDsKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gbG9ja2VyKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFk
LmdldCgpKS0+bV9tdXRleCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
bG9ja2VyKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCY+KHJlY2VpdmVyVGhyZWFkLmdldCgp
KS5tX211dGV4KTsKICAgICAgICAgcmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZy5zdG9yZShmYWxz
ZSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihy
ZWNlaXZlclRocmVhZC5nZXQoKSktPmhhc0V4aXRlZCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCY+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS5oYXNF
eGl0ZWQoKSk7CiAgICAgICAgIHNsZWVwKDEpOwotICAgICAgICBzaWduYWxGaXJlZCA9ICFwdGhy
ZWFkX2tpbGwoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0
KCkpLT5tX2hhbmRsZSwgc3RkOjpnZXQ8MD4odG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3IpKSk7
CisgICAgICAgIHNpZ25hbEZpcmVkID0gIXB0aHJlYWRfa2lsbChzdGF0aWNfY2FzdDxSZWZsZWN0
ZWRUaHJlYWQmPihyZWNlaXZlclRocmVhZC5nZXQoKSkubV9oYW5kbGUsIHN0ZDo6Z2V0PDA+KHRv
U3lzdGVtU2lnbmFsKFNpZ25hbDo6VXNyKSkpOwogICAgIH0KIAogICAgIHJlY2VpdmVyVGhyZWFk
LT53YWl0Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VGhyZWFkR3JvdXAuY3BwCmluZGV4IGI3YTE4OGFmYzlhODliYTQ1MTliNzc2YmU4MDE2YTZlYWZi
Yjg3NGEuLjc1NTEwNzE2NTZlM2M1Yjk0Mjc3NzU2YzgxZmNlZjIxYjI5ZGZiZGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKQEAgLTQxLDEyICs0
MSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAoTW9kZSBtb2RlKQogICAgIExvY2sg
bG9jazsKICAgICBDb25kaXRpb24gY29uZGl0aW9uOwogICAgIENvbmRpdGlvbiByZXN0YXJ0Q29u
ZGl0aW9uOwotICAgIFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0b3I8
UmVmPFRocmVhZD4+IHRocmVhZHM7CiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlRo
cmVhZHM7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsKKyAgICAgICAgICAgIFJlZjxUaHJl
YWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKICAgICAgICAgICAg
ICAgICBpZiAobW9kZSA9PSBNb2RlOjpBZGRDdXJyZW50VGhyZWFkKQogICAgICAgICAgICAgICAg
ICAgICB0aHJlYWRHcm91cC0+YWRkQ3VycmVudFRocmVhZCgpOwpAQCAtNTcsOCArNTcsOCBAQCBz
dGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAoTW9kZSBtb2RlKQogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAobW9kZSA9PSBNb2RlOjpBZGQpCi0g
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUodGhyZWFkR3JvdXAtPmFkZCgqdGhyZWFkKSA9PSBU
aHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZCk7Ci0gICAgICAgICAgICB0aHJlYWRzLmFw
cGVuZCh0aHJlYWQpOworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5h
ZGQodGhyZWFkLmdldCgpKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZCk7Cisg
ICAgICAgICAgICB0aHJlYWRzLmFwcGVuZChXVEZNb3ZlKHRocmVhZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgY29uZGl0aW9uLndhaXQobG9jaywgWyZdIHsKQEAgLTEwMiw5ICsxMDIsOSBAQCBU
RVNUKFdURiwgVGhyZWFkR3JvdXBBZGRDdXJyZW50VGhyZWFkKQogVEVTVChXVEYsIFRocmVhZEdy
b3VwRG9Ob3RBZGREZWFkVGhyZWFkKQogewogICAgIHN0ZDo6c2hhcmVkX3B0cjxUaHJlYWRHcm91
cD4gdGhyZWFkR3JvdXAgPSBUaHJlYWRHcm91cDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFRocmVh
ZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsgfSk7
CisgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29y
a2VyIiwgWyZdIHsgfSk7CiAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwotICAgIEVY
UEVDVF9UUlVFKHRocmVhZEdyb3VwLT5hZGQoKnRocmVhZCkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1
bHQ6Ok5vdEFkZGVkKTsKKyAgICBFWFBFQ1RfVFJVRSh0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5n
ZXQoKSkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5vdEFkZGVkKTsKIAogICAgIGF1dG8gdGhy
ZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsKICAgICBF
WFBFQ1RfRVEodGhyZWFkR3JvdXAtPnRocmVhZHModGhyZWFkR3JvdXBMb2NrZXIpLnNpemUoKSwg
MHUpOwpAQCAtMTE2LDE0ICsxMTYsMTQgQEAgVEVTVChXVEYsIFRocmVhZEdyb3VwQWRkRHVwbGlj
YXRlVGhyZWFkcykKICAgICBMb2NrIGxvY2s7CiAgICAgQ29uZGl0aW9uIHJlc3RhcnRDb25kaXRp
b247CiAgICAgc3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPiB0aHJlYWRHcm91cCA9IFRocmVh
ZEdyb3VwOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiVGhyZWFkR3JvdXBXb3JrZXIiLCBbJl0geworICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSB7CiAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobG9jayk7CiAgICAgICAgIHJlc3RhcnRDb25kaXRpb24ud2FpdChs
b2NrLCBbJl0gewogICAgICAgICAgICAgcmV0dXJuIHJlc3RhcnRpbmc7CiAgICAgICAgIH0pOwog
ICAgIH0pOwotICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5hZGQoKnRocmVhZCkgPT0gVGhy
ZWFkR3JvdXBBZGRSZXN1bHQ6Ok5ld2x5QWRkZWQpOwotICAgIEVYUEVDVF9UUlVFKHRocmVhZEdy
b3VwLT5hZGQoKnRocmVhZCkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6OkFscmVhZHlBZGRlZCk7
CisgICAgRVhQRUNUX1RSVUUodGhyZWFkR3JvdXAtPmFkZCh0aHJlYWQuZ2V0KCkpID09IFRocmVh
ZEdyb3VwQWRkUmVzdWx0OjpOZXdseUFkZGVkKTsKKyAgICBFWFBFQ1RfVFJVRSh0aHJlYWRHcm91
cC0+YWRkKHRocmVhZC5nZXQoKSkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6OkFscmVhZHlBZGRl
ZCk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gdGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0
aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328449</attachid>
            <date>2017-12-05 07:36:57 -0800</date>
            <delta_ts>2017-12-05 07:49:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180333-20171206003656.patch</filename>
            <type>text/plain</type>
            <size>25976</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGQ5ZWZjOWJkMGQ2OTIyNWRlOGNjNDRmMWE2NWJiOTM5YjU2YjhjLi40NWQ1ODRiZmUwODI5YjFl
ZmIwOWVmNDY1NWI0MDJjMWNiNzFiNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMi0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQgaGF2ZSBUaHJlYWQ6
OnRyeUNyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAg
ICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25E
b2xsYXJBZ2VudFN0YXJ0KToKKwogMjAxNy0xMi0wNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWF0aDogZG9uJ3QgcmVkdW5kYW50bHkgY2hlY2sgZm9yIGV4
Y2VwdGlvbnMsIGp1c3QgcmVsZWFzZSBzY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjZWY3Y2UwZDdiNjUzMWNhNDFiNjBm
MmUzYWZhM2U2MTNhYTg5YTc5Li4yMDdiYzRhMGU3OTBkMDY3NDNiNGI5MDQ5ZTdmMWJjYTJkNGYw
MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3Vs
ZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYW55IGNhbGxlcnMgb2YgVGhyZWFkOjpjcmVhdGUgYXNzdW1lIHRo
YXQgaXQgcmV0dXJucyBub24tbnVsbHB0ciBUaHJlYWQuCisgICAgICAgIEJ1dCBpZiB0aGUgbnVt
YmVyIG9mIHRocmVhZHMgaGl0cyB0aGUgbGltaXQgaW4gdGhlIHN5c3RlbSwgY3JlYXRpbmcgVGhy
ZWFkCisgICAgICAgIHdvdWxkIGZhaWwuIEluIHRoYXQgY2FzZSwgaXQgaXMgcmVhbGx5IGRpZmZp
Y3VsdCB0byBrZWVwIFdlYktpdCB3b3JraW5nLgorCisgICAgICAgIFdlIGludHJvZHVjZSBUaHJl
YWQ6OnRyeUNyZWF0ZSwgYW5kIGNoYW5nZSB0aGUgcmV0dXJuZWQgdmFsdWUgZnJvbSBUaHJlYWQ6
OmNyZWF0ZQorICAgICAgICBmcm9tIFJlZlB0cjxUaHJlYWQ+IHRvIFJlZjxUaHJlYWQ+LiBJbiBU
aHJlYWQ6OmNyZWF0ZSwgd2UgZW5zdXJlIHRocmVhZCBjcmVhdGlvbgorICAgICAgICBzdWNjZWVk
cyBieSBSRUxFQVNFX0FTU0VSVC4gQW5kIHdlIHVzZSBUaHJlYWQ6OmNyZWF0ZSBpbnRlbnRpb25h
bGx5IGlmIHRoZQorICAgICAgICBjYWxsZXIgYXNzdW1lcyB0aGF0IHRocmVhZCBzaG91bGQgYmUg
Y3JlYXRlZC4KKworICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAo
V1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnRyeUNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKFdU
Rjo6V29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkpOgorCiAyMDE3LTEyLTA0ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIERpc3BsYXlSZWZy
ZXNoTW9uaXRvci1yZWxhdGVkIGNsZWFudXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDRkYTRkMjE2YzFkODM0
YjM1NWJjOWJjNjhkYTdjZTZiODAxY2FiLi5lZjU2NjE4ZDQ5YmI2NjVhN2QwMDQ3NGU4MDQzYzkx
YmFkNmZjNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTItMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFk
OjpjcmVhdGUgc2hvdWxkIGhhdmUgVGhyZWFkOjp0cnlDcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
Q0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzdGFydCk6CisK
IDIwMTctMTItMDUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAg
ICA8dmlkZW8+IGFuZCBzY2FsZSgpIHRyYW5zZm9ybXMgeWllbGQgc2hydW5rIHNtYWxsIG9yIGNs
aXBwZWQgY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNmYmNmNzk3NDI3YjE0YjgyYjQzZTRjZTk2OGRl
NTY5YThkMDhlNS4uZGIyZDFmOTEzZWExYzVlM2I5MjI0ZjZkYzQ0ODcwODllZmFmNzJkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQg
aGF2ZSBUaHJlYWQ6OnRyeUNyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVtb3J5
UHJlc3N1cmVNb25pdG9yOjpNZW1vcnlQcmVzc3VyZU1vbml0b3IpOgorCiAyMDE3LTEyLTA0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBjb250YWlu
ZXIuZ2V0UmVnaXN0cmF0aW9uKCkgLyBnZXRSZWdpc3RyYXRpb25zKCkgaW5zaWRlIHNlcnZpY2Ug
d29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiNWJiZDZiNGEzNGYwMjI5M2MyNGRkZmEy
ZjZlZDlmMTY2NjY1NWI4Li44ZTU5MzZiMzgwMjA5ZmE1YWRlYzQ3MDZmYTkzODYzOGM4NDIzMWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA1ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVh
ZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisKIDIwMTctMTEt
MjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01h
a2VdW1dpbl0gQ29uZGl0aW9uYWxseSBzZWxlY3QgRExMIENSVCBvciBzdGF0aWMgQ1JUCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmYzOWU1ODkxYzA1NTUzYmJmYzEyZGYyMWM3M2Yy
MjRhMmJmYzFjYS4uNmU3NDY3NjI2ZjAwYmQxNGYzYjE1ZjA0MTM3MWY0MTM0MGM3ZWQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA1ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRo
cmVhZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6
c3RhcnQpOgorCiAyMDE3LTExLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggZGljdGlvbmFyeSBsZWFrIGluIGxvb2t1cCwgY29udmVydCBGaW5kT3B0aW9u
cyB0byBPcHRpb25TZXQsIHR3ZWFrIGNvZGUgc3R5bGUgbmVhcmJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDA4NTRhY2I4YTMyMzA3MmE4NDNl
Nzc3OTg3MWEzN2JhZDBjMzlhMDAuLmVlYTc3NDE4ZmM2NmY0OTE0NDY0YmRkYjEyMDNmMzU3ZDNh
M2U2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAg
TG9jayBsb2NrOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOworICAgIFZl
Y3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaWx0ZXIg
PyAxIDogV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7IGktLTspIHsKICAgICAgICAgdGhy
ZWFkcy5hcHBlbmQoCiAgICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKQEAgLTgyOCw3ICs4Mjgs
NyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgfSkpOwog
ICAgIH0KIAotICAgIGZvciAoUmVmUHRyPFRocmVhZD4gdGhyZWFkIDogdGhyZWFkcykKKyAgICBm
b3IgKGF1dG8mIHRocmVhZCA6IHRocmVhZHMpCiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKICAgICBjcmFzaExvY2subG9jaygpOwogICAgIGRhdGFMb2coIkNvbXBsZXRlZCAi
LCBudW1iZXJPZlRlc3RzLCAiIHRlc3RzXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCmluZGV4IDI0YmRjMmM0NmI3MjE4NTIyN2FmMTE5NzE0NTMyY2MzMGVhYzk4
NGYuLjQ3N2U3MzdjMWE4MjIxNjRlNDA3OGI3ODhjY2FiMWI2Mjk5MzdlMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtMjAyNSw3ICsyMDI1LDcgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgTG9jayBsb2NrOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFk
czsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaWx0ZXIgPyAxIDogV1RGOjpudW1iZXJPZlByb2Nl
c3NvckNvcmVzKCk7IGktLTspIHsKICAgICAgICAgdGhyZWFkcy5hcHBlbmQoCiAgICAgICAgICAg
ICBUaHJlYWQ6OmNyZWF0ZSgKQEAgLTIwNDUsNyArMjA0NSw3IEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICB9KSk7CiAgICAgfQogCi0gICAgZm9yIChSZWZQ
dHI8VGhyZWFkPiB0aHJlYWQgOiB0aHJlYWRzKQorICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhy
ZWFkcykKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIGNyYXNoTG9j
ay5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGNhYjIzZjYy
NjM4YmMyZTkwOTY0YjA1ZWI0OWE1NjhiODJlNDQ2MzUuLjkwMGJkMzg3YTllNWZlNzJiYzhhNjUw
NDE3NTMwNGZmOTZjYTQ3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0x
Nzc5NCw3ICsxNzc5NCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogICAgIExv
Y2sgbG9jazsKIAotICAgIFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0
b3I8UmVmPFRocmVhZD4+IHRocmVhZHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlsdGVyID8g
MSA6IFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyBpLS07KSB7CiAgICAgICAgIHRocmVh
ZHMuYXBwZW5kKAogICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoCkBAIC0xNzgxNCw3ICsxNzgx
NCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICB9KSk7
CiAgICAgfQogCi0gICAgZm9yIChSZWZQdHI8VGhyZWFkPiB0aHJlYWQgOiB0aHJlYWRzKQorICAg
IGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogICAgIGNyYXNoTG9jay5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IGQxMTVlOTM3MDI1MzJjMWViZDg2NmQ5ZTQ0Y2QzNmIyODM0ZTc3ODMuLmY5N2M3Njg1MGU4
OGJiNTY4MWQ0MWZlYWM3MGQxNGI0NTQ3ZWJmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0x
NTYwLDcgKzE1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9s
bGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ29uZGl0aW9uIGRpZFN0YXJ0Q29u
ZGl0aW9uOwogICAgIGJvb2wgZGlkU3RhcnQgPSBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8VGhy
ZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgKKyAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBBZ2VudCIsCiAgICAgICAgIFtzb3VyY2VDb2Rl
LCAmZGlkU3RhcnRMb2NrLCAmZGlkU3RhcnRDb25kaXRpb24sICZkaWRTdGFydF0gKCkgewogICAg
ICAgICAgICAgQ29tbWFuZExpbmUgY29tbWFuZExpbmUoMCwgbnVsbHB0cik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvQXV0
b21hdGljVGhyZWFkLmNwcAppbmRleCA2OTBjODBmZTI2MzM1NjZlMzk1ZDA0NGJiMzY5M2RlNzU2
YTlmOTQzLi5hNWQ5ZmU3MWQ2NDljNDY0MjVkZjM4ZWUzNWFkOGFjMzU3NDlmMDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEF1dG9tYXRp
Y1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgIAogICAgIG1faGFzVW5k
ZXJseWluZ1RocmVhZCA9IHRydWU7CiAgICAgCi0gICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoCisgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
CiAgICAgICAgICJXVEY6OkF1dG9tYXRpY1RocmVhZCIsCiAgICAgICAgIFs9XSAoKSB7CiAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVs
Sm9ic0dlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAK
aW5kZXggYWFjYzdjY2MzNTU2NmZmNjlkM2EwYzIxYjZjNmEyOTQzNzU1YzM3Yi4uYWU2YzE3ZmQx
YzVhZWFkNzE0ZWNjYTM0MWRkZDk2NGI5OGVhMDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxK
b2JzR2VuZXJpYy5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBQYXJhbGxlbEVudmlyb25tZW50
OjpUaHJlYWRQcml2YXRlOjp0cnlMb2NrRm9yKFBhcmFsbGVsRW52aXJvbm1lbnQqIHBhcmVudCkK
ICAgICB9CiAKICAgICBpZiAoIW1fdGhyZWFkKSB7Ci0gICAgICAgIG1fdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIlBhcmFsbGVsIHdvcmtlciIsIFt0aGlzXSB7CisgICAgICAgIG1fdGhyZWFkID0g
VGhyZWFkOjp0cnlDcmVhdGUoIlBhcmFsbGVsIHdvcmtlciIsIFt0aGlzXSB7CiAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICAgICAgICAgIHdoaWxlIChtX3RocmVh
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3
NTZmNzNiMjlmZS4uNzkwYWRhOTk3NWJiZjNkNDMxMWEwNGEwNjYzOTE1MDkxMzk3Mjk2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9p
bnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICBmdW5jdGlvbigpOwog
fQogCi1SZWZQdHI8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5j
dGlvbjx2b2lkKCk+JiYgZW50cnlQb2ludCkKK1JlZlB0cjxUaHJlYWQ+IFRocmVhZDo6dHJ5Q3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50KQogewog
ICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9
IGFkb3B0UmVmKCpuZXcgVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBjNzQzOTRiNTIwMjBh
N2YwNWY2ZDcxNjEwODE4YzIwYTE5ZTJmZWRlLi5iNjJlMWUyM2Y0YjQ3ZWIxNjAyYWEwMzcxODll
YTNjM2IyNWU0NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtODgsNyArODgsMTMgQEAgY2xhc3MgVGhy
ZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgLy8gUmV0
dXJucyBudWxscHRyIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAgICAgLy8gVGhlIHRocmVh
ZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFz
c2VkIGluIHRvIHRoZSB0aHJlYWQuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8VGhyZWFkPiBjcmVhdGUoY29uc3QgY2hhciogdGhyZWFkTmFtZSwgRnVuY3Rpb248dm9pZCgp
PiYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IHRyeUNy
ZWF0ZShjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHN0
YXRpYyBpbmxpbmUgUmVmPFRocmVhZD4gY3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8gdGhyZWFkID0g
dHJ5Q3JlYXRlKHRocmVhZE5hbWUsIFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQodGhyZWFkKTsKKyAgICAgICAgcmV0dXJuICp0aHJlYWQ7CisgICAgfQogCiAgICAg
Ly8gUmV0dXJucyBUaHJlYWQgb2JqZWN0LgogICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrUXVldWUuY3BwCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggNWFl
MzJmMzkzZGVmNWY1YThiZjgzYzM1YjU5ZjlkMjkyYzY1MDg1Yi4uMTcwZDhiZTZiMTE1YjEwZDFm
MjhmNGY0ZTgxYmVjZDNiNzhhM2UwZgotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2
b2lkIFdvcmtRdWV1ZTo6Y29uY3VycmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKHNpemVfdCBpbgogICAgICAgICBDb25kaXRpb24gbV9jb25kaXRpb247CiAg
ICAgICAgIERlcXVlPGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoKT4qPiBtX3F1ZXVlOwogCi0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gbV93b3JrZXJzOworICAgICAgICBWZWN0b3I8
UmVmPFRocmVhZD4+IG1fd29ya2VyczsKICAgICB9OwogCiAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxUaHJlYWRQb29sPiB0aHJlYWRQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5jcHAKaW5kZXggMzdmZTMxYjM2MzFmMDMxYTM5ZDEyOTkzYzZjZWVm
YjUwMWY2OWVjNS4uMmEwODlhMTVhNzkyNWFjZGI0NWNkODIyNjMyNzc2N2NiMTdiZDlkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVj
ZW50bHkoKQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZEZvckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERvbmUpCiB7Ci0gICAgUmVmUHRyPFRocmVh
ZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IEdDQ29udHJvbGxlciIsICZjb2xs
ZWN0KTsKKyAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTog
R0NDb250cm9sbGVyIiwgJmNvbGxlY3QpOwogCiAgICAgaWYgKHdhaXRVbnRpbERvbmUpIHsKICAg
ICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMGU3NDY2MTg1ODhjZTg4
NDlhN2QzZGExYjFhMDBkMzQzYzUyMzc5Ny4uMTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNh
YmFmMzg1ZjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwCkBAIC02MSw5ICs2MSw2IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJi
Q29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xp
CiAgICAgLCBtX21pbkZGVFNpemUoTWluRkZUU2l6ZSkgLy8gRmlyc3Qgc3RhZ2Ugd2lsbCBoYXZl
IHRoaXMgc2l6ZSAtIHN1Y2Nlc3NpdmUgc3RhZ2VzIHdpbGwgZG91YmxlIGluIHNpemUgZWFjaCB0
aW1lCiAgICAgLCBtX21heEZGVFNpemUobWF4RkZUU2l6ZSkgLy8gdW50aWwgd2UgaGl0IG1fbWF4
RkZUU2l6ZQogICAgICwgbV91c2VCYWNrZ3JvdW5kVGhyZWFkcyh1c2VCYWNrZ3JvdW5kVGhyZWFk
cykKLSAgICAsIG1fYmFja2dyb3VuZFRocmVhZCgwKQotICAgICwgbV93YW50c1RvRXhpdChmYWxz
ZSkKLSAgICAsIG1fbW9yZUlucHV0QnVmZmVyZWQoZmFsc2UpCiB7CiAgICAgLy8gSWYgd2UgYXJl
IHVzaW5nIGJhY2tncm91bmQgdGhyZWFkcyB0aGVuIGRvbid0IGV4Y2VlZCB0aGlzIEZGVCBzaXpl
IGZvciB0aGUKICAgICAvLyBzdGFnZXMgd2hpY2ggcnVuIGluIHRoZSByZWFsLXRpbWUgdGhyZWFk
LiAgVGhpcyBhdm9pZHMgaGF2aW5nIG9ubHkgb25lIG9yIHR3bwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCA4YWM2ZWVjNWJhMjU2NzU3
NjAyZTVjYzVjYWMwM2Q4MjkwZjM5ZDJjLi5mYzU5ZDNhZmY0YzE4ZGMyNTExZTg1MjZjNWIxNTcz
YzI0NGVhMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXIuaApAQCAtODMsOSArODMsOSBAQCBjbGFzcyBSZXZlcmJDb252b2x2ZXIgewogCiAg
ICAgLy8gQmFja2dyb3VuZCB0aHJlYWQgYW5kIHN5bmNocm9uaXphdGlvbgogICAgIGJvb2wgbV91
c2VCYWNrZ3JvdW5kVGhyZWFkczsKLSAgICBSZWZQdHI8VGhyZWFkPiBtX2JhY2tncm91bmRUaHJl
YWQ7Ci0gICAgYm9vbCBtX3dhbnRzVG9FeGl0OwotICAgIGJvb2wgbV9tb3JlSW5wdXRCdWZmZXJl
ZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX2JhY2tncm91bmRUaHJlYWQgeyBudWxscHRyIH07Cisg
ICAgYm9vbCBtX3dhbnRzVG9FeGl0IHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9yZUlucHV0QnVm
ZmVyZWQgeyBmYWxzZSB9OwogICAgIG11dGFibGUgTG9jayBtX2JhY2tncm91bmRUaHJlYWRNdXRl
eDsKICAgICBtdXRhYmxlIENvbmRpdGlvbiBtX2JhY2tncm91bmRUaHJlYWRDb25kaXRpb25WYXJp
YWJsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZjQ1
NTU4ODQ5YWFmY2MyZjc2YTlhNDA1NGVhMDc2ZDI5OWNmZjRiMi4uMDVmZjkyNDNlYmQ5ZGE3NWMz
MTY4NjdkOGExM2RhYThlMTgxNzc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzdGFydChXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgZXZhbHVhdGVDYWxsYmFjaykKIAogICAg
IG1fZXZhbHVhdGVDYWxsYmFjayA9IFdURk1vdmUoZXZhbHVhdGVDYWxsYmFjayk7CiAKLSAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBXb3JrZXIiLCBbdGhpc10geworICAg
IG1fdGhyZWFkID0gVGhyZWFkOjp0cnlDcmVhdGUoIldlYkNvcmU6IFdvcmtlciIsIFt0aGlzXSB7
CiAgICAgICAgIHdvcmtlclRocmVhZCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAwN2VlZGNiNjNjNDhl
ZTZiY2IxNjZkOTJiYjhhNjdkYTE4NGIwYTNkLi43YzAxODYzOWEyNWUyYzRiYzFmZmMwZTI0N2Yz
MTYyODhlNWYyODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIEljb25EYXRhYmFzZTo6
b3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAg
ICAvLyBMb2NrIGhlcmUgYXMgd2VsbCBhcyBmaXJzdCB0aGluZyBpbiB0aGUgdGhyZWFkIHNvIHRo
ZSB0aHJlYWQgZG9lc24ndCBhY3R1YWxseSBjb21tZW5jZSB1bnRpbCB0aGUgY3JlYXRlVGhyZWFk
KCkgY2FsbAogICAgIC8vIGNvbXBsZXRlcyBhbmQgbV9zeW5jVGhyZWFkUnVubmluZyBpcyBwcm9w
ZXJseSBzZXQKICAgICBtX3N5bmNMb2NrLmxvY2soKTsKLSAgICBtX3N5bmNUaHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZSgiV2ViQ29yZTogSWNvbkRhdGFiYXNlIiwgW3RoaXNdIHsKKyAgICBtX3N5bmNU
aHJlYWQgPSBUaHJlYWQ6OnRyeUNyZWF0ZSgiV2ViQ29yZTogSWNvbkRhdGFiYXNlIiwgW3RoaXNd
IHsKICAgICAgICAgaWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOwogICAgIH0pOwogICAgIG1fc3lu
Y1RocmVhZFJ1bm5pbmcgPSBtX3N5bmNUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcAppbmRleCA0OGQxMDY5
Nzc2NWE5NWE4YjM1ODcyMzBlMTAyZDgwM2FkNThjMGFhLi44YTQ5NTM2MGJiNjc4NjEyMmE1MmMx
NjM3M2M2NDM4MzBhNDg4MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9s
aW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBN
ZW1vcnlQcmVzc3VyZU1vbml0b3I6Ok1lbW9yeVByZXNzdXJlTW9uaXRvcigpCiAgICAgaWYgKG1f
ZXZlbnRGRCA9PSAtMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFRocmVhZD4gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIk1lbW9yeVByZXNzdXJlTW9uaXRvciIsIFt0aGlzXSB7Cisg
ICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIk1lbW9yeVByZXNzdXJlTW9u
aXRvciIsIFt0aGlzXSB7CiAgICAgICAgIGRvdWJsZSBwb2xsSW50ZXJ2YWwgPSBzX21heFBvbGxp
bmdJbnRlcnZhbEluU2Vjb25kczsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAg
IHNsZWVwKHBvbGxJbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5jcHAKaW5kZXggYzc3MmZmOWUzZmRjMWY2MTQ2ZjU0YzkzZGFkZjg3OTAzYjBj
OGIxOC4uOTQ1MzZiYmFiZTBjODM2ZWFlMjEzMzE3YTY1ZGZmYWI2YzY0MjNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBib29sIFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmICghbV90aHJlYWQpIHsKLSAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiV2ViQ29yZTogTG9jYWxTdG9yYWdlIiwgW3RoaXNdIHsKKyAgICAgICAgbV90aHJl
YWQgPSBUaHJlYWQ6OnRyeUNyZWF0ZSgiV2ViQ29yZTogTG9jYWxTdG9yYWdlIiwgW3RoaXNdIHsK
ICAgICAgICAgICAgIHRocmVhZEVudHJ5UG9pbnQoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DVkRpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKaW5kZXggNTA2OGFmMWQxODdjNjlkODgw
YjVmZWYyZTAzM2M2MGFiZjI3NTkxZi4uYjE1NDgyNGNlNDQ4M2M3ZGQ5ZTYzMWJhZDFiMTM5ODQ1
N2Y0OWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCkBAIC02NCw3
ICs2NCw2IEBAIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQoKQogICAgIG1faW9UaHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiV0tRQ0E6IENWRGlzcGxheUxpbmsiLCBbdGhpc10gewogICAgICAgICBy
dW5JT1RocmVhZCgpOwogICAgIH0pOwotICAgIEFTU0VSVChtX2lvVGhyZWFkKTsKIH0KIAogdm9p
ZCBDVkRpc3BsYXlMaW5rOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAzYWMzZGU2YjUzNmU4ZWZhZDViNjNhYWU0M2M0ZDk4YzUyN2Q2
MDQyLi5iNjZmMDJkYmZhZjJjZDVlZmFiYzg1NzQwMjRiNGNiZTZiZTU2YTQ0IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW1dURl0gVGhyZWFkOjpjcmVhdGUgc2hvdWxkIGhhdmUgVGhyZWFkOjp0cnlDcmVhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TaWduYWxzLmNwcDoKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3RUaHJlYWRHcm91cCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0x
Mi0wNCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBT006IElt
cGxlbWVudCByZWxhdGlvbiB0eXBlIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db25kaXRpb24uY3BwCmluZGV4IDc3MjE2MzZiNzc4MDdmMTM5NTFlYTExMmZiZDQx
M2U4ZmFjNDYwYmMuLjBhMzI5YzI4M2Y3Mjg3MWYxOGRkZmNjYzc1YjNhNTRhNDRlZDIxYjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcApAQCAtODksMTQg
Kzg5LDE0IEBAIHZvaWQgcnVuVGVzdCgKICAgICBDb25kaXRpb24gZW1wdHlDb25kaXRpb247CiAg
ICAgQ29uZGl0aW9uIGZ1bGxDb25kaXRpb247CiAKLSAgICBWZWN0b3I8UmVmUHRyPFRocmVhZD4+
IGNvbnN1bWVyVGhyZWFkczsKLSAgICBWZWN0b3I8UmVmUHRyPFRocmVhZD4+IHByb2R1Y2VyVGhy
ZWFkczsKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IGNvbnN1bWVyVGhyZWFkczsKKyAgICBWZWN0
b3I8UmVmPFRocmVhZD4+IHByb2R1Y2VyVGhyZWFkczsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4g
cmVjZWl2ZWQ7CiAgICAgTG9jayByZWNlaXZlZExvY2s7CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtQ29uc3VtZXJzOyBpLS07KSB7Ci0gICAgICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVh
ZElkZW50aWZpZXIgPSBUaHJlYWQ6OmNyZWF0ZSgKKyAgICAgICAgY29uc3VtZXJUaHJlYWRzLmFw
cGVuZChUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgICAgICJDb25zdW1lciB0aHJlYWQiLAogICAg
ICAgICAgICAgWyZdICgpIHsKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CkBAIC0xMjQsMTQg
KzEyNCwxMyBAQCB2b2lkIHJ1blRlc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZl
ZC5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICBjb25zdW1lclRocmVhZHMuYXBwZW5kKHRocmVh
ZElkZW50aWZpZXIpOworICAgICAgICAgICAgfSkpOwogICAgIH0KIAogICAgIHNsZWVwKGRlbGF5
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IG51bVByb2R1Y2VyczsgaS0tOykgewotICAgICAg
ICBSZWZQdHI8VGhyZWFkPiB0aHJlYWRJZGVudGlmaWVyID0gVGhyZWFkOjpjcmVhdGUoCisgICAg
ICAgIHByb2R1Y2VyVGhyZWFkcy5hcHBlbmQoVGhyZWFkOjpjcmVhdGUoCiAgICAgICAgICAgICAi
UHJvZHVjZXIgVGhyZWFkIiwKICAgICAgICAgICAgIFsmXSAoKSB7CiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzUGVyUHJvZHVjZXI7ICsraSkgewpA
QCAtMTUxLDEyICsxNTAsMTEgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIG5vdGlmeShub3RpZnlTdHlsZSwgZW1wdHlDb25kaXRpb24s
IHNob3VsZE5vdGlmeSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIHByb2R1Y2VyVGhyZWFkcy5hcHBlbmQodGhyZWFkSWRlbnRpZmllcik7CisgICAgICAgICAg
ICB9KSk7CiAgICAgfQogCi0gICAgZm9yIChSZWZQdHI8VGhyZWFkPiB0aHJlYWRJZGVudGlmaWVy
IDogcHJvZHVjZXJUaHJlYWRzKQotICAgICAgICB0aHJlYWRJZGVudGlmaWVyLT53YWl0Rm9yQ29t
cGxldGlvbigpOworICAgIGZvciAoYXV0byYgdGhyZWFkIDogcHJvZHVjZXJUaHJlYWRzKQorICAg
ICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAKICAgICB7CiAgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrZXIobG9jayk7CkBAIC0xNjQsOCArMTYyLDggQEAgdm9pZCBy
dW5UZXN0KAogICAgIH0KICAgICBlbXB0eUNvbmRpdGlvbi5ub3RpZnlBbGwoKTsKIAotICAgIGZv
ciAoUmVmUHRyPFRocmVhZD4gdGhyZWFkSWRlbnRpZmllciA6IGNvbnN1bWVyVGhyZWFkcykKLSAg
ICAgICAgdGhyZWFkSWRlbnRpZmllci0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBmb3IgKGF1
dG8mIHRocmVhZCA6IGNvbnN1bWVyVGhyZWFkcykKKyAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogCiAgICAgRVhQRUNUX0VRKG51bVByb2R1Y2VycyAqIG51bU1lc3NhZ2VzUGVy
UHJvZHVjZXIsIHJlY2VpdmVkLnNpemUoKSk7CiAgICAgc3RkOjpzb3J0KHJlY2VpdmVkLmJlZ2lu
KCksIHJlY2VpdmVkLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAKaW5kZXggZjk0NDBkMDlmZTFlMTJhODA2NTQwYjQyZTIxMDljOTFhNGM3N2I2
Zi4uM2M0M2NkZWUxYTQ4ZTM5Mjc0MWM0N2M2ZTAxNjdkZjZhM2RkNDMwMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTEyNyw4ICsxMjcsOCBA
QCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKICAgICAgICAgICAgICAgICBjb25kaXRpb24ud2Fp
dChsb2NrZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChSZWZQdHI8VGhyZWFkPiB0aHJl
YWRJZGVudGlmaWVyIDogdGhyZWFkcykKLSAgICAgICAgICAgIHRocmVhZElkZW50aWZpZXItPndh
aXRGb3JDb21wbGV0aW9uKCk7CisgICAgICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykK
KyAgICAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKICAgICB9CiAKICAgICAv
LyBTZW1hcGhvcmUgb3BlcmF0aW9ucy4KQEAgLTE3OCw3ICsxNzgsNyBAQCBzdHJ1Y3QgU2luZ2xl
TGF0Y2hUZXN0IHsKICAgICBzdGQ6Om11dGV4IGxvY2s7CiAgICAgc3RkOjpjb25kaXRpb25fdmFy
aWFibGUgY29uZGl0aW9uOwogICAgIEhhc2hTZXQ8UmVmPFRocmVhZD4+IGF3YWtlOwotICAgIFZl
Y3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IHRo
cmVhZHM7CiAgICAgUmVmUHRyPFRocmVhZD4gbGFzdEF3b2tlbjsKIH07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKaW5kZXggMDc3NWE4MmNiMmQ4ZThmMTRjZmY5
NTNkZTRjZTcwZGQzMDAyYTI3MS4uMzczNzM2ZWFiY2FlMjIzZmRlNDY5MzA3ZmE4ZjczMmFhOTZm
YjZhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHAKQEAgLTQ3
LDE5ICs0NywxOCBAQCBURVNUKFNpZ25hbHMsIFNpZ25hbHNXb3JrT25FeGl0KQogICAgIH0pOwog
CiAgICAgQXRvbWljPGJvb2w+IHJlY2VpdmVyU2hvdWxkS2VlcFJ1bm5pbmcodHJ1ZSk7Ci0gICAg
UmVmUHRyPFRocmVhZD4gcmVjZWl2ZXJUaHJlYWQgPSAoVGhyZWFkOjpjcmVhdGUoIlRocmVhZE1l
c3NhZ2UgcmVjZWl2ZXIiLAorICAgIFJlZjxUaHJlYWQ+IHJlY2VpdmVyVGhyZWFkID0gKFRocmVh
ZDo6Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHJlY2VpdmVyIiwKICAgICAgICAgWyZyZWNlaXZlclNo
b3VsZEtlZXBSdW5uaW5nXSAoKSB7CiAgICAgICAgICAgICB3aGlsZSAocmVjZWl2ZXJTaG91bGRL
ZWVwUnVubmluZy5sb2FkKCkpIHsgfQogICAgIH0pKTsKLSAgICBBU1NFUlRfVFJVRShyZWNlaXZl
clRocmVhZCk7CiAKICAgICBib29sIHNpZ25hbEZpcmVkOwogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFk
Kj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkpLT5tX211dGV4KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBsb2NrZXIoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkJj4ocmVj
ZWl2ZXJUaHJlYWQuZ2V0KCkpLm1fbXV0ZXgpOwogICAgICAgICByZWNlaXZlclNob3VsZEtlZXBS
dW5uaW5nLnN0b3JlKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PFJl
ZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+aGFzRXhpdGVkKCkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8UmVmbGVjdGVkVGhyZWFkJj4ocmVjZWl2ZXJU
aHJlYWQuZ2V0KCkpLmhhc0V4aXRlZCgpKTsKICAgICAgICAgc2xlZXAoMSk7Ci0gICAgICAgIHNp
Z25hbEZpcmVkID0gIXB0aHJlYWRfa2lsbChzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihy
ZWNlaXZlclRocmVhZC5nZXQoKSktPm1faGFuZGxlLCBzdGQ6OmdldDwwPih0b1N5c3RlbVNpZ25h
bChTaWduYWw6OlVzcikpKTsKKyAgICAgICAgc2lnbmFsRmlyZWQgPSAhcHRocmVhZF9raWxsKHN0
YXRpY19jYXN0PFJlZmxlY3RlZFRocmVhZCY+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS5tX2hhbmRs
ZSwgc3RkOjpnZXQ8MD4odG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3IpKSk7CiAgICAgfQogCiAg
ICAgcmVjZWl2ZXJUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKaW5kZXggYjdhMTg4YWZjOWE4OWJhNDUx
OWI3NzZiZTgwMTZhNmVhZmJiODc0YS4uNzU1MTA3MTY1NmUzYzViOTQyNzc3NTZjODFmY2VmMjFi
MjlkZmJkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFk
R3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3Vw
LmNwcApAQCAtNDEsMTIgKzQxLDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RUaHJlYWRHcm91cChNb2Rl
IG1vZGUpCiAgICAgTG9jayBsb2NrOwogICAgIENvbmRpdGlvbiBjb25kaXRpb247CiAgICAgQ29u
ZGl0aW9uIHJlc3RhcnRDb25kaXRpb247Ci0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0aHJl
YWRzOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKIAogICAgIHsKICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mVGhyZWFkczsgKytpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8VGhyZWFk
PiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkR3JvdXBXb3JrZXIiLCBbJl0geworICAg
ICAgICAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3Vw
V29ya2VyIiwgWyZdIHsKICAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxv
Y2spOwogICAgICAgICAgICAgICAgIGlmIChtb2RlID09IE1vZGU6OkFkZEN1cnJlbnRUaHJlYWQp
CiAgICAgICAgICAgICAgICAgICAgIHRocmVhZEdyb3VwLT5hZGRDdXJyZW50VGhyZWFkKCk7CkBA
IC01Nyw4ICs1Nyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RUaHJlYWRHcm91cChNb2RlIG1vZGUpCiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGlmIChtb2Rl
ID09IE1vZGU6OkFkZCkKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRSh0aHJlYWRHcm91cC0+
YWRkKCp0aHJlYWQpID09IFRocmVhZEdyb3VwQWRkUmVzdWx0OjpOZXdseUFkZGVkKTsKLSAgICAg
ICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUodGhyZWFkR3JvdXAtPmFkZCh0aHJlYWQuZ2V0KCkpID09IFRocmVhZEdyb3VwQWRkUmVzdWx0
OjpOZXdseUFkZGVkKTsKKyAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKFdURk1vdmUodGhyZWFk
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25kaXRpb24ud2FpdChsb2NrLCBbJl0gewpAQCAt
MTAyLDkgKzEwMiw5IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cEFkZEN1cnJlbnRUaHJlYWQpCiBU
RVNUKFdURiwgVGhyZWFkR3JvdXBEb05vdEFkZERlYWRUaHJlYWQpCiB7CiAgICAgc3RkOjpzaGFy
ZWRfcHRyPFRocmVhZEdyb3VwPiB0aHJlYWRHcm91cCA9IFRocmVhZEdyb3VwOjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkR3JvdXBX
b3JrZXIiLCBbJl0geyB9KTsKKyAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiVGhyZWFkR3JvdXBXb3JrZXIiLCBbJl0geyB9KTsKICAgICB0aHJlYWQtPndhaXRGb3JDb21w
bGV0aW9uKCk7Ci0gICAgRVhQRUNUX1RSVUUodGhyZWFkR3JvdXAtPmFkZCgqdGhyZWFkKSA9PSBU
aHJlYWRHcm91cEFkZFJlc3VsdDo6Tm90QWRkZWQpOworICAgIEVYUEVDVF9UUlVFKHRocmVhZEdy
b3VwLT5hZGQodGhyZWFkLmdldCgpKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6Tm90QWRkZWQp
OwogCiAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVhZEdyb3VwLT5n
ZXRMb2NrKCkpOwogICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91
cExvY2tlcikuc2l6ZSgpLCAwdSk7CkBAIC0xMTYsMTQgKzExNiwxNCBAQCBURVNUKFdURiwgVGhy
ZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIExvY2sgbG9jazsKICAgICBDb25kaXRp
b24gcmVzdGFydENvbmRpdGlvbjsKICAgICBzdGQ6OnNoYXJlZF9wdHI8VGhyZWFkR3JvdXA+IHRo
cmVhZEdyb3VwID0gVGhyZWFkR3JvdXA6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUaHJlYWQ+IHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSB7CisgICAgUmVm
PFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZd
IHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKICAgICAgICAgcmVzdGFy
dENvbmRpdGlvbi53YWl0KGxvY2ssIFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdGFydGlu
ZzsKICAgICAgICAgfSk7CiAgICAgfSk7Ci0gICAgRVhQRUNUX1RSVUUodGhyZWFkR3JvdXAtPmFk
ZCgqdGhyZWFkKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZCk7Ci0gICAgRVhQ
RUNUX1RSVUUodGhyZWFkR3JvdXAtPmFkZCgqdGhyZWFkKSA9PSBUaHJlYWRHcm91cEFkZFJlc3Vs
dDo6QWxyZWFkeUFkZGVkKTsKKyAgICBFWFBFQ1RfVFJVRSh0aHJlYWRHcm91cC0+YWRkKHRocmVh
ZC5nZXQoKSkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5ld2x5QWRkZWQpOworICAgIEVYUEVD
VF9UUlVFKHRocmVhZEdyb3VwLT5hZGQodGhyZWFkLmdldCgpKSA9PSBUaHJlYWRHcm91cEFkZFJl
c3VsdDo6QWxyZWFkeUFkZGVkKTsKIAogICAgIHsKICAgICAgICAgYXV0byB0aHJlYWRHcm91cExv
Y2tlciA9IGhvbGRMb2NrKHRocmVhZEdyb3VwLT5nZXRMb2NrKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328451</attachid>
            <date>2017-12-05 07:49:56 -0800</date>
            <delta_ts>2017-12-11 21:51:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180333-20171206004955.patch</filename>
            <type>text/plain</type>
            <size>26733</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGQ5ZWZjOWJkMGQ2OTIyNWRlOGNjNDRmMWE2NWJiOTM5YjU2YjhjLi40NWQ1ODRiZmUwODI5YjFl
ZmIwOWVmNDY1NWI0MDJjMWNiNzFiNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMi0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQgaGF2ZSBUaHJlYWQ6
OnRyeUNyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAg
ICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25E
b2xsYXJBZ2VudFN0YXJ0KToKKwogMjAxNy0xMi0wNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWF0aDogZG9uJ3QgcmVkdW5kYW50bHkgY2hlY2sgZm9yIGV4
Y2VwdGlvbnMsIGp1c3QgcmVsZWFzZSBzY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjZWY3Y2UwZDdiNjUzMWNhNDFiNjBm
MmUzYWZhM2U2MTNhYTg5YTc5Li4yMDdiYzRhMGU3OTBkMDY3NDNiNGI5MDQ5ZTdmMWJjYTJkNGYw
MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3Vs
ZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYW55IGNhbGxlcnMgb2YgVGhyZWFkOjpjcmVhdGUgYXNzdW1lIHRo
YXQgaXQgcmV0dXJucyBub24tbnVsbHB0ciBUaHJlYWQuCisgICAgICAgIEJ1dCBpZiB0aGUgbnVt
YmVyIG9mIHRocmVhZHMgaGl0cyB0aGUgbGltaXQgaW4gdGhlIHN5c3RlbSwgY3JlYXRpbmcgVGhy
ZWFkCisgICAgICAgIHdvdWxkIGZhaWwuIEluIHRoYXQgY2FzZSwgaXQgaXMgcmVhbGx5IGRpZmZp
Y3VsdCB0byBrZWVwIFdlYktpdCB3b3JraW5nLgorCisgICAgICAgIFdlIGludHJvZHVjZSBUaHJl
YWQ6OnRyeUNyZWF0ZSwgYW5kIGNoYW5nZSB0aGUgcmV0dXJuZWQgdmFsdWUgZnJvbSBUaHJlYWQ6
OmNyZWF0ZQorICAgICAgICBmcm9tIFJlZlB0cjxUaHJlYWQ+IHRvIFJlZjxUaHJlYWQ+LiBJbiBU
aHJlYWQ6OmNyZWF0ZSwgd2UgZW5zdXJlIHRocmVhZCBjcmVhdGlvbgorICAgICAgICBzdWNjZWVk
cyBieSBSRUxFQVNFX0FTU0VSVC4gQW5kIHdlIHVzZSBUaHJlYWQ6OmNyZWF0ZSBpbnRlbnRpb25h
bGx5IGlmIHRoZQorICAgICAgICBjYWxsZXIgYXNzdW1lcyB0aGF0IHRocmVhZCBzaG91bGQgYmUg
Y3JlYXRlZC4KKworICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAo
V1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnRyeUNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKFdU
Rjo6V29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkpOgorCiAyMDE3LTEyLTA0ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIERpc3BsYXlSZWZy
ZXNoTW9uaXRvci1yZWxhdGVkIGNsZWFudXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDRkYTRkMjE2YzFkODM0
YjM1NWJjOWJjNjhkYTdjZTZiODAxY2FiLi5lZjU2NjE4ZDQ5YmI2NjVhN2QwMDQ3NGU4MDQzYzkx
YmFkNmZjNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTItMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gVGhyZWFk
OjpjcmVhdGUgc2hvdWxkIGhhdmUgVGhyZWFkOjp0cnlDcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
Q0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzdGFydCk6CisK
IDIwMTctMTItMDUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAg
ICA8dmlkZW8+IGFuZCBzY2FsZSgpIHRyYW5zZm9ybXMgeWllbGQgc2hydW5rIHNtYWxsIG9yIGNs
aXBwZWQgY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNmYmNmNzk3NDI3YjE0YjgyYjQzZTRjZTk2OGRl
NTY5YThkMDhlNS4uZGIyZDFmOTEzZWExYzVlM2I5MjI0ZjZkYzQ0ODcwODllZmFmNzJkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBUaHJlYWQ6OmNyZWF0ZSBzaG91bGQg
aGF2ZSBUaHJlYWQ6OnRyeUNyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVtb3J5
UHJlc3N1cmVNb25pdG9yOjpNZW1vcnlQcmVzc3VyZU1vbml0b3IpOgorCiAyMDE3LTEyLTA0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBjb250YWlu
ZXIuZ2V0UmVnaXN0cmF0aW9uKCkgLyBnZXRSZWdpc3RyYXRpb25zKCkgaW5zaWRlIHNlcnZpY2Ug
d29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiNWJiZDZiNGEzNGYwMjI5M2MyNGRkZmEy
ZjZlZDlmMTY2NjY1NWI4Li44ZTU5MzZiMzgwMjA5ZmE1YWRlYzQ3MDZmYTkzODYzOGM4NDIzMWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA1ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVh
ZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisKIDIwMTctMTEt
MjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01h
a2VdW1dpbl0gQ29uZGl0aW9uYWxseSBzZWxlY3QgRExMIENSVCBvciBzdGF0aWMgQ1JUCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmYzOWU1ODkxYzA1NTUzYmJmYzEyZGYyMWM3M2Yy
MjRhMmJmYzFjYS4uNmU3NDY3NjI2ZjAwYmQxNGYzYjE1ZjA0MTM3MWY0MTM0MGM3ZWQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA1ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRo
cmVhZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRocmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6
c3RhcnQpOgorCiAyMDE3LTExLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggZGljdGlvbmFyeSBsZWFrIGluIGxvb2t1cCwgY29udmVydCBGaW5kT3B0aW9u
cyB0byBPcHRpb25TZXQsIHR3ZWFrIGNvZGUgc3R5bGUgbmVhcmJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDA4NTRhY2I4YTMyMzA3MmE4NDNl
Nzc3OTg3MWEzN2JhZDBjMzlhMDAuLmVlYTc3NDE4ZmM2NmY0OTE0NDY0YmRkYjEyMDNmMzU3ZDNh
M2U2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAg
TG9jayBsb2NrOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOworICAgIFZl
Y3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaWx0ZXIg
PyAxIDogV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7IGktLTspIHsKICAgICAgICAgdGhy
ZWFkcy5hcHBlbmQoCiAgICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKQEAgLTgyOCw3ICs4Mjgs
NyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgfSkpOwog
ICAgIH0KIAotICAgIGZvciAoUmVmUHRyPFRocmVhZD4gdGhyZWFkIDogdGhyZWFkcykKKyAgICBm
b3IgKGF1dG8mIHRocmVhZCA6IHRocmVhZHMpCiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKICAgICBjcmFzaExvY2subG9jaygpOwogICAgIGRhdGFMb2coIkNvbXBsZXRlZCAi
LCBudW1iZXJPZlRlc3RzLCAiIHRlc3RzXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCmluZGV4IDI0YmRjMmM0NmI3MjE4NTIyN2FmMTE5NzE0NTMyY2MzMGVhYzk4
NGYuLjQ3N2U3MzdjMWE4MjIxNjRlNDA3OGI3ODhjY2FiMWI2Mjk5MzdlMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtMjAyNSw3ICsyMDI1LDcgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgTG9jayBsb2NrOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFk
czsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaWx0ZXIgPyAxIDogV1RGOjpudW1iZXJPZlByb2Nl
c3NvckNvcmVzKCk7IGktLTspIHsKICAgICAgICAgdGhyZWFkcy5hcHBlbmQoCiAgICAgICAgICAg
ICBUaHJlYWQ6OmNyZWF0ZSgKQEAgLTIwNDUsNyArMjA0NSw3IEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICB9KSk7CiAgICAgfQogCi0gICAgZm9yIChSZWZQ
dHI8VGhyZWFkPiB0aHJlYWQgOiB0aHJlYWRzKQorICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhy
ZWFkcykKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIGNyYXNoTG9j
ay5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGNhYjIzZjYy
NjM4YmMyZTkwOTY0YjA1ZWI0OWE1NjhiODJlNDQ2MzUuLjkwMGJkMzg3YTllNWZlNzJiYzhhNjUw
NDE3NTMwNGZmOTZjYTQ3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0x
Nzc5NCw3ICsxNzc5NCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogICAgIExv
Y2sgbG9jazsKIAotICAgIFZlY3RvcjxSZWZQdHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0
b3I8UmVmPFRocmVhZD4+IHRocmVhZHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlsdGVyID8g
MSA6IFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpOyBpLS07KSB7CiAgICAgICAgIHRocmVh
ZHMuYXBwZW5kKAogICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoCkBAIC0xNzgxNCw3ICsxNzgx
NCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICB9KSk7
CiAgICAgfQogCi0gICAgZm9yIChSZWZQdHI8VGhyZWFkPiB0aHJlYWQgOiB0aHJlYWRzKQorICAg
IGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogICAgIGNyYXNoTG9jay5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IGQxMTVlOTM3MDI1MzJjMWViZDg2NmQ5ZTQ0Y2QzNmIyODM0ZTc3ODMuLmM2ZGUwN2Y0NWUw
YzZhZjU1NjRhZTAyMWNjYzI0MWMwOWJmMjBjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0x
NTYwLDcgKzE1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9s
bGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQ29uZGl0aW9uIGRpZFN0YXJ0Q29u
ZGl0aW9uOwogICAgIGJvb2wgZGlkU3RhcnQgPSBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8VGhy
ZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgKKyAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAg
ICAgIkpTQyBBZ2VudCIsCiAgICAgICAgIFtzb3VyY2VDb2RlLCAmZGlkU3RhcnRMb2NrLCAmZGlk
U3RhcnRDb25kaXRpb24sICZkaWRTdGFydF0gKCkgewogICAgICAgICAgICAgQ29tbWFuZExpbmUg
Y29tbWFuZExpbmUoMCwgbnVsbHB0cik7CkBAIC0xNTg2LDggKzE1ODYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc3VjY2VzczsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
dGhyZWFkLT5kZXRhY2goKTsKKyAgICAgICAgfSktPmRldGFjaCgpOwogICAgIAogICAgIHsKICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkaWRTdGFydExvY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5jcHAKaW5kZXggNjkwYzgwZmUyNjMzNTY2ZTM5NWQwNDRiYjM2OTNkZTc1NmE5
Zjk0My4uMmM0ODZjNDgwOGFhZTMyODU4ZGQyYjIyNjQ0ODQ3MjZhYTlhOTliOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBBdXRvbWF0aWNU
aHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2VyJikKICAgICAKICAgICBtX2hhc1VuZGVy
bHlpbmdUaHJlYWQgPSB0cnVlOwogICAgIAotICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKAorICAgIFRocmVhZDo6Y3JlYXRlKAogICAgICAgICAiV1RGOjpBdXRvbWF0
aWNUaHJlYWQiLAogICAgICAgICBbPV0gKCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCkBA
IC0yMjYsOCArMjI2LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3Ry
YWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0ID09IFdvcmtSZXN1bHQ6OkNvbnRpbnVlKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0gICAgdGhyZWFkLT5kZXRhY2goKTsKKyAgICAgICAgfSktPmRldGFjaCgpOwog
fQogCiB2b2lkIEF1dG9tYXRpY1RocmVhZDo6dGhyZWFkRGlkU3RhcnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Q
YXJhbGxlbEpvYnNHZW5lcmljLmNwcAppbmRleCBhYWNjN2NjYzM1NTY2ZmY2OWQzYTBjMjFiNmM2
YTI5NDM3NTVjMzdiLi5hZTZjMTdmZDFjNWFlYWQ3MTRlY2NhMzQxZGRkOTY0Yjk4ZWEwN2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcApAQCAtOTQsNyArOTQsNyBAQCBi
b29sIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OnRyeUxvY2tGb3IoUGFyYWxs
ZWxFbnZpcm9ubWVudCogcGFyZW50KQogICAgIH0KIAogICAgIGlmICghbV90aHJlYWQpIHsKLSAg
ICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUGFyYWxsZWwgd29ya2VyIiwgW3RoaXNd
IHsKKyAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OnRyeUNyZWF0ZSgiUGFyYWxsZWwgd29ya2Vy
IiwgW3RoaXNdIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAogICAg
ICAgICAgICAgd2hpbGUgKG1fdGhyZWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBjNTZmMTU2
ZGQ5Y2JlYzQ5OTk2OTdjNmQ1NDllODc1NmY3M2IyOWZlLi43OTBhZGE5OTc1YmJmM2Q0MzExYTA0
YTA2NjM5MTUwOTEzOTcyOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250
ZXh0KQogICAgIGZ1bmN0aW9uKCk7CiB9CiAKLVJlZlB0cjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRl
KGNvbnN0IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50KQorUmVmUHRy
PFRocmVhZD4gVGhyZWFkOjp0cnlDcmVhdGUoY29uc3QgY2hhciogbmFtZSwgRnVuY3Rpb248dm9p
ZCgpPiYmIGVudHJ5UG9pbnQpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAg
ICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCmluZGV4IGM3NDM5NGI1MjAyMGE3ZjA1ZjZkNzE2MTA4MThjMjBhMTllMmZlZGUuLmI2MmUx
ZTIzZjRiNDdlYjE2MDJhYTAzNzE4OWVhM2MzYjI1ZTQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC04
OCw3ICs4OCwxMyBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
VGhyZWFkPiB7CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgdGhyZWFkIGNyZWF0aW9uIGZh
aWxlZC4KICAgICAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24g
c29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4KLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0ZShjb25zdCBjaGFyKiB0aHJl
YWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPFRocmVhZD4gdHJ5Q3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1bmN0
aW9uPHZvaWQoKT4mJik7CisgICAgc3RhdGljIGlubGluZSBSZWY8VGhyZWFkPiBjcmVhdGUoY29u
c3QgY2hhciogdGhyZWFkTmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQorICAgIHsK
KyAgICAgICAgYXV0byB0aHJlYWQgPSB0cnlDcmVhdGUodGhyZWFkTmFtZSwgV1RGTW92ZShmdW5j
dGlvbikpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aHJlYWQpOworICAgICAgICByZXR1cm4g
KnRocmVhZDsKKyAgICB9CiAKICAgICAvLyBSZXR1cm5zIFRocmVhZCBvYmplY3QuCiAgICAgc3Rh
dGljIFRocmVhZCYgY3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKb2xkIG1vZGUgMTAwNzU1Cm5l
dyBtb2RlIDEwMDY0NAppbmRleCA1YWUzMmYzOTNkZWY1ZjVhOGJmODNjMzViNTlmOWQyOTJjNjUw
ODViLi4xNzBkOGJlNmIxMTViMTBkMWYyOGY0ZjRlODFiZWNkM2I3OGEzZTBmCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNw
cApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV29ya1F1ZXVlOjpjb25jdXJyZW50QXBwbHkoc2l6
ZV90IGl0ZXJhdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoc2l6ZV90IGluCiAgICAgICAgIENv
bmRpdGlvbiBtX2NvbmRpdGlvbjsKICAgICAgICAgRGVxdWU8Y29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPio+IG1fcXVldWU7CiAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiBtX3dv
cmtlcnM7CisgICAgICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gbV93b3JrZXJzOwogICAgIH07CiAK
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFBvb2w+IHRocmVhZFBvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCAzN2ZlMzFi
MzYzMWYwMzFhMzlkMTI5OTNjNmNlZWZiNTAxZjY5ZWM1Li4wNjUyNjdiMzQwM2QyZTZiOTQ4YWVi
MzQ0MDU1YzVlZGUwYmJjMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFn
ZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNlbnRseSgpCiAKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJi
YWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9u
ZSkKIHsKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29y
ZTogR0NDb250cm9sbGVyIiwgJmNvbGxlY3QpOworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoIldlYkNvcmU6IEdDQ29udHJvbGxlciIsICZjb2xsZWN0KTsKIAogICAgIGlmICh3YWl0
VW50aWxEb25lKSB7CiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4
IDBlNzQ2NjE4NTg4Y2U4ODQ5YTdkM2RhMWIxYTAwZDM0M2M1MjM3OTcuLjE0NWRmODFlMmE2YmEy
YzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtNjEsOSArNjEsNiBAQCBSZXZlcmJD
b252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwg
c2l6ZV90IHJlbmRlclNsaQogICAgICwgbV9taW5GRlRTaXplKE1pbkZGVFNpemUpIC8vIEZpcnN0
IHN0YWdlIHdpbGwgaGF2ZSB0aGlzIHNpemUgLSBzdWNjZXNzaXZlIHN0YWdlcyB3aWxsIGRvdWJs
ZSBpbiBzaXplIGVhY2ggdGltZQogICAgICwgbV9tYXhGRlRTaXplKG1heEZGVFNpemUpIC8vIHVu
dGlsIHdlIGhpdCBtX21heEZGVFNpemUKICAgICAsIG1fdXNlQmFja2dyb3VuZFRocmVhZHModXNl
QmFja2dyb3VuZFRocmVhZHMpCi0gICAgLCBtX2JhY2tncm91bmRUaHJlYWQoMCkKLSAgICAsIG1f
d2FudHNUb0V4aXQoZmFsc2UpCi0gICAgLCBtX21vcmVJbnB1dEJ1ZmZlcmVkKGZhbHNlKQogewog
ICAgIC8vIElmIHdlIGFyZSB1c2luZyBiYWNrZ3JvdW5kIHRocmVhZHMgdGhlbiBkb24ndCBleGNl
ZWQgdGhpcyBGRlQgc2l6ZSBmb3IgdGhlCiAgICAgLy8gc3RhZ2VzIHdoaWNoIHJ1biBpbiB0aGUg
cmVhbC10aW1lIHRocmVhZC4gIFRoaXMgYXZvaWRzIGhhdmluZyBvbmx5IG9uZSBvciB0d28KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXgg
OGFjNmVlYzViYTI1Njc1NzYwMmU1Y2M1Y2FjMDNkODI5MGYzOWQyYy4uZDQxZjNjOTM2YjU0OGRl
N2I2NDMyMjg3NWEzMTRmYjhkMTA4OTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgUmV2ZXJi
Q29udm9sdmVyIHsKICAgICAvLyBCYWNrZ3JvdW5kIHRocmVhZCBhbmQgc3luY2hyb25pemF0aW9u
CiAgICAgYm9vbCBtX3VzZUJhY2tncm91bmRUaHJlYWRzOwogICAgIFJlZlB0cjxUaHJlYWQ+IG1f
YmFja2dyb3VuZFRocmVhZDsKLSAgICBib29sIG1fd2FudHNUb0V4aXQ7Ci0gICAgYm9vbCBtX21v
cmVJbnB1dEJ1ZmZlcmVkOworICAgIGJvb2wgbV93YW50c1RvRXhpdCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX21vcmVJbnB1dEJ1ZmZlcmVkIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIExvY2sgbV9i
YWNrZ3JvdW5kVGhyZWFkTXV0ZXg7CiAgICAgbXV0YWJsZSBDb25kaXRpb24gbV9iYWNrZ3JvdW5k
VGhyZWFkQ29uZGl0aW9uVmFyaWFibGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGY0NTU1ODg0OWFhZmNjMmY3NmE5YTQwNTRlYTA3NmQyOTljZmY0YjIu
LjA1ZmY5MjQzZWJkOWRhNzVjMzE2ODY3ZDhhMTNkYWE4ZTE4MTc3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFdvcmtl
clRocmVhZDo6c3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1
YXRlQ2FsbGJhY2spCiAKICAgICBtX2V2YWx1YXRlQ2FsbGJhY2sgPSBXVEZNb3ZlKGV2YWx1YXRl
Q2FsbGJhY2spOwogCi0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogV29y
a2VyIiwgW3RoaXNdIHsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6dHJ5Q3JlYXRlKCJXZWJDb3Jl
OiBXb3JrZXIiLCBbdGhpc10gewogICAgICAgICB3b3JrZXJUaHJlYWQoKTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggMDdlZWRjYjYzYzQ4ZWU2YmNiMTY2ZDkyYmI4YTY3ZGExODRiMGEzZC4uN2MwMTg2Mzlh
MjVlMmM0YmMxZmZjMGUyNDdmMzE2Mjg4ZTVmMjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAg
Ym9vbCBJY29uRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUpCiAgICAgLy8gTG9jayBoZXJlIGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcg
aW4gdGhlIHRocmVhZCBzbyB0aGUgdGhyZWFkIGRvZXNuJ3QgYWN0dWFsbHkgY29tbWVuY2UgdW50
aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwKICAgICAvLyBjb21wbGV0ZXMgYW5kIG1fc3luY1Ro
cmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CiAgICAgbV9zeW5jTG9jay5sb2NrKCk7Ci0gICAg
bV9zeW5jVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IEljb25EYXRhYmFzZSIsIFt0
aGlzXSB7CisgICAgbV9zeW5jVGhyZWFkID0gVGhyZWFkOjp0cnlDcmVhdGUoIldlYkNvcmU6IElj
b25EYXRhYmFzZSIsIFt0aGlzXSB7CiAgICAgICAgIGljb25EYXRhYmFzZVN5bmNUaHJlYWQoKTsK
ICAgICB9KTsKICAgICBtX3N5bmNUaHJlYWRSdW5uaW5nID0gbV9zeW5jVGhyZWFkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRv
ci5jcHAKaW5kZXggNDhkMTA2OTc3NjVhOTVhOGIzNTg3MjMwZTEwMmQ4MDNhZDU4YzBhYS4uYTZi
YWJhNDdlZTViNDk1MjViYjIyNDY4MWZkNGY3OTAzYzg0NGIzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCkBA
IC0yNDgsNyArMjQ4LDcgQEAgTWVtb3J5UHJlc3N1cmVNb25pdG9yOjpNZW1vcnlQcmVzc3VyZU1v
bml0b3IoKQogICAgIGlmIChtX2V2ZW50RkQgPT0gLTEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJNZW1vcnlQcmVzc3VyZU1v
bml0b3IiLCBbdGhpc10geworICAgIFRocmVhZDo6Y3JlYXRlKCJNZW1vcnlQcmVzc3VyZU1vbml0
b3IiLCBbdGhpc10gewogICAgICAgICBkb3VibGUgcG9sbEludGVydmFsID0gc19tYXhQb2xsaW5n
SW50ZXJ2YWxJblNlY29uZHM7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBz
bGVlcChwb2xsSW50ZXJ2YWwpOwpAQCAtMjcwLDggKzI3MCw3IEBAIE1lbW9yeVByZXNzdXJlTW9u
aXRvcjo6TWVtb3J5UHJlc3N1cmVNb25pdG9yKCkKICAgICAgICAgICAgIHBvbGxJbnRlcnZhbCA9
IHBvbGxJbnRlcnZhbEZvclVzZWRNZW1vcnlQZXJjZW50YWdlKHVzZWRQZXJjZW50YWdlKTsKICAg
ICAgICAgfQogICAgICAgICBjbG9zZShtX2V2ZW50RkQpOwotICAgIH0pOwotICAgIHRocmVhZC0+
ZGV0YWNoKCk7CisgICAgfSktPmRldGFjaCgpOwogfQogCiBJUEM6OkF0dGFjaG1lbnQgTWVtb3J5
UHJlc3N1cmVNb25pdG9yOjpjcmVhdGVIYW5kbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IGM3NzJmZjllM2ZkYzFmNjE0NmY1
NGM5M2RhZGY4NzkwM2IwYzhiMTguLjk0NTM2YmJhYmUwYzgzNmVhZTIxMzMxN2E2NWRmZmFiNmM2
NDIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBTdG9yYWdlVGhyZWFkOjpzdGFydCgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fdGhyZWFkKSB7Ci0gICAgICAgIG1f
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IExvY2FsU3RvcmFnZSIsIFt0aGlzXSB7
CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjp0cnlDcmVhdGUoIldlYkNvcmU6IExvY2FsU3Rv
cmFnZSIsIFt0aGlzXSB7CiAgICAgICAgICAgICB0aHJlYWRFbnRyeVBvaW50KCk7CiAgICAgICAg
IH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IDUw
NjhhZjFkMTg3YzY5ZDg4MGI1ZmVmMmUwMzNjNjBhYmYyNzU5MWYuLmIxNTQ4MjRjZTQ0ODNjN2Rk
OWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmNwcApAQCAtNjQsNyArNjQsNiBAQCB2b2lkIENWRGlzcGxheUxpbms6OnN0YXJ0KCkKICAg
ICBtX2lvVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldLUUNBOiBDVkRpc3BsYXlMaW5rIiwgW3Ro
aXNdIHsKICAgICAgICAgcnVuSU9UaHJlYWQoKTsKICAgICB9KTsKLSAgICBBU1NFUlQobV9pb1Ro
cmVhZCk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RvcCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2FjM2RlNmI1MzZlOGVmYWQ1YjYz
YWFlNDNjNGQ5OGM1MjdkNjA0Mi4uYjY2ZjAyZGJmYWYyY2Q1ZWZhYmM4NTc0MDI0YjRjYmU2YmU1
NmE0NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE3LTEyLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXVEZdIFRocmVhZDo6Y3JlYXRlIHNob3VsZCBoYXZlIFRo
cmVhZDo6dHJ5Q3JlYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODAzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU2lnbmFscy5jcHA6CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0VGhyZWFkR3JvdXApOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTctMTItMDQgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogQU9NOiBJbXBsZW1lbnQgcmVsYXRpb24gdHlwZSBwcm9wZXJ0aWVzCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAppbmRleCA3NzIxNjM2Yjc3ODA3
ZjEzOTUxZWExMTJmYmQ0MTNlOGZhYzQ2MGJjLi4wYTMyOWMyODNmNzI4NzFmMThkZGZjY2M3NWIz
YTU0YTQ0ZWQyMWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
b25kaXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlv
bi5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCB2b2lkIHJ1blRlc3QoCiAgICAgQ29uZGl0aW9uIGVt
cHR5Q29uZGl0aW9uOwogICAgIENvbmRpdGlvbiBmdWxsQ29uZGl0aW9uOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxUaHJlYWQ+PiBjb25zdW1lclRocmVhZHM7Ci0gICAgVmVjdG9yPFJlZlB0cjxUaHJl
YWQ+PiBwcm9kdWNlclRocmVhZHM7CisgICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiBjb25zdW1lclRo
cmVhZHM7CisgICAgVmVjdG9yPFJlZjxUaHJlYWQ+PiBwcm9kdWNlclRocmVhZHM7CiAKICAgICBW
ZWN0b3I8dW5zaWduZWQ+IHJlY2VpdmVkOwogICAgIExvY2sgcmVjZWl2ZWRMb2NrOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bUNvbnN1bWVyczsgaS0tOykgewotICAgICAgICBSZWZQ
dHI8VGhyZWFkPiB0aHJlYWRJZGVudGlmaWVyID0gVGhyZWFkOjpjcmVhdGUoCisgICAgICAgIGNv
bnN1bWVyVGhyZWFkcy5hcHBlbmQoVGhyZWFkOjpjcmVhdGUoCiAgICAgICAgICAgICAiQ29uc3Vt
ZXIgdGhyZWFkIiwKICAgICAgICAgICAgIFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgZm9yICg7
OykgewpAQCAtMTI0LDE0ICsxMjQsMTMgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgY29uc3VtZXJUaHJl
YWRzLmFwcGVuZCh0aHJlYWRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIH0pKTsKICAgICB9CiAK
ICAgICBzbGVlcChkZWxheSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1Qcm9kdWNlcnM7
IGktLTspIHsKLSAgICAgICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkSWRlbnRpZmllciA9IFRocmVh
ZDo6Y3JlYXRlKAorICAgICAgICBwcm9kdWNlclRocmVhZHMuYXBwZW5kKFRocmVhZDo6Y3JlYXRl
KAogICAgICAgICAgICAgIlByb2R1Y2VyIFRocmVhZCIsCiAgICAgICAgICAgICBbJl0gKCkgewog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1NZXNzYWdlc1BlclBy
b2R1Y2VyOyArK2kpIHsKQEAgLTE1MSwxMiArMTUwLDExIEBAIHZvaWQgcnVuVGVzdCgKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBub3RpZnkobm90aWZ5U3R5bGUs
IGVtcHR5Q29uZGl0aW9uLCBzaG91bGROb3RpZnkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0pOwotICAgICAgICBwcm9kdWNlclRocmVhZHMuYXBwZW5kKHRocmVhZElkZW50aWZp
ZXIpOworICAgICAgICAgICAgfSkpOwogICAgIH0KIAotICAgIGZvciAoUmVmUHRyPFRocmVhZD4g
dGhyZWFkSWRlbnRpZmllciA6IHByb2R1Y2VyVGhyZWFkcykKLSAgICAgICAgdGhyZWFkSWRlbnRp
Zmllci0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBmb3IgKGF1dG8mIHRocmVhZCA6IHByb2R1
Y2VyVGhyZWFkcykKKyAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogCiAgICAg
ewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9ja2VyKGxvY2spOwpAQCAtMTY0LDgg
KzE2Miw4IEBAIHZvaWQgcnVuVGVzdCgKICAgICB9CiAgICAgZW1wdHlDb25kaXRpb24ubm90aWZ5
QWxsKCk7CiAKLSAgICBmb3IgKFJlZlB0cjxUaHJlYWQ+IHRocmVhZElkZW50aWZpZXIgOiBjb25z
dW1lclRocmVhZHMpCi0gICAgICAgIHRocmVhZElkZW50aWZpZXItPndhaXRGb3JDb21wbGV0aW9u
KCk7CisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiBjb25zdW1lclRocmVhZHMpCisgICAgICAgIHRo
cmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKIAogICAgIEVYUEVDVF9FUShudW1Qcm9kdWNlcnMg
KiBudW1NZXNzYWdlc1BlclByb2R1Y2VyLCByZWNlaXZlZC5zaXplKCkpOwogICAgIHN0ZDo6c29y
dChyZWNlaXZlZC5iZWdpbigpLCByZWNlaXZlZC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCmluZGV4IGY5NDQwZDA5ZmUxZTEyYTgwNjU0MGI0
MmUyMTA5YzkxYTRjNzdiNmYuLjNjNDNjZGVlMWE0OGUzOTI3NDFjNDdjNmUwMTY3ZGY2YTNkZDQz
MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBA
IC0xMjcsOCArMTI3LDggQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAgICAgICAgICAg
ICAgY29uZGl0aW9uLndhaXQobG9ja2VyKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoUmVm
UHRyPFRocmVhZD4gdGhyZWFkSWRlbnRpZmllciA6IHRocmVhZHMpCi0gICAgICAgICAgICB0aHJl
YWRJZGVudGlmaWVyLT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgICAgICBmb3IgKGF1dG8mIHRo
cmVhZCA6IHRocmVhZHMpCisgICAgICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7
CiAgICAgfQogCiAgICAgLy8gU2VtYXBob3JlIG9wZXJhdGlvbnMuCkBAIC0xNzgsNyArMTc4LDcg
QEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAgc3RkOjptdXRleCBsb2NrOwogICAgIHN0
ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGNvbmRpdGlvbjsKICAgICBIYXNoU2V0PFJlZjxUaHJlYWQ+
PiBhd2FrZTsKLSAgICBWZWN0b3I8UmVmUHRyPFRocmVhZD4+IHRocmVhZHM7CisgICAgVmVjdG9y
PFJlZjxUaHJlYWQ+PiB0aHJlYWRzOwogICAgIFJlZlB0cjxUaHJlYWQ+IGxhc3RBd29rZW47CiB9
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TaWduYWxzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NpZ25hbHMuY3BwCmluZGV4IDA3NzVh
ODJjYjJkOGU4ZjE0Y2ZmOTUzZGU0Y2U3MGRkMzAwMmEyNzEuLjM3MzczNmVhYmNhZTIyM2ZkZTQ2
OTMwN2ZhOGY3MzJhYTk2ZmI2YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1NpZ25hbHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Np
Z25hbHMuY3BwCkBAIC00NywxOSArNDcsMTggQEAgVEVTVChTaWduYWxzLCBTaWduYWxzV29ya09u
RXhpdCkKICAgICB9KTsKIAogICAgIEF0b21pYzxib29sPiByZWNlaXZlclNob3VsZEtlZXBSdW5u
aW5nKHRydWUpOwotICAgIFJlZlB0cjxUaHJlYWQ+IHJlY2VpdmVyVGhyZWFkID0gKFRocmVhZDo6
Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHJlY2VpdmVyIiwKKyAgICBSZWY8VGhyZWFkPiByZWNlaXZl
clRocmVhZCA9IChUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkTWVzc2FnZSByZWNlaXZlciIsCiAgICAg
ICAgIFsmcmVjZWl2ZXJTaG91bGRLZWVwUnVubmluZ10gKCkgewogICAgICAgICAgICAgd2hpbGUg
KHJlY2VpdmVyU2hvdWxkS2VlcFJ1bm5pbmcubG9hZCgpKSB7IH0KICAgICB9KSk7Ci0gICAgQVNT
RVJUX1RSVUUocmVjZWl2ZXJUaHJlYWQpOwogCiAgICAgYm9vbCBzaWduYWxGaXJlZDsKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKHN0YXRpY19jYXN0
PFJlZmxlY3RlZFRocmVhZCo+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS0+bV9tdXRleCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKHN0YXRpY19jYXN0PFJlZmxl
Y3RlZFRocmVhZCY+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS5tX211dGV4KTsKICAgICAgICAgcmVj
ZWl2ZXJTaG91bGRLZWVwUnVubmluZy5zdG9yZShmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQqPihyZWNlaXZlclRocmVhZC5nZXQoKSktPmhh
c0V4aXRlZCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PFJlZmxlY3RlZFRo
cmVhZCY+KHJlY2VpdmVyVGhyZWFkLmdldCgpKS5oYXNFeGl0ZWQoKSk7CiAgICAgICAgIHNsZWVw
KDEpOwotICAgICAgICBzaWduYWxGaXJlZCA9ICFwdGhyZWFkX2tpbGwoc3RhdGljX2Nhc3Q8UmVm
bGVjdGVkVGhyZWFkKj4ocmVjZWl2ZXJUaHJlYWQuZ2V0KCkpLT5tX2hhbmRsZSwgc3RkOjpnZXQ8
MD4odG9TeXN0ZW1TaWduYWwoU2lnbmFsOjpVc3IpKSk7CisgICAgICAgIHNpZ25hbEZpcmVkID0g
IXB0aHJlYWRfa2lsbChzdGF0aWNfY2FzdDxSZWZsZWN0ZWRUaHJlYWQmPihyZWNlaXZlclRocmVh
ZC5nZXQoKSkubV9oYW5kbGUsIHN0ZDo6Z2V0PDA+KHRvU3lzdGVtU2lnbmFsKFNpZ25hbDo6VXNy
KSkpOwogICAgIH0KIAogICAgIHJlY2VpdmVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCmluZGV4IGI3
YTE4OGFmYzlhODliYTQ1MTliNzc2YmU4MDE2YTZlYWZiYjg3NGEuLjc1NTEwNzE2NTZlM2M1Yjk0
Mjc3NzU2YzgxZmNlZjIxYjI5ZGZiZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9UaHJlYWRHcm91cC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0
VGhyZWFkR3JvdXAoTW9kZSBtb2RlKQogICAgIExvY2sgbG9jazsKICAgICBDb25kaXRpb24gY29u
ZGl0aW9uOwogICAgIENvbmRpdGlvbiByZXN0YXJ0Q29uZGl0aW9uOwotICAgIFZlY3RvcjxSZWZQ
dHI8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBWZWN0b3I8UmVmPFRocmVhZD4+IHRocmVhZHM7CiAK
ICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlRocmVhZHM7ICsraSkgewotICAgICAgICAg
ICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29y
a2VyIiwgWyZdIHsKKyAgICAgICAgICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSBNb2RlOjpB
ZGRDdXJyZW50VGhyZWFkKQogICAgICAgICAgICAgICAgICAgICB0aHJlYWRHcm91cC0+YWRkQ3Vy
cmVudFRocmVhZCgpOwpAQCAtNTcsOCArNTcsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3Jv
dXAoTW9kZSBtb2RlKQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICBpZiAobW9kZSA9PSBNb2RlOjpBZGQpCi0gICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUodGhyZWFkR3JvdXAtPmFkZCgqdGhyZWFkKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6TmV3
bHlBZGRlZCk7Ci0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWQpOworICAgICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5hZGQodGhyZWFkLmdldCgpKSA9PSBUaHJl
YWRHcm91cEFkZFJlc3VsdDo6TmV3bHlBZGRlZCk7CisgICAgICAgICAgICB0aHJlYWRzLmFwcGVu
ZChXVEZNb3ZlKHRocmVhZCkpOwogICAgICAgICB9CiAKICAgICAgICAgY29uZGl0aW9uLndhaXQo
bG9jaywgWyZdIHsKQEAgLTEwMiw5ICsxMDIsOSBAQCBURVNUKFdURiwgVGhyZWFkR3JvdXBBZGRD
dXJyZW50VGhyZWFkKQogVEVTVChXVEYsIFRocmVhZEdyb3VwRG9Ob3RBZGREZWFkVGhyZWFkKQog
ewogICAgIHN0ZDo6c2hhcmVkX3B0cjxUaHJlYWRHcm91cD4gdGhyZWFkR3JvdXAgPSBUaHJlYWRH
cm91cDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsgfSk7CisgICAgUmVmPFRocmVhZD4gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsgfSk7CiAgICAgdGhy
ZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwotICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5h
ZGQoKnRocmVhZCkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5vdEFkZGVkKTsKKyAgICBFWFBF
Q1RfVFJVRSh0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5nZXQoKSkgPT0gVGhyZWFkR3JvdXBBZGRS
ZXN1bHQ6Ok5vdEFkZGVkKTsKIAogICAgIGF1dG8gdGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9j
ayh0aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsKICAgICBFWFBFQ1RfRVEodGhyZWFkR3JvdXAtPnRo
cmVhZHModGhyZWFkR3JvdXBMb2NrZXIpLnNpemUoKSwgMHUpOwpAQCAtMTE2LDE0ICsxMTYsMTQg
QEAgVEVTVChXVEYsIFRocmVhZEdyb3VwQWRkRHVwbGljYXRlVGhyZWFkcykKICAgICBMb2NrIGxv
Y2s7CiAgICAgQ29uZGl0aW9uIHJlc3RhcnRDb25kaXRpb247CiAgICAgc3RkOjpzaGFyZWRfcHRy
PFRocmVhZEdyb3VwPiB0aHJlYWRHcm91cCA9IFRocmVhZEdyb3VwOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkR3JvdXBXb3JrZXIi
LCBbJl0geworICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRH
cm91cFdvcmtlciIsIFsmXSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7
CiAgICAgICAgIHJlc3RhcnRDb25kaXRpb24ud2FpdChsb2NrLCBbJl0gewogICAgICAgICAgICAg
cmV0dXJuIHJlc3RhcnRpbmc7CiAgICAgICAgIH0pOwogICAgIH0pOwotICAgIEVYUEVDVF9UUlVF
KHRocmVhZEdyb3VwLT5hZGQoKnRocmVhZCkgPT0gVGhyZWFkR3JvdXBBZGRSZXN1bHQ6Ok5ld2x5
QWRkZWQpOwotICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5hZGQoKnRocmVhZCkgPT0gVGhy
ZWFkR3JvdXBBZGRSZXN1bHQ6OkFscmVhZHlBZGRlZCk7CisgICAgRVhQRUNUX1RSVUUodGhyZWFk
R3JvdXAtPmFkZCh0aHJlYWQuZ2V0KCkpID09IFRocmVhZEdyb3VwQWRkUmVzdWx0OjpOZXdseUFk
ZGVkKTsKKyAgICBFWFBFQ1RfVFJVRSh0aHJlYWRHcm91cC0+YWRkKHRocmVhZC5nZXQoKSkgPT0g
VGhyZWFkR3JvdXBBZGRSZXN1bHQ6OkFscmVhZHlBZGRlZCk7CiAKICAgICB7CiAgICAgICAgIGF1
dG8gdGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsK
</data>
<flag name="review"
          id="347630"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>