<?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>141148</bug_id>
          
          <creation_ts>2015-02-01 20:44:15 -0800</creation_ts>
          <short_desc>Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance</short_desc>
          <delta_ts>2015-02-05 10:07:13 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141201</dependson>
          <blocked>140602</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066033</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-01 20:44:15 -0800</bug_when>
    <thetext>Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066035</commentid>
    <comment_count>1</comment_count>
      <attachid>245856</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-01 20:54:42 -0800</bug_when>
    <thetext>Created attachment 245856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066041</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-01 22:19:16 -0800</bug_when>
    <thetext>Bot shows Windows failing but I don’t see a specific error. Maybe Brent can help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066225</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-02 14:29:57 -0800</bug_when>
    <thetext>Yes, it looks like something in TestWebKitAPI is failing. Unfortunately, the MSVC output is so bloated with minutia that we don&apos;t see the relevant error in the 500 characters of output captured in the EWS log.

I&apos;ll apply the patch locally and see what the actual error is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066328</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-02 19:43:21 -0800</bug_when>
    <thetext>The patch built successfully without any changes against ToT. I&apos;m not sure why the EWS complained about this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066364</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-02 21:42:57 -0800</bug_when>
    <thetext>I am convinced that the Windows EWS has multiple false negatives.

Still looking for a reviewer for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066376</commentid>
    <comment_count>6</comment_count>
      <attachid>245856</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-02 22:29:25 -0800</bug_when>
    <thetext>Comment on attachment 245856
Patch

This builds and runs tests on mac and windows, and seems like a good change. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066450</commentid>
    <comment_count>7</comment_count>
      <attachid>245856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-03 08:58:14 -0800</bug_when>
    <thetext>Comment on attachment 245856
Patch

Clearing flags on attachment: 245856

Committed r179548: &lt;http://trac.webkit.org/changeset/179548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066451</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-03 08:58:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066468</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-03 10:05:02 -0800</bug_when>
    <thetext>This caused many assertions: https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK1%20(Tests)/builds/10255

ASSERTION FAILED: m_element.instanceUpdatesBlocked()
/Volumes/Data/slave/mavericks-debug/build/Source/WebCore/svg/SVGElement.h(265) : WebCore::SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
1   0x105430df0 WTFCrash
2   0x10aca752b WebCore::SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
3   0x10aca42f5 WebCore::SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
4   0x10acbc92e WebCore::applyCSSPropertyToTargetAndInstances(WebCore::SVGElement&amp;, WebCore::QualifiedName const&amp;, WTF::String const&amp;)
5   0x10acbc76b WebCore::SVGAnimateElementBase::applyResultsToTarget()
6   0x10ab59b38 WebCore::SMILTimeContainer::updateAnimations(WebCore::SMILTime, bool)
7   0x10ab595ff WebCore::SMILTimeContainer::begin()
8   0x10acde113 WebCore::SVGDocumentExtensions::startAnimations()
9   0x1095152d8 WebCore::Document::implicitClose()
10  0x109876f3b WebCore::FrameLoader::checkCallImplicitClose()
11  0x109876bf4 WebCore::FrameLoader::checkCompleted()
12  0x1098756e8 WebCore::FrameLoader::finishedParsing()
13  0x109521851 WebCore::Document::finishedParsing()
14  0x10b02e12d WebCore::XMLDocumentParser::end()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066471</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 10:07:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; This caused many assertions:
&gt; https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK1%20(Tests)/
&gt; builds/10255
&gt; 
&gt; ASSERTION FAILED: m_element.instanceUpdatesBlocked()
&gt; /Volumes/Data/slave/mavericks-debug/build/Source/WebCore/svg/SVGElement.
&gt; h(265) : WebCore::SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
&gt; 1   0x105430df0 WTFCrash
&gt; 2   0x10aca752b

Idea: We should probably have EWS run a debug build so we can see if we&apos;ve caused new assertions to be fired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066472</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 10:08:04 -0800</bug_when>
    <thetext>I guess we should roll this out so that darin can figure out what&apos;s going on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066476</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 10:18:19 -0800</bug_when>
    <thetext>The assertion being fired is new to this patch:

    ASSERT(m_element.instanceUpdatesBlocked()); 

Previously, the SVGInstanceElement would simply call &apos;m_element.setInstanceUpdatesBlocked(false)&apos; without worrying about whether the element was in an &apos;updates blocked&apos; state. When this responsibility was moved to SVGInstance, the new assertion was added causing this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066479</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-03 10:19:50 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 141201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066489</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 10:33:45 -0800</bug_when>
    <thetext>My guess is that we are somehow nesting image update blockers, even though the assertion darin added should catch that. Weird!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066503</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 11:11:14 -0800</bug_when>
    <thetext>These assertions seem to be coming about because the InstanceUpdateBlocker is failing to mark the element as &quot;update blocked&quot;. I added some additional assertions:

    ASSERT(!targetElement.instanceUpdatesBlocked());
    SVGElement::InstanceUpdateBlocker blocker(targetElement);
    ASSERT(targetElement.instanceUpdatesBlocked());

The first assertion is always valid, but when we hit the errors shown by the test system, the second assertion is getting triggered.

Somehow, the InstanceUpdateBlocker is NOT changing the state of the target element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066504</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 11:11:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; These assertions seem to be coming about because the InstanceUpdateBlocker
&gt; is failing to mark the element as &quot;update blocked&quot;. I added some additional
&gt; assertions:
&gt; 
&gt;     ASSERT(!targetElement.instanceUpdatesBlocked());
&gt;     SVGElement::InstanceUpdateBlocker blocker(targetElement);
&gt;     ASSERT(targetElement.instanceUpdatesBlocked());
&gt; 
&gt; The first assertion is always valid, but when we hit the errors shown by the
&gt; test system, the second assertion is getting triggered.
&gt; 
&gt; Somehow, the InstanceUpdateBlocker is NOT changing the state of the target
&gt; element.

FYI: This is in &apos;applyCSSPropertyToTargetAndInstances&apos; in the SVGAnimateElementBase.cpp class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066507</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 11:23:24 -0800</bug_when>
    <thetext>Ok. I think I see the problem. Apparently some SVGElements do not have m_svgRareData. When this is the case, calling &apos;setInstanceUpdatesBlocked&apos; is a no-op, but later attempts to confirm that we are in the right state fail.

I think this change might be the right thing to do:

Index: svg/SVGElement.h
===================================================================
--- svg/SVGElement.h	(revision 179554)
+++ svg/SVGElement.h	(working copy)
@@ -258,11 +258,12 @@
     : m_element(element)
 {
     m_element.setInstanceUpdatesBlocked(true);
+    ASSERT(!m_element.m_svgRareData || m_element.instanceUpdatesBlocked());
 }
 
 inline SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
 {
-    ASSERT(m_element.instanceUpdatesBlocked());
+    ASSERT(!m_element.m_svgRareData || m_element.instanceUpdatesBlocked());
     m_element.setInstanceUpdatesBlocked(false);
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066510</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 11:33:26 -0800</bug_when>
    <thetext>No. That&apos;s not complete.

We have some cases (in the debugger I&apos;m looking at an SVGCircleElement) where the element had no rare data when it entered the scope of the InstanceUpdateBlocker. Later, it called applyCSSPropertyToTarget, which calls &quot;ensureAnimatedSMILStyleProperties&quot;, which in turn calls ensureSVGRareData().

At this point, we now have a rare data without its m_instancesUpdatesBlocked member set properly.

Consequently, the assertion fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066514</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-03 11:35:41 -0800</bug_when>
    <thetext>Maybe SVGElement::setInstanceUpdatesBlocked should call ensureSVGRareData so we never hit this case?

Or perhaps call it in DEBUG mode so assertions stay correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066817</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-04 08:59:58 -0800</bug_when>
    <thetext>The assertion in ~InstanceUpdateBlocker not critical. I added it to detect a potential mistake, but we can just omit it. The right thing to do here is to land the patch without that assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067107</commentid>
    <comment_count>21</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-05 09:31:10 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; The assertion in ~InstanceUpdateBlocker not critical. I added it to detect a
&gt; potential mistake, but we can just omit it. The right thing to do here is to
&gt; land the patch without that assertion.

Ok. I&apos;m running Debug tests locally with this patch (without the assertion) and will land it shortly if everything goes well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067119</commentid>
    <comment_count>22</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-05 10:07:13 -0800</bug_when>
    <thetext>Committed r179695: &lt;http://trac.webkit.org/changeset/179695&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245856</attachid>
            <date>2015-02-01 20:54:42 -0800</date>
            <delta_ts>2015-02-03 08:58:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141148-20150201205451.patch</filename>
            <type>text/plain</type>
            <size>53246</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhkYzAyZmZhNmJhNDUw
ZDIxNDU4YTZmNmNjZGRjNTJkZWIyZTY0ZS4uMGY3ODU0YTMxNTUwMjY1ZjFkYmJhYjY4N2VjMGEx
Y2IzNWMxZTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAxNS0wMi0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkL1VwZGF0ZUJsb2NrZXIgdG8gU1ZHRWxlbWVudCBmcm9tIFNWR0VsZW1lbnRJ
bnN0YW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxMTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zcGlyZWQgYnkgdGhpcyBjaGFuZ2UgUm9iIEJ1aXMgbWFkZSBpbiBCbGluazoKKworICAgICAg
ICAgICAgaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2JsaW5rP3ZpZXc9cmV2aXNpb24m
cmV2aXNpb249MTczMzQzCisKKyAgICAgICAgSSBhY3R1YWxseSB3cm90ZSB0aGUgd2hvbGUgdGhp
bmcgYW5kIHRoZW4gZGlzY292ZXJlZCB3ZSBkaWQgaXQgYWxtb3N0IGlkZW50aWNhbGx5LgorCisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDo6c2V0SW5zdGFuY2VVcGRhdGVzQmxv
Y2tlZCk6IEFkZGVkIHRoaXMKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBhcm91bmQg
YSBjaXJjdWxhciBoZWFkZXIgZGVwZW5kZW5jeS4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
OjpleGVjdXRlQWN0aW9uKTogVXNlIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQuCisKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6IFVzZSBpbnZhbGlkYXRlSW5zdGFuY2VzLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnQ6OnNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQpOiBBZGRlZCBhbiBh
c3NlcnRpb24gdGhhdCB3aWxsCisgICAgICAgIGNhdGNoIGFueW9uZSB3aG8gbmVzdHMgSW5zdGFu
Y2VVcGRhdGVCbG9ja2VyIGJ5IGFjY2lkZW50LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6aW52YWxpZGF0ZUluc3RhbmNlcyk6IE1vdmVkIHRoaXMgaGVyZSBmcm9tCisgICAgICAgIFNW
R0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudC4gSSBoYWQg
YWxyZWFkeSBtb2RpZmllZCB0aGlzCisgICAgICAgIHNvIGl0IGhhZCBub3RoaW5nIHRvIGRvIHdp
dGggU1ZHRWxlbWVudEluc3RhbmNlLCBzbyBpdCB3YXMgYSBzaW1wbGUgbWF0dGVyIG9mCisgICAg
ICAgIGNvbnZlcnRpbmcgdGhpcyBpbnRvIGEgbWVtYmVyIGZ1bmN0aW9uLiBBZGRlZCBhIEZJWE1F
IGFib3V0IHRoZSBteXN0ZXJpb3VzCisgICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQgdGhhdCBt
YWtlcyBtdWx0aXBsZSB0ZXN0cyBmYWlsIGlmIGl0J3MgcmVtb3ZlZC4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50Lmg6IEFkZGVkIHB1YmxpYyBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgY2xhc3Ms
IHByb3RlY3RlZAorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGNsYXNzLCBhbmQg
cHJpdmF0ZSBpbnZhbGlkYXRlSW5zdGFuY2VzIGZ1bmN0aW9uLgorICAgICAgICBVbmxpa2UgdGhl
IG9uZXMgaW4gU1ZHRWxlbWVudEluc3RhbmNlIHRoZXNlIHVzZSByZWZlcmVuY2VzIHNvIHRoZXkg
YXJlIHRoZW4KKyAgICAgICAgbm90IGNvcHlhYmxlIHdpdGhvdXQgdXNpbmcgdGhlIFdURl9NQUtF
X05PTkNPUFlBQkxFIG1hY3JvLgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJ
bnN0YW5jZXNPZkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dEluc3RhbmNlOjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXI6Okluc3RhbmNlVXBkYXRlQmxvY2tlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNl
VXBkYXRlQmxvY2tlcjo6fkluc3RhbmNlVXBkYXRlQmxvY2tlcik6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOiBSZW1vdmVkIEludmFsaWRhdGlvbkd1YXJkLCBJ
bnN0YW5jZVVwZGF0ZUJsb2NrZXIsIGFuZAorICAgICAgICBpbnZhbGlkYXRlQWxsSW5zdGFuY2Vz
T2ZFbGVtZW50LiBEaWRuJ3QgZG8gYW55IGZ1cnRoZXIgY2xlYW51cCBzaW5jZSB3ZSBzb29uIHdp
bGwKKyAgICAgICAgZGVsZXRlIHRoaXMgZW50aXJlIGZpbGUuCisKKyAgICAgICAgKiBzdmcvU1ZH
QUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOiBVcGRhdGVkIHRvIHVzZSBuZXcgbmFtZSBhbmQgcmVmZXJlbmNlCisgICAgICAg
IGluc3RlYWQgb2YgcG9pbnRlci4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Q1NTUHJvcGVydHlUb1RhcmdldEFuZEluc3Rh
bmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFy
Z2V0QW5kSW5zdGFuY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpub3RpZnlUYXJnZXRB
bmRJbnN0YW5jZXNBYm91dEFuaW1WYWxDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1h
dG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBz
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
ICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisg
ICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZF
TWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlTm9kZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAg
ICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAg
ICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBE
aXR0by4KKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAg
ICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBh
dGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgor
ICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAq
IHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1Jl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERp
dHRvLgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAg
ICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHU3lt
Ym9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRv
LgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
ICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTTUlMRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorCiAyMDE1LTAxLTMx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIGRpc3BhdGNo
aW5nIGV2ZW50cyB0byB3aXRoIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzIGFzIHRoZWlyIHRh
cmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDcwOGJjNjI3NTBmZTdjMWMx
NDFkZTJmMTBmNWE0YWMxYTU2ZjZjOTYuLmFiMTc3ZWJhZmI0YTNhNWZkM2U2Mzk2MTY1MDE5M2U1
N2Y1YTU4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTI2LDcgKzEyNiw3
IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50
SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCiAgICAgLy8gVW5saWtl
IG90aGVyIFNWRypFbGVtZW50IGNsYXNzZXMsIFNWR0FFbGVtZW50IG9ubHkgbGlzdGVucyB0byBT
VkdVUklSZWZlcmVuY2UgY2hhbmdlcwogICAgIC8vIGFzIG5vbmUgb2YgdGhlIG90aGVyIHByb3Bl
cnRpZXMgY2hhbmdlcyB0aGUgbGlua2luZyBiZWhhdmlvdXIgZm9yIG91ciA8YT4gZWxlbWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKaW5kZXggYmRl
MmI3MTllNWIzYjBhYTI5MDNlNTY2ZTdmNDdiNTI4YWZkZmIzYS4uYzFjY2RjMjNjYWY0YzUyZmMy
MDZlMjUzYWY0YTg1OWFhYTM4MTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50QmFzZS5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0QW5kSW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVs
ZW1lbgogCiAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFt
ZS5sb2NhbE5hbWUoKSk7CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRl
QmxvY2tlciBibG9ja2VyKCZ0YXJnZXRFbGVtZW50KTsKKyAgICBTVkdFbGVtZW50OjpJbnN0YW5j
ZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKICAgICBhcHBseUNTU1Byb3Bl
cnR5VG9UYXJnZXQodGFyZ2V0RWxlbWVudCwgaWQsIHZhbHVlQXNTdHJpbmcpOwogCiAgICAgLy8g
SWYgdGhlIHRhcmdldCBlbGVtZW50IGhhcyBpbnN0YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGws
IHcvbyByZXF1aXJpbmcgdGhlIDx1c2U+IHRyZWUgdG8gYmUgcmVidWlsdC4KQEAgLTI3NCw3ICsy
NzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFyZ2V0QW5k
SW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZQogCiAgICAgQ1NTUHJvcGVydHlJRCBpZCA9
IGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiAKLSAgICBTVkdFbGVt
ZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2VyKCZ0YXJnZXRFbGVtZW50
KTsKKyAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRF
bGVtZW50KTsKICAgICByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQodGFyZ2V0RWxlbWVudCwg
aWQpOwogCiAgICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IGhhcyBpbnN0YW5jZXMsIHVwZGF0
ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1aXJpbmcgdGhlIDx1c2U+IHRyZWUgdG8gYmUgcmVidWls
dC4KQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5VGFyZ2V0QW5k
SW5zdGFuY2VzQWJvdXRBbmltVmFsQ2hhbmdlKFNWR0VsZW1lbnQmIHRhcmdldAogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1lbnQuaW5Eb2N1bWVudCgp
IHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U1ZHRWxlbWVudEluc3RhbmNlOjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcigmdGFyZ2V0
RWxlbWVudCk7CisgICAgU1ZHRWxlbWVudDo6SW5zdGFuY2VVcGRhdGVCbG9ja2VyIGJsb2NrZXIo
dGFyZ2V0RWxlbWVudCk7CiAgICAgbm90aWZ5VGFyZ2V0QWJvdXRBbmltVmFsQ2hhbmdlKHRhcmdl
dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpOwogCiAgICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50
IGhhcyBpbnN0YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1aXJpbmcgdGhlIDx1
c2U+IHRyZWUgdG8gYmUgcmVidWlsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5j
cHAKaW5kZXggZTBhNzMxMDNlOTk3MDI5YmU2NDdmM2NlMTAzOGZhMjc2NWQ2MmY2OC4uZmJhOGE2
MWQyZjg4NTQ2NTYwMDM0MTdjM2VjNTE0MDAyZTYwYTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUGF0aC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlv
bigKICAgICBmb3IgKFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBhbmltYXRlZFR5cGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAg
cmVzdWx0LmFwcGVuZChjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRl
ZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihpdC0+cHJvcGVydGllc1swXS5nZXQoKSkpOwog
Ci0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcihw
cm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSk7CisgICAgU1ZHRWxlbWVudDo6SW5zdGFuY2VVcGRh
dGVCbG9ja2VyIGJsb2NrZXIoKnByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpKTsKIAogICAgIHNp
emVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlc3VsdFNpemU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGVBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3IuY3BwCmluZGV4IDZjNGViYjQ4MDE5NzQxZTNkYmI1MDg4MDQ5MmMzODNhOTNh
YmQ5YWYuLjg1YTJjMWZiNmQyOGM5NjhjNzUwN2VhMDQ0NzQ3ZmM4MTJlNjU2ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcApAQCAtODMsNCAr
ODMsOSBAQCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNGbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K3ZvaWQgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OnNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
U1ZHRWxlbWVudCYgZWxlbWVudCwgYm9vbCBibG9ja2VkKQoreworICAgIGVsZW1lbnQuc2V0SW5z
dGFuY2VVcGRhdGVzQmxvY2tlZChibG9ja2VkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAppbmRleCBj
OTMzNmY4NDU1ZjcyYWQyZWM4YmFlNzYyYWMxYWEyMDQyNTE5ZWYwLi5jNjhmNzU2MTE0M2JmNDdh
M2VkYTQwM2QyODdkYTk4YWYyOGJiYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IuaApAQCAtMTg5LDcgKzE4OSw4IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+CiAgICAgdm9pZCBleGVjdXRlQWN0aW9uKEFuaW1h
dGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRUeXBlcywgdW5zaWduZWQgd2hpY2hQcm9wZXJ0eSwgdHlwZW5hbWUgQW5pbVZhbFR5
cGU6OkNvbnRlbnRUeXBlKiB0eXBlID0gMCkKICAgICB7Ci0gICAgICAgIFNWR0VsZW1lbnRJbnN0
YW5jZTo6SW5zdGFuY2VVcGRhdGVCbG9ja2VyIGJsb2NrZXIoYW5pbWF0ZWRUeXBlc1swXS5lbGVt
ZW50KTsKKyAgICAgICAgLy8gRklYTUU6IENhbid0IHVzZSBTVkdFbGVtZW50OjpJbnN0YW5jZVVw
ZGF0ZUJsb2NrZXIgYmVjYXVzZSBvZiBjaXJjdWxhciBoZWFkZXIgZGVwZW5kZW5jeS4gV291bGQg
YmUgbmljZSB0byB1bnRhbmdsZSB0aGlzLgorICAgICAgICBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9j
a2VkKCphbmltYXRlZFR5cGVzWzBdLmVsZW1lbnQsIHRydWUpOwogCiAgICAgICAgIFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYW5pbWF0ZWRUeXBl
cy5lbmQoKTsKICAgICAgICAgZm9yIChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gYW5pbWF0ZWRUeXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKQEAgLTIxNiw3ICsyMTcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIHNldEluc3RhbmNlVXBkYXRlc0Js
b2NrZWQoKmFuaW1hdGVkVHlwZXNbMF0uZWxlbWVudCwgZmFsc2UpOwogICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoU1ZHRWxlbWVudCYsIGJvb2wpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwCmluZGV4IGExOWJhYmFjNmY4YzRhY2I5OTRkOWEzZjYxNzIwMzBhNmYyODYxNzcu
LjE5NmNjMjcwM2NjOWRhZmZhZmEzMTAxODdmZDViY2VmNDZlMzE0NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNWR0Np
cmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6
OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpjeEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCA4Y2ViNjNkMzA2
ZDM3ZjMwZTg0YjUxZGI3ZWFmNDdhNTk1Zjc3ZDFjLi42NzlkMzRjMTQ0NzZlNWFmNjEzMzg3OGJj
YmVmNTQ5NWViMjg2OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52
YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQog
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRl
eCBlNDM4MDM5OTBkN2YwYTUyY2VjZGUxZGExMDliYmRjYmIzOGUxZmVjLi4xYWY4MTQxY2E1OTBh
N2YxOWE3NjJhOWVjNDY0OTcwOTA3NTdiMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlk
YXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKIAogICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKaW5kZXggMGEyNTEyMmNiMDIxNTYw
NGQyYmE3MTJhNmZjYTFiOTNmOTQ0MjQxMy4uMTY2OTAxZDE0OTU3OWVmZDUzODQ3M2Y3ZmUwYTEx
OGY4OWRiNWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9u
R3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKICAgICAvLyBBbnkgY2hhbmdlIG9mIGEgY3Vyc29yIHNwZWNpZmljIGF0dHJpYnV0ZSB0cmln
Z2VycyB0aGlzIHJlY2FsYy4KICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRl
eCBhMzI1NmNmNWJkYWVhOGYwYjUzMGY0YWY3NWMwMWY0YmQ4MDFkN2ZmLi44Y2U4M2ViM2JiZWI4
MGJkZTI3MjZiNzI2MGNkYjg4Y2I1YmE2MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJiByb290UGFyZW50KQogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5jbGVhclRhcmdldERlcGVuZGVuY2llcygqdGhpcyk7CiAgICAgICAgIGRvY3VtZW50KCku
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0
KHRoaXMpOwogICAgIH0KLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0
YW5jZXNPZkVsZW1lbnQodGhpcyk7CisgICAgaW52YWxpZGF0ZUluc3RhbmNlcygpOwogfQogCiBT
VkdTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQoKSBjb25zdApAQCAtNzEz
LDcgKzcxMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIAog
ICAgIC8vIE5vdGlmeSBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIGhhdmUgcmVmZXJlbmNlcyB0byB0
aGlzIGVsZW1lbnQgdG8gcmVidWlsZCB0aGVpciBzaGFkb3cgYW5kIHJlbmRlcgogICAgIC8vIHRy
ZWVzLCBlLmcuIGEgPHVzZT4gZWxlbWVudCByZWZlcmVuY2VzIGEgdGFyZ2V0IGVsZW1lbnQgYmVm
b3JlIHRoaXMgdGFyZ2V0IGVsZW1lbnQgaXMgZGVmaW5lZC4KLSAgICBTVkdFbGVtZW50SW5zdGFu
Y2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQodGhpcyk7CisgICAgaW52YWxpZGF0
ZUluc3RhbmNlcygpOwogfQogCiBib29sIFNWR0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CkBAIC0xMDQ0LDEzICsxMDQ0LDEzIEBAIHZv
aWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9IGNzc1Byb3BlcnR5SWRGb3JT
VkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKTsKICAgICBpZiAocHJvcElkID4gMCkgewotICAgICAg
ICBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQodGhp
cyk7CisgICAgICAgIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChhdHRyTmFtZSA9PSBIVE1MTmFtZXM6OmNsYXNzQXR0cikgewogICAgICAg
ICBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY2xhc3NOYW1lKCkpOwotICAgICAgICBTVkdFbGVtZW50
SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQodGhpcyk7CisgICAgICAg
IGludmFsaWRhdGVJbnN0YW5jZXMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2
MSw3ICsxMDYxLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI+KCpyZW5kZXJlcikuaWRDaGFuZ2VkKCk7CiAgICAgICAgIGlmIChp
bkRvY3VtZW50KCkpCiAgICAgICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgp
OwotICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVs
ZW1lbnQodGhpcyk7CisgICAgICAgIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIH0KQEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKICAgICBpZiAoY2hhbmdl
LnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKICAgICAgICAgcmV0dXJuOwotICAg
IFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlz
KTsKKyAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZT4gU1ZH
RWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAg
LTExMzAsNiArMTEzMCwxMCBAQCBib29sIFNWR0VsZW1lbnQ6Omluc3RhbmNlVXBkYXRlc0Jsb2Nr
ZWQoKSBjb25zdAogCiB2b2lkIFNWR0VsZW1lbnQ6OnNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
Ym9vbCB2YWx1ZSkKIHsKKyAgICAvLyBDYXRjaCBhbnkgY2FsbGVycyB0aGF0IGNhbGxzIHNldElu
c3RhbmNlVXBkYXRlc0Jsb2NrZWQodHJ1ZSkgdHdpY2UgaW4gYSByb3cuCisgICAgLy8gVGhhdCBw
cm9iYWJseSBpbmRpY2F0ZXMgbmVzdGVkIHVzZSBvZiBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYW5k
IGEgYnVnLgorICAgIEFTU0VSVCghdmFsdWUgfHwgIWluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSk7
CisKICAgICBpZiAobV9zdmdSYXJlRGF0YSkKICAgICAgICAgbV9zdmdSYXJlRGF0YS0+c2V0SW5z
dGFuY2VVcGRhdGVzQmxvY2tlZCh2YWx1ZSk7CiB9CkBAIC0xMjAxLDQgKzEyMDUsMzAgQEAgdm9p
ZCBTVkdFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCiAgICAg
ZGlzcGF0Y2hTaW11bGF0ZWRDbGljaygwLCBzZW5kTW91c2VFdmVudHMgPyBTZW5kTW91c2VVcERv
d25FdmVudHMgOiBTZW5kTm9FdmVudHMpOwogfQogCit2b2lkIFNWR0VsZW1lbnQ6OmludmFsaWRh
dGVJbnN0YW5jZXMoKQoreworICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvJiBpbnN0YW5jZXMgPSB0aGlzLT5pbnN0YW5jZXMoKTsKKyAgICBpZiAoaW5zdGFu
Y2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFyayBhbGwgdXNlIGVs
ZW1lbnRzIHJlZmVyZW5jaW5nICdlbGVtZW50JyBmb3IgcmVidWlsZGluZworICAgIGRvIHsKKyAg
ICAgICAgU1ZHRWxlbWVudCogaW5zdGFuY2UgPSAqaW5zdGFuY2VzLmJlZ2luKCk7CisgICAgICAg
IGlmIChTVkdVc2VFbGVtZW50KiBlbGVtZW50ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VF
bGVtZW50KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pbkRvY3VtZW50KCkpOwor
ICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKKyAgICAgICAgfQor
ICAgICAgICBpbnN0YW5jZS0+c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7CisgICAg
fSB3aGlsZSAoIWluc3RhbmNlcy5pc0VtcHR5KCkpOworCisgICAgLy8gRklYTUU6IFdoeSBpcyB0
aGlzIG5lZWRlZD8KKyAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNWM4NWNhN2JkMGU1OGU5YTYxNzViY2IzZjMx
MWJmNmEyMGNkOTkxOS4uYThjOGVkZjIzMTg3NTc5MjdlYzBlYzg2YmFiZDYzYTA4YTU1MzNlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xNTUsNiArMTU1LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjYWxsQ2xlYXJUYXJnZXQoKSB7IGNsZWFyVGFyZ2V0KCk7IH0KIAorICAgIGNsYXNz
IEluc3RhbmNlVXBkYXRlQmxvY2tlcjsKKwogcHJvdGVjdGVkOgogICAgIFNWR0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudCgp
OwpAQCAtMTgzLDYgKzE4NSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKCkgeyB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCksIHRoaXMpOyB9CiAgICAgdm9pZCB1cGRhdGVSZWxhdGl2
ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCop
OwogCisgICAgY2xhc3MgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZDsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCkBAIC0yMDAsNiArMjA0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZmlsdGVyT3V0QW5pbWF0YWJsZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAjZW5kaWYKIAorICAgIHZvaWQgaW52YWxpZGF0
ZUluc3RhbmNlcygpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0VsZW1lbnRSYXJlRGF0YT4g
bV9zdmdSYXJlRGF0YTsKIAogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+IG1fZWxlbWVudHNXaXRo
UmVsYXRpdmVMZW5ndGhzOwpAQCAtMjEwLDYgKzIxNiwyMiBAQCBwcml2YXRlOgogCiB9OwogCitj
bGFzcyBTVkdFbGVtZW50OjpJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIHsKK3B1YmxpYzoKKyAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkKFNWR0VsZW1lbnQmKTsKKyAgICB+SW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCgpOworcHJpdmF0ZToKKyAgICBTVkdFbGVtZW50JiBtX2VsZW1lbnQ7
Cit9OworCitjbGFzcyBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgeworcHVibGlj
OgorICAgIEluc3RhbmNlVXBkYXRlQmxvY2tlcihTVkdFbGVtZW50Jik7CisgICAgfkluc3RhbmNl
VXBkYXRlQmxvY2tlcigpOworcHJpdmF0ZToKKyAgICBTVkdFbGVtZW50JiBtX2VsZW1lbnQ7Cit9
OworCiBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIGtleSkKICAgICB7CkBAIC0yMjIsNiArMjQ0
LDI4IEBAIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikg
eyByZXR1cm4gYS5tYXRjaGVzKGIpOyB9CiB9OwogCitpbmxpbmUgU1ZHRWxlbWVudDo6SW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZDo6SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZChTVkdFbGVtZW50
JiBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCit7Cit9CisKK2lubGluZSBTVkdF
bGVtZW50OjpJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkOjp+SW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCgpCit7CisgICAgbV9lbGVtZW50LmludmFsaWRhdGVJbnN0YW5jZXMoKTsKK30KKworaW5s
aW5lIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlcjo6SW5zdGFuY2VVcGRhdGVCbG9j
a2VyKFNWR0VsZW1lbnQmIGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKKyAg
ICBtX2VsZW1lbnQuc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZCh0cnVlKTsKK30KKworaW5saW5l
IFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlcjo6fkluc3RhbmNlVXBkYXRlQmxvY2tl
cigpCit7CisgICAgQVNTRVJUKG1fZWxlbWVudC5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwor
ICAgIG1fZWxlbWVudC5zZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGZhbHNlKTsKK30KKwogaW5s
aW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBj
b25zdAogewogICAgIHJldHVybiBpc1NWR0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50
PigqdGhpcykuaGFzVGFnTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAKaW5kZXggYWJkZjU4ZmFmOGI0YWVlMDRiYjU3MWVkY2IzZWM0MzU0ODljNDlm
Yy4uMGVmY2YyYjA4NWUzNmM0NGQ5NjViMDAxNjZjOTk1NzA5MTk2ODg3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTE2NywzMSArMTY3LDYgQEAgdm9p
ZCBTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudElu
c3RhbmNlPiBjaGlsZCkKICAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0
YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPihjaGlsZC5nZXQoKSwgKnRoaXMpOwogfQogCi12b2lk
IFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChTVkdF
bGVtZW50KiBlbGVtZW50KQotewotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aW5Eb2N1
bWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZWxlbWVudC0+aW5zdGFuY2VVcGRh
dGVzQmxvY2tlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBpbnN0YW5jZXMgPSBl
bGVtZW50LT5pbnN0YW5jZXMoKTsKLSAgICBpZiAoaW5zdGFuY2VzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gTWFyayBhbGwgdXNlIGVsZW1lbnRzIHJlZmVyZW5jaW5nICdl
bGVtZW50JyBmb3IgcmVidWlsZGluZwotICAgIGRvIHsKLSAgICAgICAgU1ZHRWxlbWVudCogaW5z
dGFuY2UgPSAqaW5zdGFuY2VzLmJlZ2luKCk7Ci0gICAgICAgIGlmIChTVkdVc2VFbGVtZW50KiBl
bGVtZW50ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50LT5pbkRvY3VtZW50KCkpOwotICAgICAgICAgICAgZWxlbWVudC0+
aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKLSAgICAgICAgfQotICAgICAgICBpbnN0YW5jZS0+c2V0
Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7Ci0gICAgfSB3aGlsZSAoIWluc3RhbmNlcy5p
c0VtcHR5KCkpOwotCi0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7Ci19Ci0KIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdAogewogICAgIHJldHVybiBTVkdFbGVtZW50SW5zdGFuY2VF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7CkBAIC0yNDAsMTcgKzIxNSw0IEBAIEV2ZW50VGFyZ2V0
RGF0YSYgU1ZHRWxlbWVudEluc3RhbmNlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQogICAgIHJl
dHVybiAqZXZlbnRUYXJnZXREYXRhKCk7CiB9CiAKLVNWR0VsZW1lbnRJbnN0YW5jZTo6SW5zdGFu
Y2VVcGRhdGVCbG9ja2VyOjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCkKLSAgICA6IG1fdGFyZ2V0RWxlbWVudCh0YXJnZXRFbGVtZW50KQotewotICAgIGlm
IChtX3RhcmdldEVsZW1lbnQpCi0gICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0SW5zdGFuY2VV
cGRhdGVzQmxvY2tlZCh0cnVlKTsKLX0KLQotU1ZHRWxlbWVudEluc3RhbmNlOjpJbnN0YW5jZVVw
ZGF0ZUJsb2NrZXI6On5JbnN0YW5jZVVwZGF0ZUJsb2NrZXIoKQotewotICAgIGlmIChtX3Rhcmdl
dEVsZW1lbnQpCi0gICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0SW5zdGFuY2VVcGRhdGVzQmxv
Y2tlZChmYWxzZSk7Ci19Ci0gICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuaAppbmRleCA1NDEyOTc5NGZhYWUzYWVjNzJkNWY2YTQxNWIyNjk5NDY0YWJlODFlLi44MDEz
MDIyZmUzZTEzZGMwMzVkZWU0NjcxOGYzMWY1NDgwNGZmYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC03MSwyNyArNzEsNiBAQCBwdWJsaWM6CiAKICAgICBE
b2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgY2xhc3MgSW52YWxpZGF0aW9u
R3VhcmQgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnZhbGlkYXRpb25HdWFyZCk7
Ci0gICAgcHVibGljOiAgICAKLSAgICAgICAgSW52YWxpZGF0aW9uR3VhcmQoU1ZHRWxlbWVudCog
ZWxlbWVudCkgOiBtX2VsZW1lbnQoZWxlbWVudCkgeyB9Ci0gICAgICAgIH5JbnZhbGlkYXRpb25H
dWFyZCgpIHsgU1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVt
ZW50KG1fZWxlbWVudCk7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdFbGVtZW50KiBtX2Vs
ZW1lbnQ7Ci0gICAgfTsKLQotICAgIGNsYXNzIEluc3RhbmNlVXBkYXRlQmxvY2tlciB7Ci0gICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3RhbmNlVXBkYXRlQmxvY2tlcik7Ci0gICAgcHVi
bGljOgotICAgICAgICBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCk7Ci0gICAgICAgIH5JbnN0YW5jZVVwZGF0ZUJsb2NrZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFNWR0VsZW1lbnQqIG1fdGFyZ2V0RWxlbWVudDsKLSAgICB9OwotICAgIAotICAg
IHN0YXRpYyB2b2lkIGludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCop
OwotCiAgICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7CiAgICAg
dXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpkZXJlZjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKaW5kZXggNDM3ZWUwNjAzMTQ0MTFjYjQ5MTlj
NjlmMWE1ZjM2NjVlODlmMzAwZS4uMmU4NTk0N2ZlNjliYmQ3Y2UyNzcyMTYxNGY4Njg2YmNlOTNl
MGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3Vh
cmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cgogICAgICAgICB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Y3lBdHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcAppbmRleCA1YjIwNTcwZDdlMTAzN2RkODMxMTE1OGM4NzI5ZTU2MmM0MzAxMmM4Li40ODJm
MmViMWZkY2Q0ZjA4NGI0Zjg0MTFjMWRhNGRhZjc1ODZjOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNWR0ZFQmxl
bmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJ
bnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6bW9kZUF0dHIpIHsKICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cAppbmRleCBjOWRjNDQ4NjFjMTk0MDcyZDhhOTFhYTRhNjhlZGEyYTdlMDQ0ZDAzLi4zYmEzNmNm
Y2Y3NWY0ZGI5OTQ0NTI3MGRmMmRmNWJiOTliZmI4ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxl
bWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsK
KyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZh
bHVlc0F0dHIpIHsKICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDE5
NmEyNGQ4YWJhZTllM2U0NmNjN2ZlMmM3Y2ZlYjFhYzVmYzU0NDcuLmFiNjBkNmQyODk5ZjcwYzky
NDM4MDgwYTU2NWJlYTk3YzM4NjU5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6Oklu
dmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpvcGVyYXRvckF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmsxQXR0
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKaW5kZXggM2ZmZGEyYTQyNTc0YTY2NzZlMjYxZDcxYzQyNjc1MTU1ZmNmY2I4My4uOTgxZTll
OTI0NjY3MzgyYmNkNjRhNGI3ZmYwYjYyMDg0ZjNhNTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0yNTcsNyArMjU3LDcg
QEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQo
dGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cgogICAgICAgICB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMGQ5OTA4NGZjYjg0YzdlZWUz
MjU4OGY1OTQ0MjcxZDM3YjFlMjU1NS4uNDNiZjkwZmU0MWJkYWQ0OTA0YjVlOTcxODcyMmZlNmJi
NDFiYmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZh
bGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmRpZmZ1c2VDb25zdGFudEF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggMjNjZDQ2Mjc4NTEyYTc5NTk0M2JlOGMxNDYz
YzgzZDE1ZDQ0MzViNS4uNTEzYzY3NTU0MzRlYzM3NGUzZDIwNjhhYmZlNzQ5ZWZjMWY5M2Y3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25H
dWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKICAgICAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhD
aGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7CiAgICAgICAgIHBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQxMTlhOTIyZjExMzIzNGNkOTJlODU0
ZGI0YjUyMWJhNTJhMGMyN2QuLjdjMzJhNWU0NjRmMGFhNzNhNTgzNmE1MmY5ZmI3MDA4YTIzOTFj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGlu
dmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyCiAg
ICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IGQzZDIx
YTU4ZDk5YTQ1YjczODE4MjdmNTdiOGJjMDI4Y2Y5NzNmZTUuLjNlZTUyMTEyZDJiZjRiNGIyYmQz
ZDMwMTQyMjNkNjg3N2QxNzY4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgCiAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0
ZERldmlhdGlvbkF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDA2YzVlZjc3YTcxMTdkN2MyYmNjYzY5NDY3Zjc1MDQ5YWIyMjE2N2YuLjc0ZTNiZjEwYmI2
MjY1OTBjYTk3YWY3NzljNzQ1NWIzNWFiMGJjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRh
dGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAgICAgICAgaW52YWxpZGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggN2ZmMTNhMDViZDcwODNj
MGYyMmVkZTBhZmZiNmUxNTExY2ZhMjc5NS4uMjVmNjU3NzdlMDZhODU4YzVkNDIyNDEzOTI0NDYy
MmViN2YwMDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0
aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphemltdXRoQXR0cgogICAg
ICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9uQXR0cgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCBhOTEyMjg3YjE4NTdiOWVj
ZDZhOTU1YzljZGM1OTY1YjM3YWUxMmYyLi4zMjYzYjIyYTAxYzg2MTdkMDBlZjc0OWQwNzdmZWE4
ZWZjNzhjZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQg
aW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewog
ICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IDk0ZjI0ZWYzOWU1
Nzk3MmU0MmY4NTJmODRjOTI3MTE3MjMwNmVhZjIuLmFmZGExM2RkNDFjMzhkMjAwMDQ4YmZlZGM4
NWY2OTM1ZGRjZjkwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRh
dGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6b3BlcmF0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7CiAg
ICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCA0ODExYjJlZjJlY2Q3MGY1N2M1ZjQ1
MDdmYmQwNTBmNzFjZjI3NjM4Li5hNGUzYTRjOTljMDNmYjBmOWEwMzZlZjg0N2I1OTZkMGE5NDk3
MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3Vh
cmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAg
ICAgCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmR4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7CiAgICAg
ICAgIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiNzJiZTIwZDkzNTUzN2U4MTYzNjQ2ZjVkNTg3
ZDQwMDMwODc3OGM0Li44MjI0YzI5NzJmZWY3ZjlhODg5NWM2ZGI0MTgxZTFjYzljMTM1MTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9u
R3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CiAgICAgCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxh
ckNvbnN0YW50QXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4
IGNjMDE3NDI4ODQxNTY4ZGEzZTczMzllZmNmMmY1ZWI0NWI0YjZlYjQuLjEzNDIxN2RkNzI0OTYx
YmJmNzM3YmI4NmUyN2YyMTMwODRlYzUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFy
ZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7
CiAgICAgICAgIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAppbmRleCA4YTM0NDA0MTU5OGQwYWNhY2VkNWEzYzJjZWFiY2I3ZjY1
N2YyNGM5Li5iMGRlMjZkNzUyOGRhNTc1YWYwMjUwNDkxZmI1NzkxNjU2Nzk2ODU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25H
dWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
ICAgICAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyCiAg
ICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpudW1PY3RhdmVzQXR0cgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IGY4MDc3NTIwNDMwZmE5MzY5OTQ2ZmZj
ZDQ2NzRhMWRiZmE3ZGJiMmEuLmFkOWFjMDI3NGY0Mzc0YTIwYzk3ZGU5OWI3OWZiNjNlODhmM2U0
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTE2NSw3ICsx
NjUsNyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBT
VkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRo
aXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggNTI4MTYyY2M2MDMzYWZm
MzEyNDNlOThmODcxNWZlN2QzMzA3M2U5OC4uYWM0ZDdmMmIyZDEyZmM5YzBlYmUxODgzM2VjZmRk
MjJlZTUyYmVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZH
RWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlz
KTsgICAgCisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
aW52YWxpZGF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcAppbmRleCA1MTA0MGQwZmJkNjFkY2ZkOTQ2ZWJkY2EwNzEzYmU4Y2NiNTIz
YWJlLi4zYWI2OGNkZGQ3YWVhMzY1NjM1MDE2NWVlNzgzZDBmZWMxNGI2ZmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25H
dWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
IAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyCiAgICAgICAgIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAppbmRleCA0MTcxNGY0Y2IxM2Y0MDUwNGMyMjRkZjJkOGZjZjdlYWQ2MGU3MTMzLi4zYzQ0
YjJhZjA3ZTljYzcxZDJiM2IwYTY1MTdmOTYwMTA3ODU0NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52
YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKaW5kZXggNTQzZWVmMzYzZDhkZmIwM2JjYmI2MGMzNDhmODA4MWM3YmEyZTAyZC4u
NDUxYzliZjY0MWNjZTNiNzE0Mjg5NGJkMWZhYTYyMDMzOWZkODU2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNW
R0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0
YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgCiAgICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBj
MGVlNjYzYTc3NzFhZjhmYjM1NjFmM2U0MTFjMmJkMDQ1MDE4OWNlLi5mY2E2OGZhYzMzOGM3NmM0
MzJhMDA0YjUxNTRhMWRlZjRlMTIwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRp
b25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChTVkdUZXN0czo6aGFuZGxlQXR0cmlidXRl
Q2hhbmdlKHRoaXMsIGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCA5MjI2NmExMDc4NmIyMGI5ODA1NDBmOWE5ZjNjNGFl
NTQ3ZGFhMWM4Li5iNjY4NDhhYTE4YWJjYjY0ZTEzYmExN2M4YmZlN2JlODJjMmYzMTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudElu
c3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCAy
YTY4OGU2MGNlMGU4N2ZjYWQzYWUwY2FkYjZlNjAxZDIxYWNiYmQxLi4zNDE2ZTlkNmM0MDNkNTY5
Y2RiY2Y0Mjg0YWVmZmY2M2ZhM2ZiMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZh
bGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKICAgICAKICAgICBib29sIGlzTGVuZ3RoQXR0cmlidXRlID0gYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OngxQXR0cgogICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6eTFBdHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCmluZGV4IGZhYWZkMjNmNjgxZmIwOGRlZTJkM2VjZDk1NDIyODhjNWE5
ZGYyYWIuLmJhZjcxYmYxZDRmMDYwOWUxNDg0YTU4YzM3MzU3MGU0NmE5OTI3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0
aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgCiAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAppbmRleCAyYjM3YzUxNDk5NzVhNGZmNDk5
MGRmNjFiNTViZTgyMTNlNDIyNjRiLi5jZTY4MzkzNTAyMDU3NmI1OTVhZDBhMTJkN2FmMGE5Mjhl
NDE1ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcApAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
U1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0
aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAg
IGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKaW5kZXggMDY0ODA3YTRlMTRhOWFkMmYxMmU5MjEyZmUzODIxMTRkNjE3OWMzYy4u
YmJmZmRjMWVjYjhjMDM2ZDU2M2U1YjgxYTZjYTkzNDIwOGU1ODA2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU1ZHTWFy
a2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6
SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgCiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpyZWZYQXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVm
WUF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDU2Y2JhOWQ2ZDBi
YzE2ZTk4YmIzNGQ4Mzk1MjlkZjE3NzQ2ZjU4NmUuLmNiMzExMjQ1ZjJhMzAxY2JiNTBhNTBmNTUy
MzNlMWY3OWY0NjU0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1
YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgogICAgICAgICB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eUF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmlu
ZGV4IGMxYTYwMDlmZWVhZTJmODg2ZDhhZDgyYzA1MDhjY2YwZDAwZWM5ZDguLjEzNjg2NDI3NzRj
MzFhMDU2ZDkxN2E4NzlkZGUwYmQ0ODdlMDRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJk
IGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogCiAgICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAKaW5kZXggM2JjNDI1NjE1ODJiMjVhM2UzOWJkYzhkOWU1OGZhZTMy
YWUzYWJjMC4uMTRhNTc1NzdiMDQ4ZTkwNDYyMTYyYWIzYjI2MDdhMWYzZDlhNmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAg
dm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1l
bnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7Cisg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
Ojp5QXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKaW5kZXggODU4ODJlNWMy
MzMwNmJlNmFmYzA4MjcwZjM3N2VlMjMwZWJiYjVjMi4uODgxOWM2YzJhYjMzMDc0MzEwMTUxMzMz
OGE1ZjAwODcyYjVlMGIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9u
R3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPih0aGlzLT5y
ZW5kZXJlcigpKTsKICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA2NzdlY2FhODM3NGJhZGJlYzBiOTQ1
MjdhMTRjMDBmZGM2NDE1NzMwLi45M2RlOTI4ZjZiYWJlNTg1NWIzZmViYTU0ZDI2YmZhNDY4ZWI5
MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1
YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwogICAgIAogICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0
aW9uKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXgg
ODEyYmEyNjQ3ZjU0OWMyMzMxYWQ3NjNiMzMyMjAyYTQyOTAyYThjNy4uMDdmNDUwNDc1ZmU0NTJi
NjMwNjFkMzAwNDI1NTA4YmNkNTJkMzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52
YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCiAgICAgICAg
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCmluZGV4IDllZDEzNmU2NTcxOGIyN2Q2NzkxMDcyYjlmZjk5YzY2N2IyOTNjMGQuLmVi
OGEwMjQwNzNjZmZlM2RkNmFjNDllOTJmNjFmZDZhNTZkNTk5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgICAgICBvYmplY3QtPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CiAgICAgfQogCi0gICAg
U1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0
aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAg
IGlmICh1cGRhdGVSZWxhdGl2ZUxlbmd0aHNPclZpZXdCb3gKICAgICAgICAgfHwgU1ZHTGFuZ1Nw
YWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCmluZGV4IGIzZmNiNWVkNTk2ZjBiZWE1NTg3ZjczNTE2OTg4Y2JhNmE2MGZj
YWMuLjIyYjQyYjA4MDE2ODU1YzY0ZGFjZGZkODdkZjczMjNlODM3YzRkOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTVkdT
Y3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNl
OjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpvbmVycm9yQXR0cikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXgg
YjBlNThlMDQwMTBmNjYyYjZjZDk2YzIyZjkxMTNlOGJiNzEwNjAzOS4uOWU4YjAzOTlhYTFkZWJl
NjA0YmNlOWNjNzM2Yjc3NmRkZDRlNWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1l
bnQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFs
aWRhdGlvbkd1YXJkKHRoaXMpOworICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CiAg
ICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAppbmRleCA5Zjk2ZGUxMTM5NGU2MDZlNTQ0ZmY0MjM1
NDQ5ODdiNWFkZDliOTQ1Li40NjE0N2VkODQ1Nzk3NmExYjZkMTY5OTE0MjlmN2VjOGZkZmQ3ZDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7
CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICAvLyBF
dmVyeSBvdGhlciBwcm9wZXJ0eSBjaGFuZ2UgaXMgaWdub3JlZC4KICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAKaW5kZXggZTI2YWY0NmY1ODM4YTZlNGQxZTk5MmFmMTlmMDhkZDQ4MzExYmJmMC4uNzVmYWFh
OWNiN2JiMDQ4MzYzNjY1YmRhZTgzMjkzM2UxNzE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9u
R3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAyYzY0YTBl
ZDlkODg1NDJlYmFiYzY2ZThhMTY0ODQ3ZWRlZjVhNDk1Li43OTIzYzBlMTAxNWMyMmRiNjRiOGNj
MDA2YzgyOWY2MzY3ZWU5MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlk
YXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKKyAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dGV4dExlbmd0aEF0dHIpCiAgICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExl
bmd0aC52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5k
ZXggZDFkNGNkMzM1OTVkZGYxNTcyMzA0YTM4NThlM2JlMzA1NWY0YjllOS4uZTBmOGJjYTU5MzFh
MjhmMjhhYTA5ODRlY2MxZTMyMWE3NWM1NGM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxp
ZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CisgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3Bw
CmluZGV4IGJiMTI3NDYxM2RjN2FiYzgzYWI1MTdhZmEzZWZhNDdjZTBjZjIyNGYuLjA1MzYyZDM1
NTljOTIwNTUxYTk4OGZlYzlhOGJlNGE1Mzk3NjIwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZH
RWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlz
KTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGJv
b2wgdXBkYXRlUmVsYXRpdmVMZW5ndGhzID0gYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0
dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBkMDBjY2RlZGJhZGYwMzZk
NDc2MDUxZjBmOTkxMmE1Y2ZjMWIwYjcwLi5jN2IyZjMxZGQ2ZGRkYjc1OWNkZTI0YTZmMmExZGNl
OTc5YjZmMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0yMjMsNyAr
MjIzLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU1ZH
RWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlz
KTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3Jt
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5jcHAKaW5kZXggYzI5OTIyZGU5NDQ4OGQ3MGE5NDI0YzAzNTFiOGU3Zjk5ODhjNjE4ZS4uYmQx
NGE3YjkwY2I5Y2YwNTA0YmFiOGIxMGRiNzE3NDk1ZmI4NGJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBA
QCB2b2lkIFNWR1NNSUxFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphdHRy
aWJ1dGVOYW1lQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlTmFtZShjb25zdHJ1Y3RRdWFsaWZp
ZWROYW1lKHRoaXMsIGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRy
KSkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIp
KSB7Ci0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxp
ZGF0aW9uR3VhcmQodGhpcyk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogICAgIH0gZWxzZSBp
ZiAoaW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YmVn
aW5BdHRyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>