<?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>146995</bug_id>
          
          <creation_ts>2015-07-15 22:56:51 -0700</creation_ts>
          <short_desc>Reduce PassRefPtr in WebKit2 - 3</short_desc>
          <delta_ts>2015-07-19 06:18:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109829</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-15 22:56:51 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109832</commentid>
    <comment_count>1</comment_count>
      <attachid>256893</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-15 23:04:20 -0700</bug_when>
    <thetext>Created attachment 256893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109864</commentid>
    <comment_count>2</comment_count>
      <attachid>256900</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-16 07:23:41 -0700</bug_when>
    <thetext>Created attachment 256900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110037</commentid>
    <comment_count>3</comment_count>
      <attachid>256940</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-16 17:51:05 -0700</bug_when>
    <thetext>Created attachment 256940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110050</commentid>
    <comment_count>4</comment_count>
      <attachid>256944</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-16 18:51:39 -0700</bug_when>
    <thetext>Created attachment 256944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110193</commentid>
    <comment_count>5</comment_count>
      <attachid>256944</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-07-17 13:36:03 -0700</bug_when>
    <thetext>Comment on attachment 256944
Patch

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

&gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1333
&gt; -    return loader.release();
&gt; +    return loader.leakRef();

Doesn&apos;t this introduce a leak?
Same question for every other instance of release() -&gt; leakRef() in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110338</commentid>
    <comment_count>6</comment_count>
      <attachid>256944</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-07-17 22:22:01 -0700</bug_when>
    <thetext>Comment on attachment 256944
Patch

&gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1333
&gt; -    return loader.release();
&gt; +    return loader.leakRef();

This is not the correct idiom. It should be sufficient to write this line as:

return loader;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110344</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-07-17 23:02:24 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 256944 [details]
&gt; Patch
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1333
&gt; &gt; -    return loader.release();
&gt; &gt; +    return loader.leakRef();
&gt; 
&gt; This is not the correct idiom. It should be sufficient to write this line as:
&gt; 
&gt; return loader;

err, I meant to write:

return WTF::move(loader);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110355</commentid>
    <comment_count>8</comment_count>
      <attachid>257026</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-18 01:49:22 -0700</bug_when>
    <thetext>Created attachment 257026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110356</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-18 01:50:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 256944 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1333
&gt; &gt; &gt; -    return loader.release();
&gt; &gt; &gt; +    return loader.leakRef();
&gt; &gt; 
&gt; &gt; This is not the correct idiom. It should be sufficient to write this line as:
&gt; &gt; 
&gt; &gt; return loader;
&gt; 
&gt; err, I meant to write:
&gt; 
&gt; return WTF::move(loader);

Oops, that was my fault. Thank you for pointing it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110360</commentid>
    <comment_count>10</comment_count>
      <attachid>257028</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-18 04:17:36 -0700</bug_when>
    <thetext>Created attachment 257028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110362</commentid>
    <comment_count>11</comment_count>
      <attachid>257029</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-18 06:06:50 -0700</bug_when>
    <thetext>Created attachment 257029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110367</commentid>
    <comment_count>12</comment_count>
      <attachid>257029</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-07-18 08:58:50 -0700</bug_when>
    <thetext>Comment on attachment 257029
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:251
&gt; +    return WTF::move(page);

It is unnecessary to use WTF::move() here. I would write this line as:

return page;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110392</commentid>
    <comment_count>13</comment_count>
      <attachid>257033</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-07-18 15:33:55 -0700</bug_when>
    <thetext>Created attachment 257033
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110404</commentid>
    <comment_count>14</comment_count>
      <attachid>257033</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 17:18:07 -0700</bug_when>
    <thetext>Comment on attachment 257033
Patch for landing

Clearing flags on attachment: 257033

Committed r187002: &lt;http://trac.webkit.org/changeset/187002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110405</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 17:18:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110470</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-07-19 05:42:55 -0700</bug_when>
    <thetext>This broken the Windows build:

&lt;https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/71645/steps/compile-webkit/logs/stdio&gt;

..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(954): error C2440: &apos;initializing&apos; : cannot convert from &apos;WTF::PassRefPtr&lt;T&gt;&apos; to &apos;WTF::Ref&lt;T&gt;&apos; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          with
          [
              T=WebDocumentLoader
          ]
          No constructor could take the source type, or constructor overload resolution was ambiguous
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(956): error C2664: &apos;WebDataSource *WebDataSource::createInstance(WebDocumentLoader *)&apos; : cannot convert argument 1 from &apos;WebDocumentLoader&apos; to &apos;WebDocumentLoader *&apos; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(956): error C2664: &apos;COMPtr&lt;WebDataSource&gt;::COMPtr(WTF::HashTableDeletedValueType)&apos; : cannot convert argument 1 from &apos;AdoptCOMTag&apos; to &apos;WebDataSource *&apos; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(1051): error C2556: &apos;WTF::PassRefPtr&lt;WebCore::Frame&gt; WebFrameLoaderClient::createFrame(const WebCore::URL &amp;,const WTF::String &amp;,WebCore::HTMLFrameOwnerElement *,const WTF::String &amp;,bool,int,int)&apos; : overloaded function differs only by return type from &apos;WTF::RefPtr&lt;WebCore::Frame&gt; WebFrameLoaderClient::createFrame(const WebCore::URL &amp;,const WTF::String &amp;,WebCore::HTMLFrameOwnerElement *,const WTF::String &amp;,bool,int,int)&apos; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          c:\cygwin\home\buildbot\slave\win-release\build\source\webkit\win\webcoresupport\WebFrameLoaderClient.h(183) : see declaration of &apos;WebFrameLoaderClient::createFrame&apos;
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(1051): error C2371: &apos;WebFrameLoaderClient::createFrame&apos; : redefinition; different basic types [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          c:\cygwin\home\buildbot\slave\win-release\build\source\webkit\win\webcoresupport\WebFrameLoaderClient.h(183) : see declaration of &apos;WebFrameLoaderClient::createFrame&apos;
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(1168): error C2556: &apos;WTF::PassRefPtr&lt;WebCore::Widget&gt; WebFrameLoaderClient::createPlugin(const WebCore::IntSize &amp;,WebCore::HTMLPlugInElement *,const WebCore::URL &amp;,const WTF::Vector&lt;WTF::String,0,WTF::CrashOnOverflow,16&gt; &amp;,const WTF::Vector&lt;WTF::String,0,WTF::CrashOnOverflow,16&gt; &amp;,const WTF::String &amp;,bool)&apos; : overloaded function differs only by return type from &apos;WTF::RefPtr&lt;WebCore::Widget&gt; WebFrameLoaderClient::createPlugin(const WebCore::IntSize &amp;,WebCore::HTMLPlugInElement *,const WebCore::URL &amp;,const WTF::Vector&lt;WTF::String,0,WTF::CrashOnOverflow,16&gt; &amp;,const WTF::Vector&lt;WTF::String,0,WTF::CrashOnOverflow,16&gt; &amp;,const WTF::String &amp;,bool)&apos; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          c:\cygwin\home\buildbot\slave\win-release\build\source\webkit\win\webcoresupport\WebFrameLoaderClient.h(185) : see declaration of &apos;WebFrameLoaderClient::createPlugin&apos;
..\..\win\WebCoreSupport\WebFrameLoaderClient.cpp(1168): error C2371: &apos;WebFrameLoaderClient::createPlugin&apos; : redefinition; different basic types [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          c:\cygwin\home\buildbot\slave\win-release\build\source\webkit\win\webcoresupport\WebFrameLoaderClient.h(185) : see declaration of &apos;WebFrameLoaderClient::createPlugin&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110471</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-07-19 06:18:47 -0700</bug_when>
    <thetext>Attempted build fix for Windows in r187010:  &lt;http://trac.webkit.org/r187010&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256893</attachid>
            <date>2015-07-15 23:04:20 -0700</date>
            <delta_ts>2015-07-16 07:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150716150311.patch</filename>
            <type>text/plain</type>
            <size>101128</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UxODNkMTZhZDFiY2Vh
YzU2YmEwMWUwZjhmYWM5MWMxODBiOTQ2ZC4uNzc1NDZiZWNmN2UwODk0ZjdmMzM0YjRjZTBkZTgx
YmJkYzFhZmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTUgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFRhZyBXZWJHTCBsYXllcnMgd2l0aCBzUkdC
IGNvbG9yc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkNThjNzJhZmRkNDA0MDE0ZTk3ZWY4MTVl
ZjJjMGVjM2E0YTZhYTE3Li5hNTI4OGFkZjgzZThiNTk5NGY0MGE5Y2MzNzk3ZTUxNDFlNjQwZjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTUgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVm
UHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBv
ZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVu
ZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB3
a1BvcHVwTWVudSBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2U7IGl0J3Mgbm90IGNhbGxlZCBm
cm9tIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAyZGFjMGU1ZmU3NGQwOTgzYzZjNGJiOThj
MWU3Njk0OWI0MDVmYjFmLi4yMzA1ODk0OTJlMjQyM2UyZDRkYmU4ZjIzMTNkNzc1MmM1MmIzNDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTUgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVm
UHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBv
ZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVu
ZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTUtMDctMDkg
IFBlciBBcm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEFk
ZCBtZW1vcnkgcHJlc3N1cmUgaGFuZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OTQwOWU5M2ZkNTA3MDJj
ZmIwYTkxZmJlYmZiN2I0YzZkYjE1NzIwLi45YWQxYjE5NDIyZDk3MGYzMDBkNTRjYzIxM2YyZDE2
ODMxOTI1Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3IEBACisyMDE1LTA3LTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFz
ZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oOgorICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZh
Y2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2Vi
UHJvdGVjdGlvblNwYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2Fs
bGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJL
ZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdF
Zmw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdFZmw6OmNy
ZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291
cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW46OmZyb21OUFApOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c25hcHNob3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
OjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpsaXZlUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6dG9IaXN0b3J5SXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxvb2t1
cFRleHRBdExvY2F0aW9uKToKKwogMjAxNS0wNy0xNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVuYW1lIFBBQ0tBR0VfTE9DQUxF
X0RJUiB0byBMT0NBTEVESVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggOTU1YTljZjlkZGM2ZDUyYTUxNThkMzRhZmVkYzlhOWEwZTViNjE4Yi4uYThkY2NlNWZlMzA1
ZTg5MzE2Mjc3ODZhZTU4NDU0ZjkzMGYwYWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9
OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9y
YWdlTmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGUgeyByZXR1cm4g
YWRvcHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJldHVybiBhZG9w
dFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICB2aXJ0dWFsIFJlZlB0
cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92
ZXJyaWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7
IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIG92ZXJyaWRlCkBAIC0xNDYsMTQgKzE0NiwxNCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxFbXB0eVBvcHVwTWVudT4gbV9wb3B1cDsKIH07CiAKLVBh
c3NSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCopIGNvbnN0CitSZWY8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
bXB0eVBvcHVwTWVudSgpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5
Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3QKK1JlZjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U2VhcmNoUG9wdXBNZW51KCkpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CkBAIC0xODMsMTkgKzE4MywxOSBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZQogewogfQogCi1Q
YXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRlcj4gRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAg
cmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwog
fQogCi1QYXNzUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkKK1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpCiB7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCitSZWZQdHI8V2lkZ2V0PiBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQ
bHVnaW4oV2lkZ2V0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA1Mzgx
MjAzOGJmNmRlNWQwYTgyNzAxNTdjY2YxN2RiNmU3YzEzMTQ5Li5mNmJiOWQzMmEwN2M1ODI1MzQy
ZmYxODA4YWM4MDQ2YmYxZTExZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CkBAIC0xMTgsOCArMTE4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVt
V3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJl
Y3Rpb24oKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNP
cGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCop
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+
IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGll
bnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxTZWFyY2hQb3B1cE1lbnU+IGNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgfQogCkBAIC0zNDMsNyArMzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFVSTCYpIG92ZXJyaWRlIHsgfQogCkBAIC0zNzAsOCArMzcwLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3Qg
VVJMJiwgYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0Kikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJ
bnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI3MjAxZWU4NjFjMDY3NWUyZmY3ODRmZjg4ZDRkNzdj
YzdkZjg0ZWIuLjI0YmFiODdjMDc2MTViOWQzYmMyM2VlZjMxZmE0OTVmNjEyOTRhMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIEZyYW1l
TG9hZGVyOjp+RnJhbWVMb2FkZXIoKQogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiB7CiAgICAg
Ly8gVGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0
aWFsIGVtcHR5IGRvY3VtZW50LgotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50
LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2VkVVJMU3RyaW5n
LCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKKyAgICBzZXRQb2xp
Y3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJl
cXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0
YSgpKS5wdHIoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURv
Y3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwogCkBAIC0xMzE1LDE2ICsxMzE1LDE2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCkK
ICAgICBpZiAoIXJlcXVlc3QuaGFzU3Vic3RpdHV0ZURhdGEoKSkKICAgICAgICAgcmVxdWVzdC5z
ZXRTdWJzdGl0dXRlRGF0YShkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS51cmwoKSkpOwogCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LnN1YnN0aXR1dGVEYXRhKCkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgcmVxdWVzdC5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVy
ID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVxdWVzdC5zdWJzdGl0dXRlRGF0YSgpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgcmVxdWVzdC5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogCi0gICAgbG9hZChsb2FkZXIuZ2V0KCkpOworICAgIGxv
YWQobG9hZGVyLnB0cigpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSB0
eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKQogewotICAgIFJlZlB0cjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVz
dCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBhcHBs
eVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIs
IGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwg
ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKKyAgICBhcHBseVNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgYWN0
aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CiAKICAgICBpZiAobG9ja0hpc3Rv
cnkgPT0gTG9ja0hpc3Rvcnk6OlllcyAmJiBtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2Fk
ZXItPnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShtX2RvY3VtZW50TG9hZGVyLT5k
aWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSA/IG1fZG9jdW1lbnRMb2FkZXItPnVybEZvckhp
c3RvcnkoKS5zdHJpbmcoKSA6IG1fZG9jdW1lbnRMb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeSgpKTsKQEAgLTEzMzMsNyArMTMzMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0CiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCi0gICAg
bG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxv
YWRlci5wdHIoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVu
dExvYWRlcikKQEAgLTE1NDQsMTQgKzE1NDQsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
V2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAvLyBXZSBz
aG91bGQgYXNrIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gaW4gdGhpcyBjYXNlLgogICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwogCi0gICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRl
cihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwot
ICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIo
KmxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQu
Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJM
KHJlcXVlc3QudXJsKCkpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgc2V0UG9saWN5RG9jdW1lbnRM
b2FkZXIobG9hZGVyLmdldCgpKTsKKyAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIu
cHRyKCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQpAQCAtMTU3Miw4ICsxNTcyLDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQpCiAKICAgICAvLyBDcmVhdGUg
YSBuZXcgZG9jdW1lbnQgbG9hZGVyIGZvciB0aGUgcmVsb2FkLCB0aGlzIHdpbGwgYmVjb21lIG1f
ZG9jdW1lbnRMb2FkZXIgZXZlbnR1YWxseSwKICAgICAvLyBidXQgZmlyc3QgaXQgaGFzIHRvIGJl
IHRoZSAicG9saWN5IiBkb2N1bWVudCBsb2FkZXIsIGFuZCB0aGVuIHRoZSAicHJvdmlzaW9uYWwi
IGRvY3VtZW50IGxvYWRlci4KLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKLSAgICBhcHBseVNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIsIG1fZG9jdW1l
bnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKyAg
ICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9h
ZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJl
cXVlc3QudXJsKCkpKTsKKyAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05l
d0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0ID0gbG9hZGVyLT5yZXF1ZXN0KCk7CiAKQEAgLTE1ODYsNyArMTU4Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgbG9hZGVyLT5zZXRP
dmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CiAg
ICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIGVuZFRvRW5kUmVs
b2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJl
bG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBlbmRUb0VuZFJlbG9hZCA/IEZyYW1lTG9hZFR5
cGU6OlJlbG9hZEZyb21PcmlnaW4gOiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFs
bExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Q
b2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGMx
M2ExOTYxZjQyY2I4N2Q4MGMwNWZmMzFiZTRjYmI1NGZlNGE1NjIuLmM5ZGZmMjJiOTdmNGZiYzNm
YTA2NGE5NTNlYjA1N2VjMGE4MzlkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yNTAsNyArMjUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9IDA7CiAKLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKKyAgICAgICAg
dmlydHVhbCBSZWY8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiwgY29uc3QgVVJMJikgPSAwOwogCkBAIC0yNzEsOCArMjcxLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsK
KyAgICAgICAgdmlydHVhbCBSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2lu
KFdpZGdldCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggOTA3MTMxMGJlMDYwNWIxODE5ZDJmNjNj
Yjg2NDU4NzI4Njk0Nzc2Ni4uMWFlM2ZiY2ExM2NkYWQ4YTBjNThiMzJiMmUzZWMyMmUwNjViYWJj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5SZXNvdXJjZUxv
YWRTY2hlZHVsZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChG
cmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKGZyYW1lLCByZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRl
cikKQEAgLTEyNiwxMiArMTI2LDEyIEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhCiAgICAgaWYg
KCFsb2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICNlbmRpZgotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBsb2FkZXI7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBm
cmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSog
ZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRl
KGZyYW1lLCBjbGllbnQsIHJlcXVlc3QpOworICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgY2xpZW50LCByZXF1ZXN0KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxv
YWQobG9hZGVyLmdldCgpKTsKICAgICByZXR1cm4gbG9hZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDlmYjlmYjRhNzUwNTkyZDNjMjk4
Y2VhZDg2NDM3ZTBjMjI0Yzg1NDMuLmIwNWRhMDQ0OWFiZjcxMzE1ODNhZTIwMWFlMDQzYThiOGVl
ZDg2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKQEAgLTUxLDggKzUxLDggQEAgY2xhc3MgUmVzb3VyY2VMb2FkU2NoZWR1bGVyIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGFzc1JlZlB0cjxOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCByZW1vdmUoUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciosIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBjcm9z
c09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGly
ZWN0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDA4MDgzMTY3MDc1Mjg0Y2E0NDRjZTU0MzE1MjllYTAzNjc3MjRlYWQuLjAzZjA1ODg1M2Rm
Y2M1YmIxN2NmOTUyZDhmZjI1NDExZGVhMTExNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBTdWJyZXNvdXJjZUxvYWRl
cjo6flN1YnJlc291cmNlTG9hZGVyKCkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBzdWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCByZXNvdXJj
ZSwgb3B0aW9ucykpKTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFt
ZSogZnJhbWUsIENhY2hlZFJlc28KICNlbmRpZgogICAgIGlmICghc3VibG9hZGVyLT5pbml0KHJl
cXVlc3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3VibG9hZGVyLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gc3VibG9hZGVyOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggZGYwNDMy
YWRjYTE0Yjk4YjQ0MDFiYWI0YjIyZmY4NTA5ZmY1ZTM5YS4uYTA4OTAxYjU1NWQ4NGVhNDZjNDVl
ZTZlOTg4ZTVjNGZiOGUzZGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCiBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IGNyZWF0ZShGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgQ2FjaGVkUmVzb3Vy
Y2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
KTsKIAogICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCmluZGV4IDQ3ODZlYzgwNWU1OWI4ODRhNjA3MzdmOTA0YTI4MDRhMGFkY2Nk
ZDguLmE1MzViZTQ4YjBhNzc0ZTExZGVkNjAwNGNmZDM4MThkYjE0ZDhlMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzc1LDggKzM3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigp
ID0gMDsKICAgICAvLyBDaGVja3MgaWYgdGhlcmUgaXMgYW4gb3BlbmVkIHBvcHVwLCBjYWxsZWQg
YnkgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpLgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVu
ZWRQb3B1cCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBj
cmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPFNl
YXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA3OTI3YTQ5YjQz
ODUzZGNjMTMxZTdiNzU2NzgyYTQwMjc0ZmIzNTQ4Li4wNzZkMDFiZTk0MDVlMWMwNDE1ODkwNTk3
OWFlNjRkZjEzY2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogY2xhc3MgVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVi
bGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8q
IHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAyZTc2ZDdjZGQwZTE4
OWFlZGZmNjhiMTEyOWZkMWE3ODIzYThiYTZjLi4wYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBmN2Zl
N2EyZTI2M2FjYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNDIsNyArMTQyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVy
ZU1hcHBlckxheWVyKiA+JiBhcnJheSk7CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0
dXJlKCkgOiAwOyB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVy
biBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9CiAgICAg
RmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3Mg
KyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBib29s
IGlzQW5jZXN0b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcAppbmRleCBiMzNiYmI2MjkzMDA1ZWZmNmFmMzc2YzQxNDE4
ZWRhYzU1MDhhMTBhLi5lOTdmY2Q4OWMyYzgxYmZmMTc4ZWE5YjVjNGZlM2U4NjYwNGM0MTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCkKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2Ut
PnN3YXBCdWZmZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBhbiBlbXB0eSB0ZXh0
dXJlLCB3ZSBzaG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBpbnRvIGEgQml0bWFwVGV4
dHVyZS4KICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0dXJlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCAzMWQxODE5MmNk
M2VmMGFiNDY4NjgxY2JmZTVhZGZlOTY4MzUzOGJiLi4yMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0
OWU2ZDAyZDZjYTcwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KICAgICB2
b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAg
IHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5o
CmluZGV4IDY0OGU3MWYwMGEwOWFhZjdiYmZlMzkyODBlYzBlYTc3ZWIxNDg2ZGYuLjdlMjIxMmU1
MjVmNDJmNTVkZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVN
YXBwZXJUaWxlIHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgaW5saW5lIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAg
ICAgaW5saW5lIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAg
aW5saW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVy
ZSA9IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGQzNTcxMGE2OTI4MWE4MjA2MTZkZTMxMjEzM2M0ZDNj
N2ZmOTE3ZTguLjM2MjVjMTQ4NjQzMWQ0NDVhMmE5OTEzMjBlZjUxMDFmNDVmZTE2ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgdGlsZS51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250
ZW50c0ZsYWcpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHRpbGUgOiBtX3RpbGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHR1
cmUgPSB0aWxlLnRleHR1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuaAppbmRleCAyZjc5MmRjZjk0ODQ4ZDRiOGFiYjBhMjlmMTBkODMxODRlMzBmNTlk
Li40ZjNjY2U4OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRl
eHR1cmVNYXBwZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291
bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
LmgKaW5kZXggMDljYTNkZTA0YmVjZDY1NzliYTI1NWZiYTFlMzMyNmFjMTFhNWJiYi4uYmRlOTVm
NTE4MDc3OWFmYTQ4MTllOTNiMzZmOTA1NTY4OWVlNDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgU3RvcmFnZUFy
ZWE7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5h
bWVzcGFjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggN2Nm
MTU4Zjk2YjYzOGI3Mjk0MDI2NDA5ZTE5NzJlMjQ1NjBiYjBkNy4uNWZmOTJkZWU3NjcwYWM4YjI1
M2ZhYTdiNWI5ZGMzY2E1MWY3MDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xOTcsOSArMTk3LDkg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50KiwKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5n
JiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1h
cmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAogICAgICAgICBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNDFk
MDE5YzVlYmIwN2JmZmJlNGNkZGY3NjhiODc1NGEzOTI2MzY3My4uMjJiZGE4ZWQ1ZmJhM2I3MTQ3
ZTk5MDc5NjVkZWQyYzA3YWVmYTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEzMjIsMTUgKzEz
MjIsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVm
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdlYkRvY3VtZW50TG9hZGVyTWFjPiBsb2Fk
ZXIgPSBXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRh
KTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlciA9IFdlYkRvY3VtZW50TG9h
ZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogCiAgICAgV2ViRGF0YVNv
dXJjZSAqZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJjZSBhbGxvY10gX2luaXRXaXRoRG9jdW1l
bnRMb2FkZXI6bG9hZGVyLmdldCgpXTsKICAgICBsb2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNv
dXJjZSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSk7CiAgICAgW2RhdGFTb3VyY2UgcmVs
ZWFzZV07CiAKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVy
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggMGNiZDE5M2U4ZmQwZmRhZDY1NzRmM2Q1ZjRiMTgyZDFkYTFmYmE4OS4uODc3NDhhZDIyYTNm
NDg5N2E4NTBlMWQ0NTBhOTViMTU5YjRmNTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTQ5
LDE0ICs5NDksMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotUGFzc1JlZlB0
cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9h
ZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgUmVmUHRyPFdlYkRv
Y3VtZW50TG9hZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3Qs
IHN1YnN0aXR1dGVEYXRhKTsKIAogICAgIENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNl
KEFkb3B0Q09NLCBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsK
IAogICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1
cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRs
ZSwgY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4N2I2ZDUxNmFjMzlhOWEwMmVh
YzVlN2I1MWVhNzgxYzY2NDMyMTk2Li44MTlkYWYzMzQ1YzQwYmM2MmIzMjc2Y2U3YjM4MjZjMjlj
NWQzM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIm
KSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3Jl
OjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IDRj
MzEwM2Q1ZTIwNzc3NjFhZTdiYzNkYjdiOGYxODY0NDNkNTU1ZTMuLjYxNjUzY2FjMTc4ZDM0ZmFh
NDY5ZmYxMDZlNTA1NGY3ZDc3OTAzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRGF0
YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKIH0KIAotUGFz
c1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKK1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faWRiRGF0YWJhc2VzLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIFBhc3NSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zCiAKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlID0gVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZShpZGVudGlmaWVyKTsKICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gZGF0YWJhc2UuZ2V0KCk7Ci0gICAgcmV0dXJuIGRhdGFiYXNlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gZGF0YWJhc2U7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpyZW1v
dmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5k
ZXggNTlhNjE4YmU0MDU5NWMyOGMyMmJkYjJlOWNhMjE4MTc5NmQyM2M2OS4uNDdjNjkyNTg2Y2Zm
OWQzMGU5Y2Q3MTg2MzQ0Y2I5MzdmMGZlZjY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKLSAgICBQYXNzUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1
ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlE
QkRhdGFiYXNlJik7CiAKICAgICB2b2lkIGVuc3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0
aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA0YTlmNDY3ZTg3OGRlODFj
NjYxYmRlZDM1ZDc2MTY2MzA2MTFjNDdjLi5hNTZkOTI1MDNhOGU5MGU5OTkyY2Y3NzBhMjZlYzIy
MzJhMjRmN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC05Nyw5ICs5Nyw5IEBAIHZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2NlCiAgICAgbV9pbml0aWFsaXphdGlvblJlcGx5ID0gcmVwbHk7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5
ZWRSZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgp
CitSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRl
bGF5ZWRSZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBs
eSgpCiB7Ci0gICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlv
blBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5ZWVkMmU3MTE4YzcxZjg3ZDM2ZTlmZDJlNmZiMDQ4
MjhjNzNhNzdjLi4yZTMzM2Y0ZmM3YTBkYjg5MjM4Mjk1M2I0ODIwMjIzMWY1OGUyYWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbml0aWFsaXppbmco
KSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6aW5nOyB9CiAgICAgCiAgICAgdm9pZCBzZXRJ
bml0aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4pOwotICAgIFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gdGFr
ZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKKyAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3ND
b25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gdGFrZUluaXRpYWxpemF0aW9u
UmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UGFpbnRUaW1lcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGM2NmQyOGI3NTM5NzRhMDU3
NDBjYjZhZjY4ZTJjNDg0ODFkOTNjMzIuLjUxZGIwOGNlMzYwYmY4YWNmYjYwYTNlYmM4MDA4ZTBm
MmE5NDAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1
aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKICAgICBpdC0+dmFsdWUuc2V0
QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKIH0K
IAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4
dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnRleHR1cmUoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFs
dWVzKCkpIHsKICAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0aWxlLnRl
eHR1cmUoKTsKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZTsKICAgICB9CiAKLSAgICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigp
OworICAgIHJldHVybiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKIH0KIAogdm9pZCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBkOTAzNDlkNjNhNWY4YjQ2ZjY2NmNl
YzYyMTQ2YjYyNWMwNDNjM2I0Li41ZGFmYTAxMTI4N2U5YWNhNDI3NDQyYjNlZDY3YzdhZDkzYzVk
YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTYxLDkgKzYx
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVGlsZXMoKTsKICAgICB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGls
ZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsg
fQorICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBj
b21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IDZiOGQxMWRhNzI3ZTBhZDU0
NWM5ZWUzYzVmNmY3NDRiOWUwODRhZWEuLjBkZDMwNjRlZTNiODkzZjViOGYwMmU4ZjNkMjA4MDMx
MDVjZTZlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtNjks
NyArNjksNyBAQCBib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoSVBD
OjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhbmRsZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBm
bGFncykKK1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Mg
ZmxhZ3MpCiB7CiAgICAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKQEAgLTc5LDExICs3OSwxMSBAQCBQYXNzUmVmUHRyPFdl
YkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgcwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgc3VyZmFjZSA9IGNyZWF0ZShz
aXplLCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgKGZsYWdz
ICYgU3VwcG9ydHNBbHBoYSkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBTaGFy
ZWFibGVCaXRtYXA6Ok5vRmxhZ3MpKTsKIAotICAgIHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotUGFz
c1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpG
bGFncyBmbGFncykKK1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKIHsKICAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1
cmZhY2VGbGFncyA9CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2FyZVdy
aXRlCkBAIC05Nyw3ICs5Nyw3IEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0CiAgICAgLy8gSW4g
dGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxs
aW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFwLgogICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+
IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwog
ICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQVNTRVJUKHN1cmZhY2UpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlLnJlbGVhc2UoKSkpOwpAQCAt
MTQ2LDcgKzE0Niw3IEBAIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6fldlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKK1JlZlB0cjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhh
bmRsZSYgaGFuZGxlKQogewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGlmIChoYW5k
bGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKQEAgLTE2MSw3ICsxNjEsNyBA
QCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYQogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKTsK
ICAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywg
Yml0bWFwLnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmlu
ZGV4IDdkYzE2ZjJjMDQzYmZiNWZjNGQzOTIzZTMzMWVkNWFjMWY2MzQzZmEuLjhhMThmNjA3Njk2
YmZhMGI3MGNkYTJjMGRiNzg0Nzk2YWU0ODY2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oCkBAIC02MSwxMCArNjEsMTAgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBD
cmVhdGUgYSBuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEg
R3JhcGhpY3NTdXJmYWNlIG9yIGEgU2hhcmVhYmxlQml0bWFwIGFzIGJhY2tpbmcuCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBD
cmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOworICAg
IHN0YXRpYyBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgSGFuZGxl
Jik7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFu
ZGxlJik7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCiAgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKICAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFj
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgRmxhZ3MpOwogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZl
cmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCiAgICAgc3RhdGljIFJlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IGU0NTg4NmE1ZGJiYjBm
NTEyN2Q1MzIwZmE5M2FjNzM4MTc2ZjM3ZjYuLjZlOTViMGZlYTZlZDQ2MGFkNmMzZDA2MzI1Yzgx
ZmYyNTk4MTk1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSopIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgQVBJOjpPYmplY3Qq
KSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXko
V2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBS
ZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmgKaW5kZXggZDAzOGJmMWYxMDUxZjlmOTRhN2U2NzM5NzFlYjY1MGJmNjhlZGU4OC4u
NDEyNTNjNmQxNzdhNWZhYzE0YmZhMDVkNDM0NGIxMmI2MzVlNjUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3Qg
YmUgcGFydCBvZiB0aGlzIGNsaWVudC4KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0
YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHV0aSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IDEyNDQ2MTEyY2Y4NjMwYmIyZTFlYjIyMDBmZDRlZTc2NzQ5MDcyNGIuLmYxZTllNDczNGRiNTVh
YjEwNTA0ZDEzOGFjZmQ3NTkxNGM1OGQ3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCkBAIC0xMTUwLDcgKzExNTAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqCiAgICAgICAgICAgICAgICAgbV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KHRvQVBJKCZwYWdlKSwgdG9BUEkoaXRlbSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxB
UEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IHBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY2xpZW50KCkuY29weVdlYkNyeXB0b01hc3Rl
cktleSgmcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSk7CiAgICAgICAgIH0KQEAgLTE5MzEs
NyArMTkzMSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBtX2NsaWVu
dC53ZWJQcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAg
dmlydHVhbCBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5
JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNv
cHlXZWJDcnlwdG9NYXN0ZXJLZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggZDBkZWM4NGYxMjQ2YmNkODVlYjY5NmZiOWI0NGZhOGM0ZTc1YTYzYS4uYzQ2NmI0
YzJkOGM5MjdhNjBhOTg0NjZmM2Q4ODQwNWFhYzUwMzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjA2LDE3ICsy
MDYsMTcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2
ZW50Lm5hdGl2ZUV2ZW50KCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQor
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94
eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICBy
ZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQog
ewogICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSkKICAgICAgICAgcmV0
dXJuIFdlYktpdENvbG9yQ2hvb3Nlcjo6Y3JlYXRlKCpwYWdlLCBjb2xvciwgcmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRl
eCA5Mjk5NzA4OTgzNDgyNGQ1YjgwMWNmYzA5YmQ4MDEwYTI4ZTk5MThmLi5kNTUxN2MzOTIwNzJi
NTczM2Q5NjAwNzQ4ZDczOTQ5NWViNGMwMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTgxLDEwICs4MSwxMCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVBy
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2Vi
UGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4
dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCmluZGV4
IDQ5Y2UxM2Q1NzY5YWIzNDQ0ZjIzM2NjODZkYTdhNjgxM2Q0ZGI1MzYuLmVhYWExZjcwYzZkODVk
NTQ2OTc0YjdiOTA2YTQwNmE2NGQ4ZmUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKaW5kZXggMjA1
NjRmNzU2N2M5MTE2YWQ2MGEwY2M4OTQ3OTY4MTRjOTY0NjBjMy4uMjhiZWJhNmU4YzBjODY3MWY2
OTkxYjFlN2EzMjg0ZGViYTNjMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm90ZWN0aW9uU3BhY2UuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9D
b3JyZWN0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVj
dGlvbkNhbGxiYWNrLmgKaW5kZXggODc4NjBiZDBjNzAxZTU3ZGM0MmM4NWFiYzg5ODdhMjI5Yzdi
OWY0My4uNzUyZTRjYzU4MTA5MzJlNjAwYzFhZTMwZTRhYjIwMTRjNGZhZjg5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CmluZGV4IGQ1NTI2YTE1NjRlZDg0ZmY5MjgyNWIzOGQ1NDMwZjE3NjdlMWI1MmEuLmRiZDg5NDM5
MjUyNGIzODg2ZDU5NTIzYThkYjUzMGI3NzQ3ZDczMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UoV2ViUGFnZVByb3h5JiwgV2ViUHJvdGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UGFnZVByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJL
ZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6
RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA2MGFkYmQ0YjNjYzc3MjY0ZGVm
ZmU1ZTdhZTNlMzIzYjIzOTUxZjU2Li42NGQwNzM1MzA3MzJmZDQ3Y2E4NWY4YTI3NTA1NTNiYjMy
ODVmMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYQog
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDptX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXddOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKQorUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKQogewogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNy
eXB0b01hc3RlcktleUZvcldlYlZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmNwcAppbmRleCA1OTliNjMzODAyOTVhYzkyM2QyMTFlN2JjY2I5YjNiMzk0ZTJkY2FiLi5i
NmVmNjM5NjU0Zjc3NzMwYmQxMTJjNTYxNTE2YTE3ZmU4MTNlMGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNw
cApAQCAtNDMwLDIzICs0MzAsMjMgQEAgdm9pZCBXZWJWaWV3Ojpkb25lV2l0aFRvdWNoRXZlbnQo
Y29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnQKIH0KICNlbmRp
ZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3OjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKQorUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3OjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCmluZGV4IDJm
Y2Q2NDBhZTk4OGVjNDc2MzcwMGE4N2RhYjRjYzAwMzk0NzliZTkuLmQ0NTM3MjQ3YWI5MzdkMWI1
ZjVmOGMyZGY4ZDY3MGRhNWMwYzlkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNr
ZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlNWQwNWNjMmI0OGU4NzNiNzkwZjBkZDQyZmQ0MzAwMWEz
MDdiZWE3Li40Nzg5MTE4OGVlZGU5N2I2YzRmYjVmMzY2ZjkwMGFiNzhkOWRiZGM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTIxMCwxMSArMjEwLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopID0gMDsKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
aXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI1NDJkNDc5OTZiZjg0ZWM0MzIxY2Zl
MDVhMzk1Mjk3MmFlMjk1ODMuLjE1NmNmYjcxN2QzZjI3MTBhMDZjMDcyZGU3Mzg5YTYwMmE2MzMz
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTczMCw3ICs3
MzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBt
YWtlRmlyc3RSZXNwb25kZXIoKTsKIAogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCmluZGV4IDNkY2Zk
ZGMwNzg4NWZmMjQxMWFjODI5MjJlZmI4MTJmNjc3MGQzMjAuLmI1NTcwNzhiNjZhODhiNjg0M2Iw
N2U4MmU0YzE1NzkyYmQwYjhjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3RWZsLmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHZvaWQgV2ViVmlld0VmbDo6cGFpbnRU
b0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgc2NlbmUtPnBhaW50
VG9HcmFwaGljc0NvbnRleHQoJmNvbnRleHQsIG1fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yKCksIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOwogfQogCi1QYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmw6OmNyZWF0ZShwYWdlKTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94
eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1f
ZXdrVmlldywgcGFnZSk7CiB9CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJWaWV3RWZsOjpp
bml0aWFsaXplQ29sb3JQaWNrZXJDbGllbnQoY29uc3QgV0tDb2xvclBpY2tlckNsaWVudEJhc2Uq
IGNsaWUKICAgICBtX2NvbG9yUGlja2VyQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKQorUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3RWZsOjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBj
b2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgcmV0dXJuIFdlYkNvbG9yUGlj
a2VyRWZsOjpjcmVhdGUodGhpcywgcGFnZSwgY29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCAzOTlmMDdlZjk5NjNkY2RkMWNkZGRhMjAwYWFh
MGRkZTllZGJkMTFlLi41YWMwZDQ5NzdiODFmNGM0ZTFmMTYyODFlMTBiNDNiNzJiZjFjODllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplQ29sb3JQaWNrZXJDbGllbnQoY29uc3Qg
V0tDb2xvclBpY2tlckNsaWVudEJhc2UqKTsKIAogICAgIFdlYkNvbG9yUGlja2VyQ2xpZW50JiBj
b2xvclBpY2tlckNsaWVudCgpIHsgcmV0dXJuIG1fY29sb3JQaWNrZXJDbGllbnQ7IH0KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xv
clBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRWaWV3QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CkBAIC02NiwxMiArNjYsMTIgQEAgcHJp
dmF0ZToKICAgICBXZWJWaWV3RWZsKFdlYlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKik7CiAK
ICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKLSAg
ICBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRl
VGV4dElucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVz
dChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4MThlZDJlZTNlMjgxZWNkMmQy
ZThiNzRiZGEyM2JjNjFiNjRlNWY0Li44MzJkMjM3OTJiMjM5MjEyNDE1MjhmMjczMzQ5YWExZGZj
NjQ0NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC05Nyw4ICs5Nyw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29y
ZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3Nh
bEFuaW1hdGlvbiA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZh
ZGVPdXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0
aW9uUHJvZ3Jlc3MoZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNWYwM2YwYmRkMzQzZDg5Zjk1NzZi
YTMxNTdmN2RlZWU5YTFiZDMwOS4uZTg5NjU5OTM1Mzk3MjRkMTRlYmEyZDI3ODU4MTYwNmVlNDNj
OTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC00NDEsMTYgKzQ0MSwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgbmF0aXZlV2VidG91Ywog
fQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5
KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihSZWY8VGV4dEluZGljYXRvcj4gdGV4
dEluZGljYXRvciwgVGV4dEluZGljYXRvckxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmZDIyOTFhNTU2MTVlMmUwNmMz
ZWMyZTlkMjE5Njk0YmY1ZTQ4ZGUyLi43YzUyMmM2MWZjM2MzYWQ4M2ViYjQ4NTMyZjIzMzE5OGE2
NjFmNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMTA3LDEwICsxMDcsMTAgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwuaAppbmRleCBjZWUxZGYwMDEwYTUzZTE2NTI1MWUyZGQ4Njk2MzdlNGY0MTMwOThl
Li4yNTJhMDVkYjgzNzI0OWQ1ZjYwNjNkZDM2NGNjMjNiYjNmMDU4NjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMjAsMTEgKzEyMCwx
MSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
aXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGlj
YXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDlhNjU0NjY1ODA0OTE5NDRhZWFh
ZmFiMTMwOTU2Y2RiMGVhNWRmYmEuLjQyMmU5MTc4MGU2N2IyYjM3YjYzOTdlZmQyZjAwNGM3ZWNm
Y2M3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQpAQCAtNDg3LDE4ICs0ODcsMTggQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbAogICAgIFtt
X3drVmlldyBfZG9uZVdpdGhLZXlFdmVudDpldmVudC5uYXRpdmVFdmVudCgpIGV2ZW50V2FzSGFu
ZGxlZDpldmVudFdhc0hhbmRsZWRdOwogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdl
KQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQ
cm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJl
dHVybiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUobV93a1ZpZXcsIHBhZ2UpOwogfQog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2Vy
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRp
YWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIFdl
YkNvbG9yUGlja2VyTWFjOjpjcmVhdGUocGFnZSwgaW5pdGlhbENvbG9yLCByZWN0LCB3a1ZpZXco
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCmluZGV4IDRjMjIzMWI2OWU1NWM0YjQ5OGYwOGM0YTJmYzk1ZWI3MGRkNTk2YTIuLmIyOTI4
Y2YxOGNmOGNiYjVhMzcyZmU4YzY4ZDY3Zjk1ZWVkYWU2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zNjgsMTcgKzM2OCwxNyBA
QCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6
OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0
X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgYXV0byBtZXNzYWdlVGltZW91dCA9IHN0ZDo6Y2hyb25v
OjpzZWNvbmRzKDIwKTsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbV9w
YWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAxZWQ3
OGQzNDVkNGU3NDJkNzk4NjAyNWE2ZjQzNjdhZjM4YmZkZTRjLi5hYTIzMjRjZTFiYTA3OGRhYTAz
MDJhZjQxMDE1Y2E0ZjljOWE4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAt
NjcsMjAgKzY3LDIwIEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6fldlYlJlc291cmNlTG9h
ZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1l
LCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9h
ZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAo
bG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJh
bWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0
KTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyOwogfQog
Ci1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBs
b2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQs
IHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIu
Z2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVy
UG9saWN5RGVmYXVsdCk7Ci0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGxvYWRlcjsKIH0KIAogc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCmluZGV4IDJlODE3OTdiNWM5NDhlOTk3MzEzYTY2ZWNiYWMzODZiNTllNmZiOTUuLjc2NGUx
YWE4ZTY0MTRhMzFmYTE2NjJkMTY2NjBiNjE2NzAxNmJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcigpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2Fk
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGll
bnQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJj
ZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29yZTo6RnJhbWUq
LCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGJvb2wpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggZDNkYzI0N2U0OGNkNjE4N2Q2OTJl
NmU0MWM0MmU2YWE3YTkyY2VhZi4uMzllOWIzZDQ5ZWY2YmQxYjM0ZjA4MTMxMDQwY2I0NDk1ZTA5
ZWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCBO
ZXRzY2FwZVBsdWdpbjo6fk5ldHNjYXBlUGx1Z2luKCkKICAgICBtX3BsdWdpbk1vZHVsZS0+ZGVj
cmVtZW50TG9hZENvdW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNj
YXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNj
YXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCiB7CiAgICAgaWYgKCFucHApCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOZXRzY2FwZVBsdWdpbio+KG5wcC0+bmRhdGEpOwogfQpAQCAtNzA5LDEwICs3MDksMTAgQEAg
dm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgcGxhdGZvcm1QYWludChjb250ZXh0LCBkaXJ0eVJl
Y3QpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNu
YXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hv
dCgpCiB7CiAgICAgaWYgKCFzdXBwb3J0c1NuYXBzaG90dGluZygpIHx8IG1fcGx1Z2luU2l6ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKIAogICAgIHBsYXRm
b3JtUGFpbnQoY29udGV4dC5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUp
LCB0cnVlKTsKIAotICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOworICAgIHJldHVybiBiaXRt
YXA7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OmlzVHJhbnNwYXJlbnQoKQpAQCAtMTA2NCw5
ICsxMDY0LDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSW50UG9p
bnQgTmV0c2NhcGVQbHVnaW46OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDhi
MzI4M2M5NzkzZWE0ZjA0YjAyMzFmOTU3NzBkMGI4NmZmZTM1ZjMuLmQ4OGI2ZmQ3ZmRkNWJmOWQ1
YzVmOTg0OWUyNmMyODdhNzIwZjhlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVh
dGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4pOwogICAgIHZpcnR1YWwgfk5ldHNj
YXBlUGx1Z2luKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gZnJv
bU5QUChOUFApOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQ
KTsKIAogICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQgYXN5
bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNo
cm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShj
b25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVy
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTI2NCw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIC8v
IGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxl
KS4KICAgICBib29sIGNvbnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBh
MTRlOThhYTI5YWQyYWVjOWI2OTYwM2UxYzFjOTA2ODIyMmQ3YTEzLi42MmFiODQ3YzZiZWM0OTRh
OWJiNDNkMjI5YzkxZjdkOTlkMzU2OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRvIGRyYXcgaXRzZWxmIGludG8gYSBiaXRtYXAsIGFuZCByZXR1cm4gdGhhdC4K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgPSAwOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYgYSBwbHVnLWluIGlzIHVzaW5nIHRoZSBDb3Jl
IEFuaW1hdGlvbiBkcmF3aW5nIG1vZGVsLCB0aGlzIHJldHVybnMgaXRzIHBsdWctaW4gbGF5ZXIu
CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEFs
d2F5c0F1dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5k
ZXggMWVjMTZiZTE3MWE1NWRiZWEzMjQzNGQwYjBlNDhkNzIzN2Y2MTM1Zi4uMTNjYTU0MzI1OGY3
NjUyNzg2MWIwZGEzMzQzOWVkNmVmZWEwZWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yMzgsMTYgKzIzOCwxNiBAQCBi
b29sIFBsdWdpblByb3h5OjpzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IGlzU3VwcG9ydGVkOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJv
eHk6OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFw
c2hvdCgpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgc25hcHNob3RTdG9yZUhhbmRs
ZTsKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6U25hcHNob3QoKSwgTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6U25hcHNob3Q6OlJlcGx5KHNuYXBzaG90U3RvcmVIYW5kbGUpLCBtX3BsdWdpbklu
c3RhbmNlSUQpOwogCiAgICAgaWYgKHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25h
cHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc25hcHNob3RCdWZmZXI7CiB9CiAKIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJh
bnNwYXJlbnQoKQpAQCAtNzE2LDkgKzcxNiw5IEBAIEludFBvaW50IFBsdWdpblByb3h5Ojpjb252
ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggODkwNDFjMDQ5OGM2M2U2Zjg4MjljNTU1YjQ5
MjM0ZjBlYzA2YjVmYi4uZTJmOThhZDdlY2NjZWNlMjlkNDg4MDk3OTJhMDgzMTA4YTdhYjcyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIo
KSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYWE4ZjQz
MTY5Yzg1ZjU3NDU3M2VhN2I0YmU2MjU4MzMxNzg4NzUzZi4uMzU3NzhmODIxNWE5NmEwNTRlZTdk
N2RlODg3YzE0ZmJkN2NkZmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChT
dG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmbWFwLnNl
Y3VyaXR5T3JpZ2luKCkpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAg
ICBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IG1hcDsKIApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaQogICAgIHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShXVEY6
Om1vdmUobWFwKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VS
VChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggNmM1MTY3NGM3
MWEyMDBjY2U0NzhmN2JjMDk0MmRmN2U5MzhiZDE5YS4uMzc4MTcxNzNlMjQ4NWI4NjZhOGFmMzI5
Mzc1NTFjNzdkMjZkODMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3Jl
OjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdl
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNv
cmU6OlBhZ2UqKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1f
c3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBmZDBhOThlODQ3NTk0YzM0
MjA3YTI4NWJiNmVjMzA1N2ZkNTgzNDk1Li40NTIwNjIwMDNmZGFmNmQ4NjIxODgwMjJhNzVmZjFk
ZGJlODE4MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTE4
NSwxMiArMTg1LDEyIEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYg
aGlzdG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhCiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0
YXRlKQorUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFn
ZVN0YXRlKQogewotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0
ZS50aXRsZSk7Ci0gICAgYXBwbHlGcmFtZVN0YXRlKCpoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1h
aW5GcmFtZVN0YXRlKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9y
eUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nLCBwYWdlU3Rh
dGUudGl0bGUpOworICAgIGFwcGx5RnJhbWVTdGF0ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1h
aW5GcmFtZVN0YXRlKTsKIAotICAgIHJldHVybiBoaXN0b3J5SXRlbS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGhpc3RvcnlJdGVtOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKaW5kZXggZTQxNTQxNWUxNGU2ZjM0ZDJmMGViYjUxY2U2
NjhiMzQ0MDgzZDA1OC4uYmVlOWQyMjhjYTczOWE1YThmNjY1MGNhZmNmN2JlZjBkYmNkNGRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUGFnZVN0YXRlOwogCiBQYWdlU3RhdGUgdG9QYWdlU3Rh
dGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKLVBhc3NSZWZQdHI8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CitSZWY8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOGZkM2ExMTY3MmEz
NjU2YjNkNWMyZmZiODVkZGU0ODdjNjgxZmY3Ni4uMGQxZDNkMWEzY2QwNGVkMjc3OGEyMjY1ZGI2
MzUzNWE1YzczMGEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODMzLDEyICs4MzMs
MTIgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKK1JlZjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAg
IHJldHVybiBXZWJQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNo
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAg
IHJldHVybiBXZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAppbmRleCBlMjA4MWI5Nzc0YzFiNDcyOWI0MTJkM2QyZDVjZjUwNDI3
NGRkMDk3Li43YWE1OWY1NjNhOGViNjE3YmUwOTQ0NTUyZjFjOTI1MzI1Mjc2MmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTIwMyw4ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0
aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZy
YW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBmZGI4YzY4ZDk3MmYyOGIwN2U5MzI4NzM0MGRhN2I1NzE2
MjdhNTZjLi5iY2QwNTEzZjhmYzJlNWIyNDNmZjM2NjAxNDFhNGRlMmRkYjg2NDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVm
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlRG9j
dW1lbnRMb2FkZXIoKm1fZnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSk7CiB9CkBAIC0xMzc0LDcgKzEzNzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAg
IG1fZnJhbWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRl
ciwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitSZWZQdHI8RnJhbWU+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1hcmdpbldpZHRoKi8s
IGludCAvKm1hcmdpbkhlaWdodCovKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CkBAIC0xMzgzLDI1ICsxMzgzLDI1IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
CiAKICAgICBGcmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFtZSgpOwogICAg
IGlmICghY29yZVN1YmZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBh
cmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5
LgogICAgIGlmICghY29yZVN1YmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY29yZVN1YmZyYW1lKTsKIAog
ICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJv
bSB0aGUgZG9jdW1lbnQuCiAgICAgaWYgKCFzdWJmcmFtZS0+Y29yZUZyYW1lKCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoc3ViZnJhbWUt
PmNvcmVGcmFtZSgpID09IGNvcmVTdWJmcmFtZSk7CiAgICAgaWYgKCFjb3JlU3ViZnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIGNvcmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIEFTU0VSVChw
YXJhbU5hbWVzLnNpemUoKSA9PSBwYXJhbVZhbHVlcy5zaXplKCkpOwogICAgIEFTU0VSVChtX2Zy
YW1lLT5wYWdlKCkpOwpAQCAtMTQyMCwxMiArMTQyMCwxMiBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFJlZlB0cjxQbHVnaW4+
IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdpbkVs
ZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOwogICAgIGlmICghcGx1Z2lu
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5yZWxlYXNlKCksIHBh
cmFtZXRlcnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1Z2luRWxlbWVudCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDNjYjE1ZTk0OTQ4MTZmNTE4ZmU2NjUwNzBiMzI0YjZmZTU0
ODc3YzUuLjU5MGY5NzEwM2Y1OWYwNjhkY2QyOWIzMjc0OTkwNTg4ZTY5ZjVkNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwpA
QCAtMTg1LDEwICsxODUsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQ
YWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIG92
ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdp
bldpZGdldCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBjNzhlNjlmMDg3NjczNmUyYWJiMTBhZTI5NDFiODAz
ZTZiZjExZC4uZDA4MmUyOGRkYTg1OTAxNzM5NTI4ZGIwNTE3MTk3OWEzYzg4ZTg3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQxLDE0
ICsyNDEsMTQgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1QYXNz
UmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2ViUGFn
ZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKG5l
dyBXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOworICAgIFJlZjxXZWJQYWdlPiBwYWdlID0g
YWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOwogCiAgICAgaWYgKHBh
Z2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLmdldCgpKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRl
UGFnZShwYWdlLnB0cigpKTsKIAotICAgIHJldHVybiBwYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gcGFnZTsKIH0KIAogV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00OTA5LDE2ICs0OTA5LDE2
IEBAIHZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8
dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygp
LT5yZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogfQogCi1QYXNzUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVu
dExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJEb2N1
bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJl
cXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3Vt
ZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRl
RGF0YSk7CiAKICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEICYmIGZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChtX3BlbmRp
bmdOYXZpZ2F0aW9uSUQpOwogICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAwOwogICAg
IH0KIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRv
Y3VtZW50TG9hZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWRE
b2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW1lJiBm
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGQwNGI2MzgyNjdiMmJjY2EyNGQwM2EzMWY1M2ViMzg3YThlMmM5NGEuLmZjYjljOTdhNmI5M2M4
YWVkYzlmOTU3MDQ1NmEwNjI2ZjlkZTUwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNzIFdlYlRvdWNoRXZl
bnQ7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZSgp
OwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmKTsKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpPcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
IHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1l
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3Vt
ZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hl
ZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAog
ICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMTEx
OCw3ICsxMTE4LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBl
cmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
KTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2NhdGlvbihX
ZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQs
IE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkVXBk
YXRlKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGlt
bWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOGY5ODY2ZDYzZmZlY2IwZTgy
OTk2ZDg3NzEzYWU2NDQzNjc5OGJjMS4uYTQwYzgyZDk2NTkwNjFhMTZlZGUwYjEzY2IyNDVmZWIw
NWFlNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBs
b2NhdGkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlh
dGVBY3Rpb25IaXRUZXN0KGltbWVkaWF0ZUFjdGlvblJlc3VsdCwgaW1tZWRpYXRlQWN0aW9uSGl0
VGVzdFByZXZlbnRzRGVmYXVsdCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZs
b2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9u
cykKK1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24o
RmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzLCBOU0RpY3Rpb25hcnkgKipvcHRp
b25zKQogewogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCk7CiAgICAgaWYgKCFtYWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygpLT5yZW5k
ZXJWaWV3KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256900</attachid>
            <date>2015-07-16 07:23:41 -0700</date>
            <delta_ts>2015-07-16 17:50:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150716232230.patch</filename>
            <type>text/plain</type>
            <size>117815</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhODQ4YzYwNjhlY2Iy
MGFiMGNiMmQzNDRiMzUxN2FmMTIyYzliYi4uYzgwMTEzMTlmMjU4YjRhYmMwZWE0ZTQ1ODk5YmNi
MzkwNGIzNDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTUgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpbmRpY2F0b3IgcmVj
dCB1bml0aW5nIGNvZGUgdG8gVGV4dEluZGljYXRvcldpbmRvdyBpbnN0ZWFkIG9mIFRleHRJbmRp
Y2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkNThjNzJhZmRkNDA0MDE0ZTk3ZWY4MTVlZjJjMGVj
M2E0YTZhYTE3Li42NGNhZTEzNDI1ZDI1NzllNjQ3YTgyMjIxODRhNmVjYmMyMDk5MDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB3a1BvcHVw
TWVudSBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2U7IGl0J3Mgbm90IGNhbGxlZCBmcm9tIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAwMjBlZjM3NGU1NDZjYmE3ZmQ4YWQ5ZDgyZGNlZjRk
NGEzNDAzZWQzLi5iYzlkNzRlOWMyZTM0NDczMTI3MDY5M2M5YjcyYzc3YjFmYTUyNDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTUtMDctMTUgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTWFpbnRhaW4g
Y29uc2lzdGVudCBDT00gSW50ZXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU5OWIxYTYxNmUzOTMxMjk5
NmI3NDZhYTkzNGExYjUxYjZiMDY5ZTguLmQ4MjZlNTBkY2QwOTVhNTFlM2Y2OWU2MTVkZTM4NjFm
NGI1ZDNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDctMTYgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNz
UmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRl
cGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFj
ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQ
cm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxs
YmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3Rlcktl
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Vm
bDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6Y3Jl
YXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9va3Vw
VGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGb2xsb3cgdXAgdG8gcjE4
Njg4NyBmb3IgR1RLKy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
OTU1YTljZjlkZGM2ZDUyYTUxNThkMzRhZmVkYzlhOWEwZTViNjE4Yi4uZWE5MjU1YzgyMGYyM2Q0
YTk0Y2Q1ZGNjMmFiMGVmYzk2YzE1NjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9Owog
CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdl
TmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGUgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJy
aWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIG92ZXJyaWRlCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxFbXB0eVBvcHVwTWVudT4gbV9wb3B1cDsKIH07CiAKLVBhc3NS
ZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3QKK1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50
OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOwogfQpAQCAtMTgzLDE5
ICsxODMsMTkgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWUKIHsKIH0KIAotUGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIHJldHVybiBEb2N1
bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgaW50LCBpbnQpCitSZWZQdHI8RnJhbWU+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sKQorUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdl
dCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTM4MTIwMzhiZjZkZTVk
MGE4MjcwMTU3Y2NmMTdkYjZlN2MxMzE0OS4uOGM1N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRm
YzE1ZGI4NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTE4LDgg
KzExOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJl
Y3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFy
Y2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
IApAQCAtMzQzLDcgKzM0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8RG9jdW1l
bnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNh
Y2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KIApAQCAtMzcwLDggKzM3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwg
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiNzIwMWVlODYxYzA2NzVlMmZmNzg0ZmY4OGQ0ZDc3Y2M3ZGY4
NGViLi4yNGJhYjg3YzA3NjE1YjlkM2JjMjNlZWYzMWZhNDk1ZjYxMjk0YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBGcmFtZUxvYWRl
cjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogewogICAgIC8vIFRo
aXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4gaW5pdGlhbCBl
bXB0eSBkb2N1bWVudC4KLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0
KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSku
cHRyKCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExv
YWRpbmdNYWluUmVzb3VyY2UoKTsKIApAQCAtMTMxNSwxNiArMTMxNSwxNiBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3QpCiAgICAg
aWYgKCFyZXF1ZXN0Lmhhc1N1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0U3Vi
c3RpdHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0g
bV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKIAotICAgIGxvYWQobG9hZGVyLmdldCgpKTsKKyAgICBsb2FkKGxv
YWRlci5wdHIoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBhY3Rp
b24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIGFjdGlvbi5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogCiAgICAgaWYgKGxvY2tIaXN0b3J5ID09
IExvY2tIaXN0b3J5OjpZZXMgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5z
ZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExvYWRlci0+ZGlkQ3Jl
YXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51cmxGb3JIaXN0b3J5
KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKSk7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAog
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKIAotICAgIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCB0eXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIu
cHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2Fk
ZXIpCkBAIC0xNTQ0LDE0ICsxNTQ0LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgLy8gV2Ugc2hvdWxk
IGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGluIHRoaXMgY2FzZS4KICAgICByZXF1ZXN0
LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAotICAgIFJlZlB0cjxE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVx
dWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBh
cHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2Fk
ZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1
ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdE
b2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KGxvYWRlci5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigp
KTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiAKLSAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
LCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKQEAgLTE1NzIsOCArMTU3Miw4IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGRvY3VtZW50IGxvYWRlciBmb3IgdGhlIHJlbG9hZCwgdGhpcyB3aWxsIGJlY29tZSBtX2RvY3Vt
ZW50TG9hZGVyIGV2ZW50dWFsbHksCiAgICAgLy8gYnV0IGZpcnN0IGl0IGhhcyB0byBiZSB0aGUg
InBvbGljeSIgZG9jdW1lbnQgbG9hZGVyLCBhbmQgdGhlbiB0aGUgInByb3Zpc2lvbmFsIiBkb2N1
bWVudCBsb2FkZXIuCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVu
dC5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVE
YXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3VtZW50TG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgUmVm
PERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihp
bml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0
LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9
IGxvYWRlci0+cmVxdWVzdCgpOwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogICAgIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBlbmRUb0VuZFJlbG9hZCA/
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gOiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQs
IDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjMTNhMTk2
MWY0MmNiODdkODBjMDVmZjMxYmU0Y2JiNTRmZTRhNTYyLi5jOWRmZjIyYjk3ZjRmYmMzZmEwNjRh
OTUzZWIwNTdlYzBhODM5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpID0gMDsKIApAQCAtMjcxLDggKzI3MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9h
ZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRn
ZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkwNzEzMTBiZTA2MDViMTgxOWQyZjYzY2I4NjQ1
ODcyODY5NDc3NjYuLjFhZTNmYmNhMTNjZGFkOGEwYzU4YjMyYjJlM2VjMjJlMDY1YmFiYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+UmVzb3VyY2VMb2FkU2No
ZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUq
IGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCkBA
IC0xMjYsMTIgKzEyNiwxMiBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYQogICAgIGlmICghbG9h
ZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAjZW5kaWYKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUs
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1l
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgY2xpZW50LCByZXF1ZXN0KTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNs
aWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2NoZWR1bGVMb2FkKGxv
YWRlci5nZXQoKSk7CiAgICAgcmV0dXJuIGxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA5ZmI5ZmI0YTc1MDU5MmQzYzI5OGNlYWQ4
NjQzN2UwYzIyNGM4NTQzLi5iMDVkYTA0NDlhYmY3MTMxNTgzYWUyMDFhZTA0M2E4YjhlZWQ4NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC01MSw4ICs1MSw4IEBAIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoUmVzb3VyY2VMb2FkZXIqLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAw
ODA4MzE2NzA3NTI4NGNhNDQ0Y2U1NDMxNTI5ZWEwMzY3NzI0ZWFkLi4wM2YwNTg4NTNkZmNjNWJi
MTdjZjk1MmQ4ZmYyNTQxMWRlYTExMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6On5T
dWJyZXNvdXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1
YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3Vi
bG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9w
dGlvbnMpKSk7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lLCBDYWNoZWRSZXNvCiAjZW5kaWYKICAgICBpZiAoIXN1YmxvYWRlci0+aW5pdChyZXF1ZXN0
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHN1YmxvYWRlcjsKIH0KICAgICAKICNpZiBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IGRmMDQzMmFkY2Ex
NGI5OGI0NDAxYmFiNGIyMmZmODUwOWZmNWUzOWEuLmEwODkwMWI1NTVkODRlYTQ2YzQ1ZWU2ZTk4
OGU1YzRmYjhlM2RjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBj
cmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAK
ICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggNDRlMjMyNjgyMjY1NjU2NWI2YmNlZmNiNTRlNjFjNmM4ZjQ5NTAzOS4uZDJiZmM2NTNj
YmZlYzEzMDE1NDY0MjAwNjdlYWE0MDg4MDk1YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtNTQ4LDEzICs1NDgsMTMgQEAgYm9vbCBDaHJvbWU6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQuaGFzT3BlbmVkUG9wdXAoKTsKIH0KIAotUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2
ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZVBvcHVwTWVudShjbGllbnQpOwogfQog
Ci1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkg
Y29uc3QKIHsKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICByZXR1cm4g
bV9jbGllbnQuY3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApp
bmRleCAyMjI1MTg0YzhiZjViMDRkZmMwMDgwZGY5Y2E5N2Q0Mjk0N2M2OGI5Li5jMGJkODU4ODA3
ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTE3
Myw4ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpOwogICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3Jp
dGluZ0RpcmVjdGlvbigpOwogICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisgICAgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRl
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIGNvbWUgdXAgd2l0aCBhIGJl
dHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IDQ3ODZlYzgwNWU1OWI4ODRhNjA3MzdmOTA0YTI4MDRhMGFkY2NkZDguLjRmODE0M2QyYjFm
ZTFjZjMzOWM0OGY2ZTY3NzMxMjgyMDE4ZTQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtMzc1LDggKzM3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpID0gMDsKICAgICAvLyBD
aGVja3MgaWYgdGhlcmUgaXMgYW4gb3BlbmVkIHBvcHVwLCBjYWxsZWQgYnkgUmVuZGVyTWVudUxp
c3Q6OnNob3dQb3B1cCgpLgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVw
TWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA3OTI3YTQ5YjQzODUzZGNjMTMx
ZTdiNzU2NzgyYTQwMjc0ZmIzNTQ4Li4wNzZkMDFiZTk0MDVlMWMwNDE1ODkwNTk3OWFlNjRkZjEz
Y2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGljIFJlZkNv
dW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRD
b3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAyZTc2ZDdjZGQwZTE4OWFlZGZmNjhi
MTEyOWZkMWE3ODIzYThiYTZjLi4wYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2Fj
YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxh
eWVyKiA+JiBhcnJheSk7CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAw
OyB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tp
bmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9CiAgICAgRmxvYXRQb2lu
dCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9s
bFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBib29sIGlzQW5jZXN0
b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBs
aWNhVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmNwcAppbmRleCBiMzNiYmI2MjkzMDA1ZWZmNmFmMzc2YzQxNDE4ZWRhYzU1MDhh
MTBhLi5lOTdmY2Q4OWMyYzgxYmZmMTc4ZWE5YjVjNGZlM2U4NjYwNGM0MTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCh1aW50MzJfdCkKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZm
ZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBhbiBlbXB0eSB0ZXh0dXJlLCB3ZSBz
aG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBpbnRvIGEgQml0bWFwVGV4dHVyZS4KICAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCAzMWQxODE5MmNkM2VmMGFiNDY4
NjgxY2JmZTVhZGZlOTY4MzUzOGJiLi4yMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0OWU2ZDAyZDZj
YTcwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KICAgICB2b2lkIHNldEdy
YXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dh
cEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDY0
OGU3MWYwMGEwOWFhZjdiYmZlMzkyODBlYzBlYTc3ZWIxNDg2ZGYuLjdlMjIxMmU1MjVmNDJmNTVk
ZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJUaWxl
IHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgaW5saW5lIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgaW5saW5l
IEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgaW5saW5lIHZv
aWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVyZSA9IHRleHR1
cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBt
X3JlY3QgPSByZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuY3BwCmluZGV4IGQzNTcxMGE2OTI4MWE4MjA2MTZkZTMxMjEzM2M0ZDNjN2ZmOTE3ZTgu
LjM2MjVjMTQ4NjQzMWQ0NDVhMmE5OTEzMjBlZjUxMDFmNDVmZTE2ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcp
OwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRpbGUgOiBtX3RpbGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHR1cmUgPSB0aWxl
LnRleHR1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCAyZjc5MmRjZjk0ODQ4ZDRiOGFiYjBhMjlmMTBkODMxODRlMzBmNTlkLi40ZjNjY2U4
OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUp
OyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0
IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXgg
MDljYTNkZTA0YmVjZDY1NzliYTI1NWZiYTFlMzMyNmFjMTFhNWJiYi4uYmRlOTVmNTE4MDc3OWFm
YTQ4MTllOTNiMzZmOTA1NTY4OWVlNDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlLmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDRkYTRkMTdmOGFlNTQ4MWYzMDlmMzA3ZmMwYjk3
ZTkxN2ZmNDNlNC4uNmFhMGYzMzE2OTlmZDAyOWUxMGJmYTczYTUxYWJkNTk2ZWE3OTU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwo
KQogICAgICAgICBjbG9zZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwpAQCAtOTYsMTAgKzk2LDEwIEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
UGFnZSopCiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFN
YXAuZW5kKCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgaSA9IG1fc3RvcmFn
ZUFyZWFNYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5t
X3N0b3JhZ2VBcmVhTWFwLnNldChpLT5rZXksIGktPnZhbHVlLT5jb3B5KCkpOwotICAgIHJldHVy
biBuZXdOYW1lc3BhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CiB9CiAK
LVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBwcnBPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoIW1faXNTaHV0ZG93bik7CkBAIC0xMDcsMTEgKzEwNywxMSBAQCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gcHJwT3JpZ2lu
OwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwogICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOwogCiAg
ICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBv
cmlnaW4sIG1fc3luY01hbmFnZXIsIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0
KG9yaWdpbi5yZWxlYXNlKCksIHN0b3JhZ2VBcmVhKTsKLSAgICByZXR1cm4gc3RvcmFnZUFyZWEu
cmVsZWFzZSgpOworICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIH0KIAogdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCA1MjU5OTcxYzVlYzQwNjk3YmE3Y2ZiOWM0ZDkwYTRjNmFjNmEyMmY3
Li43MGM2YjU3MzE0ZTdjYmEzOWViMTlhM2M3OGE4NzFhN2NkOGJjNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4p
ICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pICBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpIG92
ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJl
ZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1h
cCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAxYjU5MzVkYTljM2ZkYTM3MzIyMDE4
MGZkZjBjMTY0NjQ2MTdkMjc3Li5iZDk0Y2U3NWUxN2VkOTBjMTMxMzRlMzlkZWVhZmIzNmJmNzI2
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MuaApAQCAtNzksOCArNzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVj
dGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1l
bnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2ViQXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCmluZGV4IDQ2Zjg3ZDhjYmMwMGZhMTExNmY0NzY2ZGRkOWMxNDFlNWE0ZGFl
NmUuLmI5Y2YxMzk3ODRlNmY1MjBlNGVjYTg2OWQ0YjJiNDlmM2ZkYzNkODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50SU9TOjpzZWxlY3RJ
dGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElP
Uzo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51SU9TKGNsaWVudCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA1ZTNiMmRjYmNhZWE5NWNmZWFhZmI4ZTNiNmJmZGZiMzkzNTVkYWJiLi5kNzU1
ZmM3YzE5NmFjZDc4YmM2Y2JjYWY3NWIyYzZjNjZmNWI1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTg5LDggKzE4
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChi
b29sKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDIwZjZkNzI4MjQ0Njg2ZmIzZDI2NWZhN2Fk
MTU1NzczNzBlNWZkZTYuLjFiOWNmOWMzYTdhMjYyNTIzMGU0MjMzZGMwNzkzNmUwOTk4MDFhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KQEAgLTg0Miw3ICs4NDIsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6aGFzT3Bl
bmVkUG9wdXAoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKTsKQEAgLTg1MSw3ICs4NTEsNyBAQCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVNYWMoY2xpZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA3Y2YxNThmOTZiNjM4YjcyOTQwMjY0MDllMTk3MmUyNDU2MGJiMGQ3
Li5jZDFmMjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2FmZjQ1MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0
IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAorICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0MWQwMTljNWViYjA3YmZmYmU0Y2RkZjc2
OGI4NzU0YTM5MjYzNjczLi45OGNlZGQ0ZWU2MDI0MzVhZTMyZThjZjAyMTc5ZmY1MDAzYzdjMzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMyMiwxNSArMTMyMiwxNSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICNlbmRpZgog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAg
ICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVy
TWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIFJlZjxXZWJEb2N1bWVu
dExvYWRlck1hYz4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gW1tX
ZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2FkZXIuZ2V0KCld
OworICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbW1dlYkRhdGFTb3VyY2UgYWxsb2Nd
IF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5wdHIoKV07CiAgICAgbG9hZGVyLT5zZXRE
YXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwogICAg
IFtkYXRhU291cmNlIHJlbGVhc2VdOwogCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGxvYWRlci5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwm
IHVybCkKQEAgLTE2MDgsNyArMTYwOCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNh
bkNhY2hlUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBp
bnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwpAQCAtMTYyNywxOSArMTYyNywxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZwogCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJi
aXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4K
ICAgICBpZiAoIXJlc3VsdC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgCiAgICAgY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkubG9h
ZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIHJlc3VsdC5nZXQoKSk7CiAKICAgICAv
LyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhl
IGRvY3VtZW50LgogICAgIGlmICghcmVzdWx0LT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE9iamVjdENv
bnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKQpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXpl
LCBIVE1MUAogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEb2N1bWVudExvYWRlck1hYy5oCmluZGV4IGIyY2MzNzU4ZjdiMzA3NmZhZWM1NDgzMzU3Yjcz
OTNhMGVhMWRiMzIuLmU4MDMxNGIyYTA4OTQ4NGE0YTJlNDllNjA5NzRmZTYwOTdiMWY3OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLmgK
QEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJEb2N1bWVu
dExvYWRlck1hYyA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBkYXRhKQorICAgIHN0YXRpYyBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJEb2N1bWVudExvYWRlck1hYyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkRvY3VtZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKICAgICB9
CiAKICAgICB2b2lkIHNldERhdGFTb3VyY2UoV2ViRGF0YVNvdXJjZSAqLCBXZWJWaWV3Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCA0NmY4ZTVkYzQ3ZjhlOGQwODFmNDc4NGU5ODQyZDQ5NjkxY2M1Y2U3Li4xODkw
NmRmMDQ2OTlhYmI3N2Q0Mjg0YTFmODliYzhhOWY3ZDExYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCwx
MiArNzgwLDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitS
ZWZQdHI8UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVw
TWVudVdpbihjbGllbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDI1MWY4NjJmNDNiODBkODJmMjdhZDhlODIxMzE5MGJkYTAzNzVmOGYuLmY2M2FjZWZhZDMxYzcw
MjY5NzgzYzA1N2Q5NDJiYWYxYmNhY2JlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTEsOCArMTUxLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0
aW5nRGlyZWN0aW9uKCk7CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2Ny
ZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBjYmQxOTNlOGZkMGZkYWQ2NTc0ZjNkNWY0YjE4MmQx
ZGExZmJhODkuLmRmMGY5MTMxYzhiMjEzMzAwY2Y1Mzk5ZTNkNThhNDFlNzBhNGM1YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTk0OSwxNCArOTQ5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRl
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRh
KQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRM
b2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3Vt
ZW50TG9hZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKIAogICAgIENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNlKEFk
b3B0Q09NLCBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsKIAog
ICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1cm4g
bG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODdiNmQ1MTZhYzM5
YTlhMDJlYWM1ZTdiNTFlYTc4MWM2NjQzMjE5Ni4uODE5ZGFmMzM0NWM0MGJjNjJiMzI3NmNlN2Iz
ODI2YzI5YzVkMzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAgdmlydHVhbCBSZWY8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApp
bmRleCA0YzMxMDNkNWUyMDc3NzYxYWU3YmMzZGI3YjhmMTg2NDQzZDU1NWUzLi42MTY1M2NhYzE3
OGQzNGZhYTQ2OWZmMTA2ZTUwNTRmN2Q3NzkwM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZQogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9
CiAKLVBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JD
cmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCitSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFiYXNl
cy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBQYXNzUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVl
SURCRGF0YWJhc2UoY29ucwogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFz
ZSA9IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGUoaWRlbnRpZmllcik7CiAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IGRhdGFiYXNlLmdldCgpOwotICAgIHJldHVybiBkYXRhYmFzZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGFiYXNlOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6cmVtb3ZlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFi
YXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5oCmluZGV4IDU5YTYxOGJlNDA1OTVjMjhjMjJiZGIyZTljYTIxODE3OTZkMjNjNjkuLjQ3YzY5
MjU4NmNmZjlkMzBlOWNkNzE4NjM0NGNiOTM3ZjBmZWY2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25z
dCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJh
c2VJZGVudGlmaWVyJik7CiAgICAgdm9pZCByZW1vdmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBV
bmlxdWVJREJEYXRhYmFzZSYpOwogCiAgICAgdm9pZCBlbnN1cmVJbmRleGVkRGF0YWJhc2VSZWxh
dGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGE5ZjQ2N2U4
NzhkZTgxYzY2MWJkZWQzNWQ3NjE2NjMwNjExYzQ3Yy4uYTU2ZDkyNTAzYThlOTBlOTk5MmNmNzcw
YTI2ZWMyMjMyYTI0ZjdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIFBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZQogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IHJlcGx5OwogfQog
Ci1QYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9u
UmVwbHkoKQorUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1
Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0
aW9uUmVwbHkoKQogewotICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHkucmVsZWFzZSgp
OworICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CiB9CiAKIGJvb2wgUGx1Z2luQ29u
dHJvbGxlclByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYg
Y3JlYXRpb25QYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggOWVlZDJlNzExOGM3MWY4N2QzNmU5ZmQy
ZTZmYjA0ODI4YzczYTc3Yy4uMmUzMzNmNGZjN2EwZGI4OTIzODI5NTNiNDgyMDIyMzFmNThlMmFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlh
bGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemluZzsgfQogICAgIAogICAgIHZv
aWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+KTsKLSAgICBQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFs
aXphdGlvblJlcGx5KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBjNjZkMjhiNzUz
OTc0YTA1NzQwY2I2YWY2OGUyYzQ4NDgxZDkzYzMyLi41MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJj
ODAwOGUwZjJhOTQwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiAgICAgaXQtPnZh
bHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNl
dCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3Rp
bGVzLnZhbHVlcygpKSB7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dGlsZS50ZXh0dXJlKCk7CkBAIC05OSw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmU7CiAgICAgfQogCi0gICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4oKTsKKyAgICByZXR1cm4gUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAKIHZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggZDkwMzQ5ZDYzYTVmOGI0
NmY2NjZjZWM2MjE0NmI2MjVjMDQzYzNiNC4uNWRhZmEwMTEyODdlOWFjYTQyNzQ0MmIzZWQ2N2M3
YWQ5M2M1ZGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02
MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlE
KTsKICAgICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQz
Ml90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAg
IHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAg
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcios
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA2YjhkMTFkYTcy
N2UwYWQ1NDVjOWVlM2M1ZjZmNzQ0YjllMDg0YWVhLi4wZGQzMDY0ZWUzYjg5M2Y1YjhmMDJlOGYz
ZDIwODAzMTA1Y2U2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVj
b2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzKQogewogICAgIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZh
Y2U7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCkBAIC03OSwxMSArNzksMTEgQEAgUGFzc1Jl
ZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHMKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHN1cmZhY2UgPSBj
cmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IChmbGFncyAmIFN1cHBvcnRzQWxwaGEpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
IDogU2hhcmVhYmxlQml0bWFwOjpOb0ZsYWdzKSk7CiAKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCiB7CiAgICAgR3JhcGhpY3NTdXJmYWNlOjpG
bGFncyBzdXJmYWNlRmxhZ3MgPQogICAgICAgICBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29m
dHdhcmVXcml0ZQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdAogICAg
IC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxs
b3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KICAgICBSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZs
YWdzKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChzdXJmYWNlKTsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkp
KTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBXZWJDb29yZGluYXRlZFN1cmZhY2U6On5XZWJDb29yZGlu
YXRlZFN1cmZhY2UoKQogewogfQogCi1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitSZWZQ
dHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShj
b25zdCBIYW5kbGUmIGhhbmRsZSkKIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBp
ZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGEKIAogICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhh
bmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1f
ZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuaAppbmRleCA3ZGMxNmYyYzA0M2JmYjVmYzRkMzkyM2UzMzFlZDVhYzFmNjM0M2ZhLi44YTE4
ZjYwNzY5NmJmYTBiNzBjZGEyYzBkYjc4NDc5NmFlNDg2NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuaApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgLy8gQ3JlYXRlIGEgbmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVp
dGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogCiAg
ICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IEhhbmRsZSYpOwogCiAgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYpOwpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAgICAg
Ly8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNl
LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0
aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKICAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZh
Y2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgR3JhcGhpY3NTdXJmYWNlLgogICAgIHN0YXRpYyBS
ZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAppbmRleCBlNDU4ODZh
NWRiYmIwZjUxMjdkNTMyMGZhOTNhYzczODE3NmYzN2Y2Li42ZTk1YjBmZWE2ZWQ0NjBhZDZjM2Qw
NjMyNWM4MWZmMjU5ODE5NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSTo6
T2JqZWN0KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFz
dGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCmluZGV4IGQwMzhiZjFmMTA1MWY5Zjk0YTdlNjczOTcxZWI2NTBiZjY4
ZWRlODguLjQxMjUzYzZkMTc3YTVmYWMxNGJmYTA1ZDQzNDRiMTJiNjM1ZTY1MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91
bGQgbm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJL
ZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiB1dGkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCAxMjQ0NjExMmNmODYzMGJiMmUxZWIyMjAwZmQ0ZWU3Njc0OTA3MjRiLi5mMWU5ZTQ3
MzRkYjU1YWIxMDUwNGQxMzhhY2ZkNzU5MTRjNThkNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlKgogICAgICAgICAgICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbSh0b0FQSSgmcGFnZSksIHRvQVBJKGl0ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rl
cktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBwYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNsaWVudCgpLmNvcHlXZWJDcnlw
dG9NYXN0ZXJLZXkoJnBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkpOwogICAgICAgICB9CkBA
IC0xOTMxLDcgKzE5MzEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAg
bV9jbGllbnQud2ViUHJvY2Vzc0RpZENyYXNoKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6
OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCmluZGV4IDYwZDhhMGY1NmY5ODAwZjc1MzUwMjU4OTIzMGRlMzcwY2Q5YzJhZWMu
LjVjMTZiZjgyZDVhZDA2YTRmYmEyYzcxMDllZTMzMzlhNzUwZDVjZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTIw
NiwxNyArMjA2LDE3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wKICAgICBndGtfbWFpbl9kb19l
dmVudChldmVudC5uYXRpdmVFdmVudCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSog
cGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBN
ZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7
CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQs
IHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKIHsKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCiAgICAg
ICAgIHJldHVybiBXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggYmM1YjYzNWMxYzliNGE5YTA1MWU1NTAxY2QwYTMxNGYzNjgyNDAwZi4uMWNiZjM0
ODVlZTEzZmQxYzMwZjc4ZjQ0NDY3OWQ5ZGNlYzZlNmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC04MiwxMCArODIsMTAg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBl
cm1hbmVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dElu
ZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwu
aAppbmRleCA0OWNlMTNkNTc2OWFiMzQ0NGYyMzNjYzg2ZGE3YTY4MTNkNGRiNTM2Li5lYWFhMWY3
MGM2ZDg1ZDU0Njk3NGI3YjkwNmE0MDZhNjRkOGZlMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKQEAgLTI5
LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTdHJpbmcu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCmlu
ZGV4IDIwNTY0Zjc1NjdjOTExNmFkNjBhMGNjODk0Nzk2ODE0Yzk2NDYwYzMuLjI4YmViYTZlOGMw
Yzg2NzFmNjk5MWIxZTdhMzI4NGRlYmEzYzE3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b0NvcnJlY3Rpb25DYWxsYmFjay5oCmluZGV4IDg3ODYwYmQwYzcwMWU1N2RjNDJjODVhYmM4OTg3
YTIyOWM3YjlmNDMuLjc1MmU0Y2M1ODEwOTMyZTYwMGMxYWUzMGU0YWIyMDE0YzRmYWY4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNr
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAppbmRleCBkNTUyNmExNTY0ZWQ4NGZmOTI4MjViMzhkNTQzMGYxNzY3ZTFiNTJhLi5k
YmQ4OTQzOTI1MjRiMzg4NmQ1OTUyM2E4ZGI1MzBiNzc0N2Q3MzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC05Nyw3ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKFdlYlBhZ2VQcm94eSYsIFdlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkmKSBv
dmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRv
TWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZlB0
cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNjBhZGJkNGIzY2M3
NzI2NGRlZmZlNWU3YWUzZTMyM2IyMzk1MWY1Ni4uNjRkMDczNTMwNzMyZmQ0N2NhODVmOGEyNzUw
NTUzYmIzMjg1ZjBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYgcGEKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3XTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRhdGE+IE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktp
dDo6V2ViUGFnZVByb3h5JikKK1JlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViVmlldy5jcHAKaW5kZXggNTk5YjYzMzgwMjk1YWM5MjNkMjExZTdiY2NiOWIzYjM5NGUy
ZGNhYi4uYjZlZjYzOTY1NGY3NzczMGJkMTEyYzU2MTUxNmExN2ZlODEzZTBiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHAKQEAgLTQzMCwyMyArNDMwLDIzIEBAIHZvaWQgV2ViVmlldzo6ZG9uZVdpdGhUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50CiB9
CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
V2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3
OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmll
dzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmll
dzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaApp
bmRleCAyZmNkNjQwYWU5ODhlYzQ3NjM3MDBhODdkYWI0Y2MwMDM5NDc5YmU5Li5kNDUzNzI0N2Fi
OTM3ZDFiNWY1ZjhjMmRmOGQ2NzBkYTVjMGM5ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC0xNzUsMTAg
KzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVu
dChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNr
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29y
ZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMGY4ZDI0MDQ3ZTZkNTE4ZWY5OTAyNDZhZjhm
OTM2Y2Y0MTU5YWMzOC4uNWRjM2U1MGYxYjRhNTY0MWVhNjM2MWY3YTk4NWQyMTVmOTMzOTZjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yMTAsMTEgKzIxMCwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRp
dmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNlbmRpZgogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CiAKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9y
KFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0
aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyNTQyZDQ3OTk2YmY4NGVj
NDMyMWNmZTA1YTM5NTI5NzJhZTI5NTgzLi4xNTZjZmI3MTdkM2YyNzEwYTA2YzA3MmRlNzM4OWE2
MDJhNjMzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03
MzAsNyArNzMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmlu
ZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAg
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAppbmRl
eCAzZGNmZGRjMDc4ODVmZjI0MTFhYzgyOTIyZWZiODEyZjY3NzBkMzIwLi5iNTU3MDc4YjY2YTg4
YjY4NDNiMDdlODJlNGMxNTc5MmJkMGI4Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFdlYlZpZXdFZmw6
OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIHNjZW5l
LT5wYWludFRvR3JhcGhpY3NDb250ZXh0KCZjb250ZXh0LCBtX3BhZ2UtPnBhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcigpLCBtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHko
V2ViUGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJu
IFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOjpjcmVhdGUocGFnZSk7CiB9CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlld0Vm
bDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNy
ZWF0ZShtX2V3a1ZpZXcsIHBhZ2UpOwogfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViVmll
d0VmbDo6aW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGll
bnRCYXNlKiBjbGllCiAgICAgbV9jb2xvclBpY2tlckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9y
UGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0Vm
bDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIHJldHVybiBXZWJD
b2xvclBpY2tlckVmbDo6Y3JlYXRlKHRoaXMsIHBhZ2UsIGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKaW5kZXggZWY5OTExODQ2YTBkOTE2YWFjNGFh
NzE5MzdiZjA5ODgxNmY5N2NjYy4uYTBjYWYxMDNjNWZiYjMyZTViZGYxZmNiMzYwNDUwMmExYWEw
ZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50
KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNlKik7CiAKICAgICBXZWJDb2xvclBpY2tlckNs
aWVudCYgY29sb3JQaWNrZXJDbGllbnQoKSB7IHJldHVybiBtX2NvbG9yUGlja2VyQ2xpZW50OyB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tl
cihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3Jl
YXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Vmll
d0JhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwpAQCAtNjYsMTIgKzY2LDEy
IEBAIHByaXZhdGU6CiAgICAgV2ViVmlld0VmbChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VHcm91
cCopOwogCiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJp
ZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5
PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0
TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNDg0MjEyNzA4ZDMw
N2JhMTc0MzI2MTczZTU1YTNjMGQ3NmQ0ZTBkZi4uY2M0MGI1NmY3OTc2Yzg3NzhiZTAyODYzOTVi
ODk2MmUxZTIxZGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaApAQCAtOTcsOCArOTcsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2Vu
ZGlmCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8
V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
aXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0
aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRv
ckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDAzMzdmM2Y3OWQ1ZDg5
ZjVjNGUyMmIyNzliZmNkN2VkMzZiNGYxMjMuLjY5MGM4NWQ4ZWE5MDI0ODA0ZDc3OWVhNTk4Mzcx
MGM3MzZlYjc0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtNDQxLDE2ICs0NDEsMTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIG5hdGl2ZVdl
YnRvdWMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0
b3I+IHRleHRJbmRpY2F0b3IsIFRleHRJbmRpY2F0b3JMaWZldGltZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZmQyMjkxYTU1NjE1
ZTJlMDZjM2VjMmU5ZDIxOTY5NGJmNWU0OGRlMi4uN2M1MjJjNjFmYzNjM2FkODNlYmI0ODUzMmYy
MzMxOThhNjYxZjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwNywxMCArMTA3LDEwIEBAIFN0cmluZyBXZWJQYWdlUHJveHk6
OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggYzFmNmZjMThlMzU0MGE5MzYzYmZhZjYzOGQzZDFlODk0
ZjI0YWEzNy4uYWJlMzk0Yjc2ZjRiZGI4N2Q4NTU2ODU2OTkzNDMyZWNjNTExYmJmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTIwLDEx
ICsxMjAsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5
PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihX
ZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA3ZDdmNmE0NjRiNWMz
MDQ0ZmNiMzExZDExMDljZDM4NDdjZGIyZWQzLi5kN2I2MzFhNDgwOTA0ODQ5NmJmNmIxZTJkYTBj
MzQ3NDk5Yzc2OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0KQEAgLTQ4NywxOCArNDg3LDE4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRv
bmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wK
ICAgICBbbV93a1ZpZXcgX2RvbmVXaXRoS2V5RXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKSBldmVu
dFdhc0hhbmRsZWQ6ZXZlbnRXYXNIYW5kbGVkXTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSogcGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9w
dXBNZW51UHJveHlNYWM6OmNyZWF0ZShtX3drVmlldywgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsK
ICAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdl
KTsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xv
clBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IsICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIHJl
dHVybiBXZWJDb2xvclBpY2tlck1hYzo6Y3JlYXRlKHBhZ2UsIGluaXRpYWxDb2xvciwgcmVjdCwg
d2tWaWV3KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQppbmRleCA0YzIyMzFiNjllNTVjNGI0OThmMDhjNGEyZmM5NWViNzBkZDU5NmEy
Li5iMjkyOGNmMThjZjhjYmI1YTM3MmZlOGM2OGQ2N2Y5NWVlZGFlNjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzY4LDE3ICsz
NjgsMTcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQogewogICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAg
IHVpbnQ2NF90IHNpemUgPSAwOwogICAgIGNvbnN0IGF1dG8gbWVzc2FnZVRpbWVvdXQgPSBzdGQ6
OmNocm9ubzo6c2Vjb25kcygyMCk7CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6
V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6
ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5
QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5k
ZXggMWVkNzhkMzQ1ZDRlNzQyZDc5ODYwMjVhNmY0MzY3YWYzOGJmZGU0Yy4uYWEyMzI0Y2UxYmEw
NzhkYWEwMzAyYWY0MTAxNWNhNGY5YzlhODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKQEAgLTY3LDIwICs2NywyMCBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1l
KiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJl
c291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCByZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAg
ICAgaWYgKGxvYWRlcikKICAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3Vy
Y2UsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5
RGVmYXVsdCk7Ci0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRl
cjsKIH0KIAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFt
ZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwg
Y2xpZW50LCByZXF1ZXN0KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQo
bG9hZGVyLmdldCgpLCAwLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBS
ZWZlcnJlclBvbGljeURlZmF1bHQpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAg
IHJldHVybiBsb2FkZXI7CiB9CiAKIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1h
eGltdW1CdWZmZXJpbmdUaW1lKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAppbmRleCAyZTgxNzk3YjVjOTQ4ZTk5NzMxM2E2NmVjYmFjMzg2YjU5ZTZmYjk1
Li43NjRlMWFhOGU2NDE0YTMxZmExNjYyZDE2NjYwYjYxNjcwMTZiZTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIoKTsKICAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+
IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3Ry
ZWFtTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3Vi
cmVzb3VyY2VMb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6
OkZyYW1lKiwgV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29s
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGQzZGMyNDdlNDhjZDYx
ODdkNjkyZTZlNDFjNDJlNmFhN2E5MmNlYWYuLjM5ZTliM2Q0OWVmNmJkMWIzNGYwODEzMTA0MGNi
NDQ5NWUwOWVjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTEyLDEwICsxMTIs
MTAgQEAgTmV0c2NhcGVQbHVnaW46On5OZXRzY2FwZVBsdWdpbigpCiAgICAgbV9wbHVnaW5Nb2R1
bGUtPmRlY3JlbWVudExvYWRDb3VudCgpOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
PiBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChOUFAgbnBwKQorUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
PiBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChOUFAgbnBwKQogewogICAgIGlmICghbnBwKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TmV0c2NhcGVQbHVnaW4qPihucHAtPm5kYXRhKTsKIH0KQEAgLTcwOSwxMCArNzA5
LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dCwg
ZGlydHlSZWN0KTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1
Z2luOjpzbmFwc2hvdCgpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6
c25hcHNob3QoKQogewogICAgIGlmICghc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSB8fCBtX3BsdWdp
blNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCkBAIC03MjgsNyArNzI4LDcgQEAgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAKICAg
ICBwbGF0Zm9ybVBhaW50KGNvbnRleHQuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVn
aW5TaXplKSwgdHJ1ZSk7CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYml0bWFwOwogfQogCiBib29sIE5ldHNjYXBlUGx1Z2luOjppc1RyYW5zcGFyZW50KCkKQEAg
LTEwNjQsOSArMTA2NCw5IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBOZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBOZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEludFBvaW50IE5ldHNjYXBlUGx1Z2luOjpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2lu
dCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApp
bmRleCA4YjMyODNjOTc5M2VhNGYwNGIwMjMxZjk1NzcwZDBiODZmZmUzNWYzLi5kODhiNmZkN2Zk
ZDViZjlkNWM1Zjk4NDllMjZjMjg3YTcyMGY4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdp
bj4gY3JlYXRlKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKICAgICB2aXJ0dWFs
IH5OZXRzY2FwZVBsdWdpbigpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVn
aW4+IGZyb21OUFAoTlBQKTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9t
TlBQKE5QUCk7CiAKICAgICAvLyBJbi1wcm9jZXNzIE5ldHNjYXBlUGx1Z2lucyBkb24ndCBzdXBw
b3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgaXNCZWlu
Z0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGluaXRp
YWxpemUoY29uc3QgUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJp
ZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVn
aW5MYXllcigpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC0yNjQsNyArMjY0LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBjb252ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52
ZXJ0aWJsZSkuCiAgICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCA1ZDY1YTY2NmVhOTE0NDY0NTJlMzFiNmFjMTRkODM5MjgzMGFj
MjE4Li4zMGM3OTBmMTM0YTY3OWFiYmI4ZDcwYjM0ZWJmODhjOTk0YmFkNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEx
OCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJv
bFRpbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0
YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBi
b29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA5ODQ3MDE4ZjNjNjY1NzY0NjUxYTQ5ZWY4OGFlOTQz
YjA4OGRmMzhhLi45MzI0OTQ4MjUyYjcwYzg2YTUxMzhjMmQ5M2MwNTU3ZWEwZTkwMjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtMTE1Miw3ICsxMTUyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxh
eWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICBzY3Jv
bGxiYXItPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwog
fQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKIHsKICAgICBpZiAo
c2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTY5LDcgKzEx
NjksNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgp
CiAKICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc25hcHNob3RJbkNvbnRleHQ6Y29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGJpdG1hcDsKIH0KIAogUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXll
cigpCkBAIC0xNjM1LDEyICsxNjM1LDEyIEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5
TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewog
ICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKICAgICBpZiAoIXBkZkRhdGEpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OndyYXBOU0RhdGEocGRmRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggYTE0ZTk4YWEyOWFkMmFlYzliNjk2MDNlMWMx
YzkwNjgyMjJkN2ExMy4uNjJhYjg0N2M2YmVjNDk0YTliYjQzZDIyOWM5MWY3ZDk5ZDM1NjkzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTM1LDcg
KzEzNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmco
KSBjb25zdCA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0byBkcmF3IGl0c2VsZiBp
bnRvIGEgYml0bWFwLCBhbmQgcmV0dXJuIHRoYXQuCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IElmIGEgcGx1Zy1pbiBpcyB1c2luZyB0aGUgQ29yZSBBbmltYXRpb24gZHJhd2luZyBtb2RlbCwg
dGhpcyByZXR1cm5zIGl0cyBwbHVnLWluIGxheWVyLgpAQCAtMjgzLDcgKzI4Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDFlYzE2YmUxNzFhNTVkYmVhMzI0MzRk
MGIwZTQ4ZDcyMzdmNjEzNWYuLjEzY2E1NDMyNThmNzY1Mjc4NjFiMGRhMzM0MzllZDZlZmVhMGVk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcApAQCAtMjM4LDE2ICsyMzgsMTYgQEAgYm9vbCBQbHVnaW5Qcm94eTo6c3VwcG9ydHNT
bmFwc2hvdHRpbmcoKSBjb25zdAogICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAotUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCitSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94eTo6c25hcHNob3QoKQogewogICAgIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIHNuYXBzaG90U3RvcmVIYW5kbGU7CiAgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBz
aG90KCksIE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBzaG90OjpSZXBseShz
bmFwc2hvdFN0b3JlSGFuZGxlKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIAogICAgIGlmIChzbmFw
c2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZl
ciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJl
dHVybiBzbmFwc2hvdEJ1ZmZlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVy
OwogfQogCiBib29sIFBsdWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKQEAgLTcxNiw5ICs3MTYs
OSBAQCBJbnRQb2ludCBQbHVnaW5Qcm94eTo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAogICAgIHJldHVybiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0u
bWFwUG9pbnQocG9pbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
UGx1Z2luUHJveHk6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gUGx1Z2luUHJveHk6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmlu
ZGV4IDg5MDQxYzA0OThjNjNlNmY4ODI5YzU1NWI0OTIzNGYwZWMwNmI1ZmIuLmUyZjk4YWQ3ZWNj
Y2VjZTI5ZDQ4ODA5NzkyYTA4MzEwOGE3YWI3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRp
bmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTEz
OSw3ICsxMzksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBj
b252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcg
Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGFhOGY0MzE2OWM4NWY1NzQ1NzNlYTdiNGJlNjI1ODMz
MTc4ODc1M2YuLjM1Nzc4ZjgyMTVhOTZhMDU0ZWU3ZDdkZTg4N2MxNGZiZDdjZGZhMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoJm1hcC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAotUGFz
c1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VB
cmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBt
YXA7CiAKQEAgLTg2LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkKICAgICByZXR1
cm4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOwogfQogCi1QYXNzUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5l
d1BhZ2UpCitSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNv
cHkoUGFnZSogbmV3UGFnZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oCmluZGV4IDZjNTE2NzRjNzFhMjAwY2NlNDc4ZjdiYzA5NDJkZjdlOTM4
YmQxOWEuLjM3ODE3MTczZTI0ODViODY2YThhZjMyOTM3NTUxYzc3ZDI2ZDgzMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CiAKICAg
ICBjb25zdCBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAgIGNvbnN0IHVp
bnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAKaW5kZXggZmQwYTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NS4u
NDUyMDYyMDAzZmRhZjZkODYyMTg4MDIyYTc1ZmYxZGRiZTgxODBkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xODUsMTIgKzE4NSwxMiBAQCBzdGF0aWMgdm9p
ZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0
YXRlJiBmcmFtZVN0YQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gdG9IaXN0
b3J5SXRlbShjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK1JlZjxIaXN0b3J5SXRlbT4gdG9I
aXN0b3J5SXRlbShjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKIHsKLSAgICBSZWZQdHI8SGlz
dG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFp
bkZyYW1lU3RhdGUudXJsU3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOwotICAgIGFwcGx5RnJhbWVT
dGF0ZSgqaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CisgICAgUmVmPEhp
c3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUocGFnZVN0YXRlLm1h
aW5GcmFtZVN0YXRlLnVybFN0cmluZywgcGFnZVN0YXRlLnRpdGxlKTsKKyAgICBhcHBseUZyYW1l
U3RhdGUoaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CiAKLSAgICByZXR1
cm4gaGlzdG9yeUl0ZW0ucmVsZWFzZSgpOworICAgIHJldHVybiBoaXN0b3J5SXRlbTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCmlu
ZGV4IGU0MTU0MTVlMTRlNmYzNGQyZjBlYmI1MWNlNjY4YjM0NDA4M2QwNTguLmJlZTlkMjI4Y2E3
MzlhNWE4ZjY2NTBjYWZjZjdiZWYwZGJjZDRkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFBh
Z2VTdGF0ZTsKIAogUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJ
dGVtJik7Ci1QYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNv
bnN0IFBhZ2VTdGF0ZSYpOworUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVt
KGNvbnN0IFBhZ2VTdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCmluZGV4IDhmZDNhMTE2NzJhMzY1NmIzZDVjMmZmYjg1ZGRlNDg3YzY4MWZm
NzYuLjI5ZmE2M2NkNzhhNjFiYmYxYTkyNzNlOGQ4MTkzYjNmODJkMWMzNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTgzMywxMiArODMzLDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVm
UHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6
UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51Ojpj
cmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBv
cHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViU2VhcmNoUG9w
dXBNZW51OjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggZTIwODFiOTc3NGMxYjQ3MjliNDEyZDNkMmQ1Y2Y1MDQyNzRkZDA5Ny4uMTY1M2RmYzEwMDZm
ZTRlOTgzMjg2NjIwOWFjMDAyYjhjODdkZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0y
MDMsOCArMjAzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJG
YWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZmRiOGM2OGQ5NzJmMjhiMDdlOTMyODczNDBkYTdiNTcxNjI3YTU2Yy4uYmNkMDUx
M2Y4ZmMyZTViMjQzZmYzNjYwMTQxYTRkZTJkZGI4NjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTEyNDIsNyArMTI0Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRl
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRh
KQogewogICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZURvY3VtZW50TG9hZGVyKCpt
X2ZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQpAQCAtMTM3
NCw3ICsxMzc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyICpkb2MKICAgICBtX2ZyYW1lLT5jb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoZG9jdW1lbnRMb2FkZXIsIHJlcXVlc3QsIHJl
c3BvbnNlKTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5I
ZWlnaHQqLykKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAt
MTM4MywyNSArMTM4MywyNSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgRnJhbWUq
IGNvcmVTdWJmcmFtZSA9IHN1YmZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVTdWJm
cmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFT
Y3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBpZiAoIWNv
cmVTdWJmcmFtZS0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFVSTEludG9D
aGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIGNvcmVTdWJmcmFtZSk7CiAKICAgICAvLyBUaGUgZnJh
bWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50
LgogICAgIGlmICghc3ViZnJhbWUtPmNvcmVGcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKHN1YmZyYW1lLT5jb3JlRnJhbWUoKSA9
PSBjb3JlU3ViZnJhbWUpOwogICAgIGlmICghY29yZVN1YmZyYW1lLT50cmVlKCkucGFyZW50KCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBjb3JlU3ViZnJhbWU7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1
Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBBU1NFUlQocGFyYW1OYW1lcy5zaXpl
KCkgPT0gcGFyYW1WYWx1ZXMuc2l6ZSgpKTsKICAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsK
QEAgLTE0MjAsMTIgKzE0MjAsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW4KICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2Zy
YW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCBwYXJhbWV0
ZXJzLCBwYXJhbWV0ZXJzLm1pbWVUeXBlKTsKICAgICBpZiAoIXBsdWdpbikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6
OmNyZWF0ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpbkVsZW1lbnQpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCAzY2IxNWU5NDk0ODE2ZjUxOGZlNjY1MDcwYjMyNGI2ZmU1NDg3N2M1Li41OTBmOTcx
MDNmNTlmMDY4ZGNkMjliMzI3NDk5MDU4OGU2OWY1ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0
YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKQEAgLTE4NSwxMCArMTg1
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKICAgICAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWNy
ZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJy
aWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDYwYzc4ZTY5ZjA4NzY3MzZlMmFiYjEwYWUyOTQxYjgwM2U2YmYxMWQuLmQwODJl
MjhkZGE4NTkwMTczOTUyOGRiMDUxNzE5NzlhM2M4OGU4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0MSwxNCArMjQxLDE0IEBAIHBy
aXZhdGU6CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291
bnRlciwgd2ViUGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUGFzc1JlZlB0cjxXZWJQYWdl
PiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZihuZXcgV2ViUGFnZShwYWdl
SUQsIHBhcmFtZXRlcnMpKTsKKyAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGFnZShwYWdlSUQsIHBhcmFtZXRlcnMpKTsKIAogICAgIGlmIChwYWdlLT5wYWdlR3JvdXAo
KS0+aXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVj
dGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5nZXQoKSk7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIo
KSk7CiAKLSAgICByZXR1cm4gcGFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNDkwOSwxNiArNDkwOSwxNiBAQCB2b2lkIFdlYlBh
Z2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShXVEY6Ok9wdGlvbmFsPHVpbnQzMl90PiBzY3Jv
bGxiYXJTdHlsZSkKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVjYWxjdWxhdGVT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4g
V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkK
K1JlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUm
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGRv
Y3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0
dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IFdl
YkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogCiAgICAg
aWYgKG1fcGVuZGluZ05hdmlnYXRpb25JRCAmJiBmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zZXROYXZpZ2F0aW9uSUQobV9wZW5kaW5nTmF2aWdhdGlvbklE
KTsKICAgICAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gMDsKICAgICB9CiAKLSAgICByZXR1
cm4gZG9jdW1lbnRMb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci5s
ZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIo
V2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBGcmFtZSYgZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyZDdlOTNmMzAxNGZk
YWFhMGEzYjQxZGVlY2U4NzUxYTk3YTgyMDFmLi5iODdmNDZkMjVlZTVlMDI4ZTcxYWUzN2MzNTdh
MTI4NDQ1ZDY0YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCiBjbGFzcyBX
ZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
UGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZT4gY3JlYXRlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHN0
YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQg
cmVpbml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBA
IC04NzMsNyArODczLDcgQEAgcHVibGljOgogICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KFdURjo6T3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
ICovPiBzY3JvbGxiYXJTdHlsZSk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Cisg
ICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJD
b3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRl
cihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKICAgICB2b2lkIGdldEJ5
dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTExMjIsNyArMTEyMiw3IEBA
IHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRl
QWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gbG9va3VwVGV4dEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkg
KipvcHRpb25zKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZv
aWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25E
aWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDhmOTg2NmQ2M2ZmZWNiMGU4Mjk5NmQ4NzcxM2FlNjQ0
MzY3OThiYzEuLmE0MGM4MmQ5NjU5MDYxYTE2ZWRlMGIxM2NiMjQ1ZmViMDVhZTRkNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFj
dGlvbkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVz
dChpbW1lZGlhdGVBY3Rpb25SZXN1bHQsIGltbWVkaWF0ZUFjdGlvbkhpdFRlc3RQcmV2ZW50c0Rl
ZmF1bHQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNv
cmU6OlJhbmdlPiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxvY2F0
aW9uSW5WaWV3Q29vcmRpbmF0ZXMsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCitSZWZQdHI8V2Vi
Q29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9pbnQgbG9j
YXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBN
YWluRnJhbWUmIG1haW5GcmFtZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICgh
bWFpbkZyYW1lLnZpZXcoKSB8fCAhbWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256940</attachid>
            <date>2015-07-16 17:51:05 -0700</date>
            <delta_ts>2015-07-16 18:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150717094954.patch</filename>
            <type>text/plain</type>
            <size>117898</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhODQ4YzYwNjhlY2Iy
MGFiMGNiMmQzNDRiMzUxN2FmMTIyYzliYi4uYzgwMTEzMTlmMjU4YjRhYmMwZWE0ZTQ1ODk5YmNi
MzkwNGIzNDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTUgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpbmRpY2F0b3IgcmVj
dCB1bml0aW5nIGNvZGUgdG8gVGV4dEluZGljYXRvcldpbmRvdyBpbnN0ZWFkIG9mIFRleHRJbmRp
Y2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkNThjNzJhZmRkNDA0MDE0ZTk3ZWY4MTVlZjJjMGVj
M2E0YTZhYTE3Li42NGNhZTEzNDI1ZDI1NzllNjQ3YTgyMjIxODRhNmVjYmMyMDk5MDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB3a1BvcHVw
TWVudSBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2U7IGl0J3Mgbm90IGNhbGxlZCBmcm9tIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAwMjBlZjM3NGU1NDZjYmE3ZmQ4YWQ5ZDgyZGNlZjRk
NGEzNDAzZWQzLi5iYzlkNzRlOWMyZTM0NDczMTI3MDY5M2M5YjcyYzc3YjFmYTUyNDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTUtMDctMTUgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTWFpbnRhaW4g
Y29uc2lzdGVudCBDT00gSW50ZXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU5OWIxYTYxNmUzOTMxMjk5
NmI3NDZhYTkzNGExYjUxYjZiMDY5ZTguLmQ4MjZlNTBkY2QwOTVhNTFlM2Y2OWU2MTVkZTM4NjFm
NGI1ZDNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDctMTYgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNz
UmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRl
cGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFj
ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQ
cm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxs
YmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3Rlcktl
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Vm
bDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6Y3Jl
YXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9va3Vw
VGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGb2xsb3cgdXAgdG8gcjE4
Njg4NyBmb3IgR1RLKy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
OTU1YTljZjlkZGM2ZDUyYTUxNThkMzRhZmVkYzlhOWEwZTViNjE4Yi4uZWE5MjU1YzgyMGYyM2Q0
YTk0Y2Q1ZGNjMmFiMGVmYzk2YzE1NjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9Owog
CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdl
TmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGUgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJy
aWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIG92ZXJyaWRlCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxFbXB0eVBvcHVwTWVudT4gbV9wb3B1cDsKIH07CiAKLVBhc3NS
ZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3QKK1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50
OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOwogfQpAQCAtMTgzLDE5
ICsxODMsMTkgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWUKIHsKIH0KIAotUGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIHJldHVybiBEb2N1
bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgaW50LCBpbnQpCitSZWZQdHI8RnJhbWU+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sKQorUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdl
dCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTM4MTIwMzhiZjZkZTVk
MGE4MjcwMTU3Y2NmMTdkYjZlN2MxMzE0OS4uOGM1N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRm
YzE1ZGI4NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTE4LDgg
KzExOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJl
Y3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFy
Y2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
IApAQCAtMzQzLDcgKzM0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8RG9jdW1l
bnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNh
Y2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KIApAQCAtMzcwLDggKzM3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwg
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiNzIwMWVlODYxYzA2NzVlMmZmNzg0ZmY4OGQ0ZDc3Y2M3ZGY4
NGViLi4yNGJhYjg3YzA3NjE1YjlkM2JjMjNlZWYzMWZhNDk1ZjYxMjk0YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBGcmFtZUxvYWRl
cjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogewogICAgIC8vIFRo
aXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4gaW5pdGlhbCBl
bXB0eSBkb2N1bWVudC4KLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0
KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSku
cHRyKCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExv
YWRpbmdNYWluUmVzb3VyY2UoKTsKIApAQCAtMTMxNSwxNiArMTMxNSwxNiBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3QpCiAgICAg
aWYgKCFyZXF1ZXN0Lmhhc1N1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0U3Vi
c3RpdHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0g
bV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKIAotICAgIGxvYWQobG9hZGVyLmdldCgpKTsKKyAgICBsb2FkKGxv
YWRlci5wdHIoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBhY3Rp
b24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIGFjdGlvbi5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogCiAgICAgaWYgKGxvY2tIaXN0b3J5ID09
IExvY2tIaXN0b3J5OjpZZXMgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5z
ZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExvYWRlci0+ZGlkQ3Jl
YXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51cmxGb3JIaXN0b3J5
KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKSk7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAog
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKIAotICAgIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCB0eXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIu
cHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2Fk
ZXIpCkBAIC0xNTQ0LDE0ICsxNTQ0LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgLy8gV2Ugc2hvdWxk
IGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGluIHRoaXMgY2FzZS4KICAgICByZXF1ZXN0
LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAotICAgIFJlZlB0cjxE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVx
dWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBh
cHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2Fk
ZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1
ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdE
b2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KGxvYWRlci5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigp
KTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiAKLSAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
LCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKQEAgLTE1NzIsOCArMTU3Miw4IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGRvY3VtZW50IGxvYWRlciBmb3IgdGhlIHJlbG9hZCwgdGhpcyB3aWxsIGJlY29tZSBtX2RvY3Vt
ZW50TG9hZGVyIGV2ZW50dWFsbHksCiAgICAgLy8gYnV0IGZpcnN0IGl0IGhhcyB0byBiZSB0aGUg
InBvbGljeSIgZG9jdW1lbnQgbG9hZGVyLCBhbmQgdGhlbiB0aGUgInByb3Zpc2lvbmFsIiBkb2N1
bWVudCBsb2FkZXIuCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVu
dC5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVE
YXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3VtZW50TG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgUmVm
PERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihp
bml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0
LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9
IGxvYWRlci0+cmVxdWVzdCgpOwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogICAgIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBlbmRUb0VuZFJlbG9hZCA/
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gOiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQs
IDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjMTNhMTk2
MWY0MmNiODdkODBjMDVmZjMxYmU0Y2JiNTRmZTRhNTYyLi5jOWRmZjIyYjk3ZjRmYmMzZmEwNjRh
OTUzZWIwNTdlYzBhODM5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpID0gMDsKIApAQCAtMjcxLDggKzI3MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9h
ZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRn
ZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkwNzEzMTBiZTA2MDViMTgxOWQyZjYzY2I4NjQ1
ODcyODY5NDc3NjYuLjFhZTNmYmNhMTNjZGFkOGEwYzU4YjMyYjJlM2VjMjJlMDY1YmFiYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+UmVzb3VyY2VMb2FkU2No
ZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUq
IGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCkBA
IC0xMjYsMTIgKzEyNiwxMiBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYQogICAgIGlmICghbG9h
ZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAjZW5kaWYKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUs
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1l
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgY2xpZW50LCByZXF1ZXN0KTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNs
aWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2NoZWR1bGVMb2FkKGxv
YWRlci5nZXQoKSk7CiAgICAgcmV0dXJuIGxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA5ZmI5ZmI0YTc1MDU5MmQzYzI5OGNlYWQ4
NjQzN2UwYzIyNGM4NTQzLi5iMDVkYTA0NDlhYmY3MTMxNTgzYWUyMDFhZTA0M2E4YjhlZWQ4NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC01MSw4ICs1MSw4IEBAIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoUmVzb3VyY2VMb2FkZXIqLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAw
ODA4MzE2NzA3NTI4NGNhNDQ0Y2U1NDMxNTI5ZWEwMzY3NzI0ZWFkLi4wM2YwNTg4NTNkZmNjNWJi
MTdjZjk1MmQ4ZmYyNTQxMWRlYTExMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6On5T
dWJyZXNvdXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1
YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3Vi
bG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9w
dGlvbnMpKSk7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lLCBDYWNoZWRSZXNvCiAjZW5kaWYKICAgICBpZiAoIXN1YmxvYWRlci0+aW5pdChyZXF1ZXN0
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHN1YmxvYWRlcjsKIH0KICAgICAKICNpZiBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IGRmMDQzMmFkY2Ex
NGI5OGI0NDAxYmFiNGIyMmZmODUwOWZmNWUzOWEuLmEwODkwMWI1NTVkODRlYTQ2YzQ1ZWU2ZTk4
OGU1YzRmYjhlM2RjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBj
cmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAK
ICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggNDRlMjMyNjgyMjY1NjU2NWI2YmNlZmNiNTRlNjFjNmM4ZjQ5NTAzOS4uZDJiZmM2NTNj
YmZlYzEzMDE1NDY0MjAwNjdlYWE0MDg4MDk1YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtNTQ4LDEzICs1NDgsMTMgQEAgYm9vbCBDaHJvbWU6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQuaGFzT3BlbmVkUG9wdXAoKTsKIH0KIAotUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2
ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZVBvcHVwTWVudShjbGllbnQpOwogfQog
Ci1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkg
Y29uc3QKIHsKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICByZXR1cm4g
bV9jbGllbnQuY3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApp
bmRleCAyMjI1MTg0YzhiZjViMDRkZmMwMDgwZGY5Y2E5N2Q0Mjk0N2M2OGI5Li5jMGJkODU4ODA3
ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTE3
Myw4ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpOwogICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3Jp
dGluZ0RpcmVjdGlvbigpOwogICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisgICAgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRl
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIGNvbWUgdXAgd2l0aCBhIGJl
dHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IDQ3ODZlYzgwNWU1OWI4ODRhNjA3MzdmOTA0YTI4MDRhMGFkY2NkZDguLjRmODE0M2QyYjFm
ZTFjZjMzOWM0OGY2ZTY3NzMxMjgyMDE4ZTQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtMzc1LDggKzM3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpID0gMDsKICAgICAvLyBD
aGVja3MgaWYgdGhlcmUgaXMgYW4gb3BlbmVkIHBvcHVwLCBjYWxsZWQgYnkgUmVuZGVyTWVudUxp
c3Q6OnNob3dQb3B1cCgpLgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVw
TWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA3OTI3YTQ5YjQzODUzZGNjMTMx
ZTdiNzU2NzgyYTQwMjc0ZmIzNTQ4Li4wNzZkMDFiZTk0MDVlMWMwNDE1ODkwNTk3OWFlNjRkZjEz
Y2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGljIFJlZkNv
dW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRD
b3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAyZTc2ZDdjZGQwZTE4OWFlZGZmNjhi
MTEyOWZkMWE3ODIzYThiYTZjLi4wYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2Fj
YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxh
eWVyKiA+JiBhcnJheSk7CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAw
OyB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tp
bmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9CiAgICAgRmxvYXRQb2lu
dCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9s
bFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBib29sIGlzQW5jZXN0
b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBs
aWNhVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmNwcAppbmRleCBiMzNiYmI2MjkzMDA1ZWZmNmFmMzc2YzQxNDE4ZWRhYzU1MDhh
MTBhLi5lOTdmY2Q4OWMyYzgxYmZmMTc4ZWE5YjVjNGZlM2U4NjYwNGM0MTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCh1aW50MzJfdCkKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZm
ZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBhbiBlbXB0eSB0ZXh0dXJlLCB3ZSBz
aG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBpbnRvIGEgQml0bWFwVGV4dHVyZS4KICAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCAzMWQxODE5MmNkM2VmMGFiNDY4
NjgxY2JmZTVhZGZlOTY4MzUzOGJiLi4yMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0OWU2ZDAyZDZj
YTcwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KICAgICB2b2lkIHNldEdy
YXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dh
cEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDY0
OGU3MWYwMGEwOWFhZjdiYmZlMzkyODBlYzBlYTc3ZWIxNDg2ZGYuLjdlMjIxMmU1MjVmNDJmNTVk
ZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJUaWxl
IHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgaW5saW5lIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgaW5saW5l
IEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgaW5saW5lIHZv
aWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVyZSA9IHRleHR1
cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBt
X3JlY3QgPSByZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuY3BwCmluZGV4IGQzNTcxMGE2OTI4MWE4MjA2MTZkZTMxMjEzM2M0ZDNjN2ZmOTE3ZTgu
LjM2MjVjMTQ4NjQzMWQ0NDVhMmE5OTEzMjBlZjUxMDFmNDVmZTE2ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcp
OwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRpbGUgOiBtX3RpbGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHR1cmUgPSB0aWxl
LnRleHR1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCAyZjc5MmRjZjk0ODQ4ZDRiOGFiYjBhMjlmMTBkODMxODRlMzBmNTlkLi40ZjNjY2U4
OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUp
OyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0
IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXgg
MDljYTNkZTA0YmVjZDY1NzliYTI1NWZiYTFlMzMyNmFjMTFhNWJiYi4uYmRlOTVmNTE4MDc3OWFm
YTQ4MTllOTNiMzZmOTA1NTY4OWVlNDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlLmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDRkYTRkMTdmOGFlNTQ4MWYzMDlmMzA3ZmMwYjk3
ZTkxN2ZmNDNlNC4uNmFhMGYzMzE2OTlmZDAyOWUxMGJmYTczYTUxYWJkNTk2ZWE3OTU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwo
KQogICAgICAgICBjbG9zZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwpAQCAtOTYsMTAgKzk2LDEwIEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
UGFnZSopCiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFN
YXAuZW5kKCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgaSA9IG1fc3RvcmFn
ZUFyZWFNYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5t
X3N0b3JhZ2VBcmVhTWFwLnNldChpLT5rZXksIGktPnZhbHVlLT5jb3B5KCkpOwotICAgIHJldHVy
biBuZXdOYW1lc3BhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CiB9CiAK
LVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBwcnBPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoIW1faXNTaHV0ZG93bik7CkBAIC0xMDcsMTEgKzEwNywxMSBAQCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gcHJwT3JpZ2lu
OwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwogICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOwogCiAg
ICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBv
cmlnaW4sIG1fc3luY01hbmFnZXIsIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0
KG9yaWdpbi5yZWxlYXNlKCksIHN0b3JhZ2VBcmVhKTsKLSAgICByZXR1cm4gc3RvcmFnZUFyZWEu
cmVsZWFzZSgpOworICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIH0KIAogdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCA1MjU5OTcxYzVlYzQwNjk3YmE3Y2ZiOWM0ZDkwYTRjNmFjNmEyMmY3
Li43MGM2YjU3MzE0ZTdjYmEzOWViMTlhM2M3OGE4NzFhN2NkOGJjNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4p
ICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pICBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpIG92
ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJl
ZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1h
cCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAxYjU5MzVkYTljM2ZkYTM3MzIyMDE4
MGZkZjBjMTY0NjQ2MTdkMjc3Li5iZDk0Y2U3NWUxN2VkOTBjMTMxMzRlMzlkZWVhZmIzNmJmNzI2
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MuaApAQCAtNzksOCArNzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVj
dGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1l
bnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2ViQXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCmluZGV4IDQ2Zjg3ZDhjYmMwMGZhMTExNmY0NzY2ZGRkOWMxNDFlNWE0ZGFl
NmUuLmI5Y2YxMzk3ODRlNmY1MjBlNGVjYTg2OWQ0YjJiNDlmM2ZkYzNkODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50SU9TOjpzZWxlY3RJ
dGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElP
Uzo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51SU9TKGNsaWVudCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA1ZTNiMmRjYmNhZWE5NWNmZWFhZmI4ZTNiNmJmZGZiMzkzNTVkYWJiLi5kNzU1
ZmM3YzE5NmFjZDc4YmM2Y2JjYWY3NWIyYzZjNjZmNWI1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTg5LDggKzE4
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChi
b29sKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDIwZjZkNzI4MjQ0Njg2ZmIzZDI2NWZhN2Fk
MTU1NzczNzBlNWZkZTYuLjFiOWNmOWMzYTdhMjYyNTIzMGU0MjMzZGMwNzkzNmUwOTk4MDFhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KQEAgLTg0Miw3ICs4NDIsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6aGFzT3Bl
bmVkUG9wdXAoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKTsKQEAgLTg1MSw3ICs4NTEsNyBAQCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVNYWMoY2xpZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA3Y2YxNThmOTZiNjM4YjcyOTQwMjY0MDllMTk3MmUyNDU2MGJiMGQ3
Li5jZDFmMjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2FmZjQ1MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0
IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAorICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0MWQwMTljNWViYjA3YmZmYmU0Y2RkZjc2
OGI4NzU0YTM5MjYzNjczLi45OGNlZGQ0ZWU2MDI0MzVhZTMyZThjZjAyMTc5ZmY1MDAzYzdjMzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMyMiwxNSArMTMyMiwxNSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICNlbmRpZgog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAg
ICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVy
TWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIFJlZjxXZWJEb2N1bWVu
dExvYWRlck1hYz4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gW1tX
ZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2FkZXIuZ2V0KCld
OworICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbW1dlYkRhdGFTb3VyY2UgYWxsb2Nd
IF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5wdHIoKV07CiAgICAgbG9hZGVyLT5zZXRE
YXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwogICAg
IFtkYXRhU291cmNlIHJlbGVhc2VdOwogCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGxvYWRlci5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwm
IHVybCkKQEAgLTE2MDgsNyArMTYwOCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNh
bkNhY2hlUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBp
bnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwpAQCAtMTYyNywxOSArMTYyNywxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZwogCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJi
aXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4K
ICAgICBpZiAoIXJlc3VsdC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgCiAgICAgY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkubG9h
ZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIHJlc3VsdC5nZXQoKSk7CiAKICAgICAv
LyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhl
IGRvY3VtZW50LgogICAgIGlmICghcmVzdWx0LT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE9iamVjdENv
bnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKQpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXpl
LCBIVE1MUAogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEb2N1bWVudExvYWRlck1hYy5oCmluZGV4IGIyY2MzNzU4ZjdiMzA3NmZhZWM1NDgzMzU3Yjcz
OTNhMGVhMWRiMzIuLmU4MDMxNGIyYTA4OTQ4NGE0YTJlNDllNjA5NzRmZTYwOTdiMWY3OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLmgK
QEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJEb2N1bWVu
dExvYWRlck1hYyA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBkYXRhKQorICAgIHN0YXRpYyBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJEb2N1bWVudExvYWRlck1hYyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkRvY3VtZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKICAgICB9
CiAKICAgICB2b2lkIHNldERhdGFTb3VyY2UoV2ViRGF0YVNvdXJjZSAqLCBXZWJWaWV3Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCA0NmY4ZTVkYzQ3ZjhlOGQwODFmNDc4NGU5ODQyZDQ5NjkxY2M1Y2U3Li4xODkw
NmRmMDQ2OTlhYmI3N2Q0Mjg0YTFmODliYzhhOWY3ZDExYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCwx
MiArNzgwLDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitS
ZWZQdHI8UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVw
TWVudVdpbihjbGllbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDI1MWY4NjJmNDNiODBkODJmMjdhZDhlODIxMzE5MGJkYTAzNzVmOGYuLmY2M2FjZWZhZDMxYzcw
MjY5NzgzYzA1N2Q5NDJiYWYxYmNhY2JlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTEsOCArMTUxLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0
aW5nRGlyZWN0aW9uKCk7CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2Ny
ZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBjYmQxOTNlOGZkMGZkYWQ2NTc0ZjNkNWY0YjE4MmQx
ZGExZmJhODkuLmRmMGY5MTMxYzhiMjEzMzAwY2Y1Mzk5ZTNkNThhNDFlNzBhNGM1YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTk0OSwxNCArOTQ5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRl
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRh
KQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRM
b2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3Vt
ZW50TG9hZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKIAogICAgIENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNlKEFk
b3B0Q09NLCBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsKIAog
ICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1cm4g
bG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODdiNmQ1MTZhYzM5
YTlhMDJlYWM1ZTdiNTFlYTc4MWM2NjQzMjE5Ni4uODE5ZGFmMzM0NWM0MGJjNjJiMzI3NmNlN2Iz
ODI2YzI5YzVkMzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAgdmlydHVhbCBSZWY8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApp
bmRleCA0YzMxMDNkNWUyMDc3NzYxYWU3YmMzZGI3YjhmMTg2NDQzZDU1NWUzLi42MTY1M2NhYzE3
OGQzNGZhYTQ2OWZmMTA2ZTUwNTRmN2Q3NzkwM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZQogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9
CiAKLVBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JD
cmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCitSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFiYXNl
cy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBQYXNzUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVl
SURCRGF0YWJhc2UoY29ucwogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFz
ZSA9IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGUoaWRlbnRpZmllcik7CiAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IGRhdGFiYXNlLmdldCgpOwotICAgIHJldHVybiBkYXRhYmFzZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGFiYXNlOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6cmVtb3ZlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFi
YXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5oCmluZGV4IDU5YTYxOGJlNDA1OTVjMjhjMjJiZGIyZTljYTIxODE3OTZkMjNjNjkuLjQ3YzY5
MjU4NmNmZjlkMzBlOWNkNzE4NjM0NGNiOTM3ZjBmZWY2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25z
dCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJh
c2VJZGVudGlmaWVyJik7CiAgICAgdm9pZCByZW1vdmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBV
bmlxdWVJREJEYXRhYmFzZSYpOwogCiAgICAgdm9pZCBlbnN1cmVJbmRleGVkRGF0YWJhc2VSZWxh
dGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGE5ZjQ2N2U4
NzhkZTgxYzY2MWJkZWQzNWQ3NjE2NjMwNjExYzQ3Yy4uYTU2ZDkyNTAzYThlOTBlOTk5MmNmNzcw
YTI2ZWMyMjMyYTI0ZjdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIFBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZQogICAgIG1faW5pdGlhbGl6YXRpb25SZXBseSA9IHJlcGx5OwogfQog
Ci1QYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9u
UmVwbHkoKQorUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1
Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0
aW9uUmVwbHkoKQogewotICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHkucmVsZWFzZSgp
OworICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHk7CiB9CiAKIGJvb2wgUGx1Z2luQ29u
dHJvbGxlclByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYg
Y3JlYXRpb25QYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggOWVlZDJlNzExOGM3MWY4N2QzNmU5ZmQy
ZTZmYjA0ODI4YzczYTc3Yy4uMmUzMzNmNGZjN2EwZGI4OTIzODI5NTNiNDgyMDIyMzFmNThlMmFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlh
bGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemluZzsgfQogICAgIAogICAgIHZv
aWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+KTsKLSAgICBQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVw
bHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFs
aXphdGlvblJlcGx5KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBjNjZkMjhiNzUz
OTc0YTA1NzQwY2I2YWY2OGUyYzQ4NDgxZDkzYzMyLi41MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJj
ODAwOGUwZjJhOTQwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiAgICAgaXQtPnZh
bHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNl
dCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3Rp
bGVzLnZhbHVlcygpKSB7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dGlsZS50ZXh0dXJlKCk7CkBAIC05OSw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmU7CiAgICAgfQogCi0gICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4oKTsKKyAgICByZXR1cm4gUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAKIHZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggZDkwMzQ5ZDYzYTVmOGI0
NmY2NjZjZWM2MjE0NmI2MjVjMDQzYzNiNC4uNWRhZmEwMTEyODdlOWFjYTQyNzQ0MmIzZWQ2N2M3
YWQ5M2M1ZGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02
MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlE
KTsKICAgICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQz
Ml90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAg
IHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAg
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcios
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA2YjhkMTFkYTcy
N2UwYWQ1NDVjOWVlM2M1ZjZmNzQ0YjllMDg0YWVhLi4wZGQzMDY0ZWUzYjg5M2Y1YjhmMDJlOGYz
ZDIwODAzMTA1Y2U2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVj
b2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzKQogewogICAgIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZh
Y2U7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCkBAIC03OSwxMSArNzksMTEgQEAgUGFzc1Jl
ZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHMKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHN1cmZhY2UgPSBj
cmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IChmbGFncyAmIFN1cHBvcnRzQWxwaGEpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
IDogU2hhcmVhYmxlQml0bWFwOjpOb0ZsYWdzKSk7CiAKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCiB7CiAgICAgR3JhcGhpY3NTdXJmYWNlOjpG
bGFncyBzdXJmYWNlRmxhZ3MgPQogICAgICAgICBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29m
dHdhcmVXcml0ZQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdAogICAg
IC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxs
b3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KICAgICBSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZs
YWdzKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChzdXJmYWNlKTsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkp
KTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBXZWJDb29yZGluYXRlZFN1cmZhY2U6On5XZWJDb29yZGlu
YXRlZFN1cmZhY2UoKQogewogfQogCi1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitSZWZQ
dHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShj
b25zdCBIYW5kbGUmIGhhbmRsZSkKIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBp
ZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGEKIAogICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhh
bmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1f
ZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuaAppbmRleCA3ZGMxNmYyYzA0M2JmYjVmYzRkMzkyM2UzMzFlZDVhYzFmNjM0M2ZhLi44YTE4
ZjYwNzY5NmJmYTBiNzBjZGEyYzBkYjc4NDc5NmFlNDg2NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuaApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgLy8gQ3JlYXRlIGEgbmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVp
dGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogCiAg
ICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IEhhbmRsZSYpOwogCiAgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYpOwpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAgICAg
Ly8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNl
LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0
aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKICAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZh
Y2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgR3JhcGhpY3NTdXJmYWNlLgogICAgIHN0YXRpYyBS
ZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAppbmRleCBlNDU4ODZh
NWRiYmIwZjUxMjdkNTMyMGZhOTNhYzczODE3NmYzN2Y2Li42ZTk1YjBmZWE2ZWQ0NjBhZDZjM2Qw
NjMyNWM4MWZmMjU5ODE5NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSTo6
T2JqZWN0KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFz
dGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCmluZGV4IGQwMzhiZjFmMTA1MWY5Zjk0YTdlNjczOTcxZWI2NTBiZjY4
ZWRlODguLjQxMjUzYzZkMTc3YTVmYWMxNGJmYTA1ZDQzNDRiMTJiNjM1ZTY1MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91
bGQgbm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJL
ZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiB1dGkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCAxMjQ0NjExMmNmODYzMGJiMmUxZWIyMjAwZmQ0ZWU3Njc0OTA3MjRiLi5mMWU5ZTQ3
MzRkYjU1YWIxMDUwNGQxMzhhY2ZkNzU5MTRjNThkNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlKgogICAgICAgICAgICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbSh0b0FQSSgmcGFnZSksIHRvQVBJKGl0ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rl
cktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBwYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNsaWVudCgpLmNvcHlXZWJDcnlw
dG9NYXN0ZXJLZXkoJnBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkpOwogICAgICAgICB9CkBA
IC0xOTMxLDcgKzE5MzEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAg
bV9jbGllbnQud2ViUHJvY2Vzc0RpZENyYXNoKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6
OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCmluZGV4IDYwZDhhMGY1NmY5ODAwZjc1MzUwMjU4OTIzMGRlMzcwY2Q5YzJhZWMu
LjVjMTZiZjgyZDVhZDA2YTRmYmEyYzcxMDllZTMzMzlhNzUwZDVjZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTIw
NiwxNyArMjA2LDE3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wKICAgICBndGtfbWFpbl9kb19l
dmVudChldmVudC5uYXRpdmVFdmVudCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSog
cGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBN
ZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7
CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQs
IHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKIHsKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCiAgICAg
ICAgIHJldHVybiBXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggYmM1YjYzNWMxYzliNGE5YTA1MWU1NTAxY2QwYTMxNGYzNjgyNDAwZi4uMWNiZjM0
ODVlZTEzZmQxYzMwZjc4ZjQ0NDY3OWQ5ZGNlYzZlNmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC04MiwxMCArODIsMTAg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBl
cm1hbmVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dElu
ZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwu
aAppbmRleCA0OWNlMTNkNTc2OWFiMzQ0NGYyMzNjYzg2ZGE3YTY4MTNkNGRiNTM2Li5lYWFhMWY3
MGM2ZDg1ZDU0Njk3NGI3YjkwNmE0MDZhNjRkOGZlMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKQEAgLTI5
LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTdHJpbmcu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCmlu
ZGV4IDIwNTY0Zjc1NjdjOTExNmFkNjBhMGNjODk0Nzk2ODE0Yzk2NDYwYzMuLjI4YmViYTZlOGMw
Yzg2NzFmNjk5MWIxZTdhMzI4NGRlYmEzYzE3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b0NvcnJlY3Rpb25DYWxsYmFjay5oCmluZGV4IDg3ODYwYmQwYzcwMWU1N2RjNDJjODVhYmM4OTg3
YTIyOWM3YjlmNDMuLjc1MmU0Y2M1ODEwOTMyZTYwMGMxYWUzMGU0YWIyMDE0YzRmYWY4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNr
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAppbmRleCBkNTUyNmExNTY0ZWQ4NGZmOTI4MjViMzhkNTQzMGYxNzY3ZTFiNTJhLi5k
YmQ4OTQzOTI1MjRiMzg4NmQ1OTUyM2E4ZGI1MzBiNzc0N2Q3MzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC05Nyw3ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKFdlYlBhZ2VQcm94eSYsIFdlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkmKSBv
dmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRv
TWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZlB0
cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNjBhZGJkNGIzY2M3
NzI2NGRlZmZlNWU3YWUzZTMyM2IyMzk1MWY1Ni4uNjRkMDczNTMwNzMyZmQ0N2NhODVmOGEyNzUw
NTUzYmIzMjg1ZjBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYgcGEKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3XTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRhdGE+IE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktp
dDo6V2ViUGFnZVByb3h5JikKK1JlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViVmlldy5jcHAKaW5kZXggNTk5YjYzMzgwMjk1YWM5MjNkMjExZTdiY2NiOWIzYjM5NGUy
ZGNhYi4uYjZlZjYzOTY1NGY3NzczMGJkMTEyYzU2MTUxNmExN2ZlODEzZTBiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHAKQEAgLTQzMCwyMyArNDMwLDIzIEBAIHZvaWQgV2ViVmlldzo6ZG9uZVdpdGhUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50CiB9
CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
V2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3
OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmll
dzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmll
dzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaApp
bmRleCAyZmNkNjQwYWU5ODhlYzQ3NjM3MDBhODdkYWI0Y2MwMDM5NDc5YmU5Li5kNDUzNzI0N2Fi
OTM3ZDFiNWY1ZjhjMmRmOGQ2NzBkYTVjMGM5ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC0xNzUsMTAg
KzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVu
dChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNr
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29y
ZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMGY4ZDI0MDQ3ZTZkNTE4ZWY5OTAyNDZhZjhm
OTM2Y2Y0MTU5YWMzOC4uNWRjM2U1MGYxYjRhNTY0MWVhNjM2MWY3YTk4NWQyMTVmOTMzOTZjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yMTAsMTEgKzIxMCwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRp
dmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNlbmRpZgogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CiAKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9y
KFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0
aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyNTQyZDQ3OTk2YmY4NGVj
NDMyMWNmZTA1YTM5NTI5NzJhZTI5NTgzLi4xNTZjZmI3MTdkM2YyNzEwYTA2YzA3MmRlNzM4OWE2
MDJhNjMzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03
MzAsNyArNzMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmlu
ZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAg
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAppbmRl
eCAzZGNmZGRjMDc4ODVmZjI0MTFhYzgyOTIyZWZiODEyZjY3NzBkMzIwLi5iNTU3MDc4YjY2YTg4
YjY4NDNiMDdlODJlNGMxNTc5MmJkMGI4Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFdlYlZpZXdFZmw6
OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIHNjZW5l
LT5wYWludFRvR3JhcGhpY3NDb250ZXh0KCZjb250ZXh0LCBtX3BhZ2UtPnBhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcigpLCBtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHko
V2ViUGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJu
IFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOjpjcmVhdGUocGFnZSk7CiB9CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlld0Vm
bDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNy
ZWF0ZShtX2V3a1ZpZXcsIHBhZ2UpOwogfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViVmll
d0VmbDo6aW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGll
bnRCYXNlKiBjbGllCiAgICAgbV9jb2xvclBpY2tlckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9y
UGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0Vm
bDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIHJldHVybiBXZWJD
b2xvclBpY2tlckVmbDo6Y3JlYXRlKHRoaXMsIHBhZ2UsIGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKaW5kZXggZWY5OTExODQ2YTBkOTE2YWFjNGFh
NzE5MzdiZjA5ODgxNmY5N2NjYy4uYTBjYWYxMDNjNWZiYjMyZTViZGYxZmNiMzYwNDUwMmExYWEw
ZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50
KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNlKik7CiAKICAgICBXZWJDb2xvclBpY2tlckNs
aWVudCYgY29sb3JQaWNrZXJDbGllbnQoKSB7IHJldHVybiBtX2NvbG9yUGlja2VyQ2xpZW50OyB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tl
cihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3Jl
YXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Vmll
d0JhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwpAQCAtNjYsMTIgKzY2LDEy
IEBAIHByaXZhdGU6CiAgICAgV2ViVmlld0VmbChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VHcm91
cCopOwogCiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJp
ZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJv
eHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5
PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0
TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNDg0MjEyNzA4ZDMw
N2JhMTc0MzI2MTczZTU1YTNjMGQ3NmQ0ZTBkZi4uY2M0MGI1NmY3OTc2Yzg3NzhiZTAyODYzOTVi
ODk2MmUxZTIxZGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaApAQCAtOTcsOCArOTcsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2Vu
ZGlmCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8
V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
aXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0
aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRv
ckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDAzMzdmM2Y3OWQ1ZDg5
ZjVjNGUyMmIyNzliZmNkN2VkMzZiNGYxMjMuLmEwODE2YzQ1Y2ExNmY4MDAxMjM2ZDRmMWYwZjMx
NzEyZGM4NmExZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtNDQxLDE2ICs0NDEsMTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIG5hdGl2ZVdl
YnRvdWMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4
dEluZGljYXRvcihSZWY8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciwgVGV4dEluZGljYXRv
ckxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBmZDIyOTFhNTU2MTVlMmUwNmMzZWMyZTlkMjE5Njk0YmY1ZTQ4ZGUyLi43
YzUyMmM2MWZjM2MzYWQ4M2ViYjQ4NTMyZjIzMzE5OGE2NjFmNDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTA3LDEwICsxMDcs
MTAgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViUGFn
ZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBjMWY2ZmMx
OGUzNTQwYTkzNjNiZmFmNjM4ZDNkMWU4OTRmMjRhYTM3Li5hYmUzOTRiNzZmNGJkYjg3ZDg1NTY4
NTY5OTM0MzJlY2M1MTFiYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+
IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4
dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tCmluZGV4IDdkN2Y2YTQ2NGI1YzMwNDRmY2IzMTFkMTEwOWNkMzg0N2NkYjJlZDMuLmQ3
YjYzMWE0ODA5MDQ4NDk2YmY2YjFlMmRhMGMzNDc0OTljNzY4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNDg3LDE4ICs0ODcsMTgg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbAogICAgIFttX3drVmlldyBfZG9uZVdpdGhLZXlFdmVu
dDpldmVudC5uYXRpdmVFdmVudCgpIGV2ZW50V2FzSGFuZGxlZDpldmVudFdhc0hhbmRsZWRdOwog
fQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlKQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3
LCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpjcmVhdGUobV93a1ZpZXcsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
Q29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xv
clBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIFdlYkNvbG9yUGlja2VyTWFjOjpjcmVhdGUo
cGFnZSwgaW5pdGlhbENvbG9yLCByZWN0LCB3a1ZpZXcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDRjMjIzMWI2OWU1NWM0
YjQ5OGYwOGM0YTJmYzk1ZWI3MGRkNTk2YTIuLmIyOTI4Y2YxOGNmOGNiYjVhMzcyZmU4YzY4ZDY3
Zjk1ZWVkYWU2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCkBAIC0zNjgsMTcgKzM2OCwxNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3Qg
YXV0byBtZXNzYWdlVGltZW91dCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDIwKTsKICAgICBwcm9j
ZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsK
ICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAxZWQ3OGQzNDVkNGU3NDJkNzk4NjAyNWE2ZjQz
NjdhZjM4YmZkZTRjLi5hYTIzMjRjZTFiYTA3OGRhYTAzMDJhZjQxMDE1Y2E0ZjljOWE4NzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNjcsMjAgKzY3LDIwIEBAIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6fldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291
cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVs
ZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVy
UG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKLSAgICByZXR1cm4gbG9hZGVyLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBs
dWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2Fk
ZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Ci0gICAgcmV0
dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAogc3RhdGljIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDJlODE3OTdiNWM5NDhl
OTk3MzEzYTY2ZWNiYWMzODZiNTllNmZiOTUuLjc2NGUxYWE4ZTY0MTRhMzFmYTE2NjJkMTY2NjBi
NjE2NzAxNmJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ1LDggKzQ1LDggQEAg
cHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIHZpcnR1YWwgfldl
YlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKaW5kZXggZDNkYzI0N2U0OGNkNjE4N2Q2OTJlNmU0MWM0MmU2YWE3YTkyY2VhZi4uMzll
OWIzZDQ5ZWY2YmQxYjM0ZjA4MTMxMDQwY2I0NDk1ZTA5ZWNmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBAQCBOZXRzY2FwZVBsdWdpbjo6fk5ldHNjYXBl
UGx1Z2luKCkKICAgICBtX3BsdWdpbk1vZHVsZS0+ZGVjcmVtZW50TG9hZENvdW50KCk7CiB9CiAK
LVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBu
cHApCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBu
cHApCiB7CiAgICAgaWYgKCFucHApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOZXRzY2FwZVBsdWdpbio+KG5wcC0+
bmRhdGEpOwogfQpAQCAtNzA5LDEwICs3MDksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAg
ICAgcGxhdGZvcm1QYWludChjb250ZXh0LCBkaXJ0eVJlY3QpOwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiB7CiAgICAgaWYgKCFzdXBwb3J0
c1NuYXBzaG90dGluZygpIHx8IG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7
CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2Nh
cGVQbHVnaW46OnNuYXBzaG90KCkKIAogICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dC5nZXQoKSwg
SW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKIAotICAgIHJldHVybiBi
aXRtYXAucmVsZWFzZSgpOworICAgIHJldHVybiBiaXRtYXA7CiB9CiAKIGJvb2wgTmV0c2NhcGVQ
bHVnaW46OmlzVHJhbnNwYXJlbnQoKQpAQCAtMTA2NCw5ICsxMDY0LDkgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjps
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IE5l
dHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSW50UG9pbnQgTmV0c2NhcGVQbHVnaW46OmNvbnZl
cnRUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDhiMzI4M2M5NzkzZWE0ZjA0YjAyMzFmOTU3
NzBkMGI4NmZmZTM1ZjMuLmQ4OGI2ZmQ3ZmRkNWJmOWQ1YzVmOTg0OWUyNmMyODdhNzIwZjhlZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbk1vZHVsZT4pOwogICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1Z2luKCk7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOworICAgIHN0YXRpYyBS
ZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQKTsKIAogICAgIC8vIEluLXByb2Nlc3Mg
TmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9u
LgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAg
LTI2NCw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5z
Zm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNvbnZlcnRGcm9t
Um9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDVkNjVhNjY2ZWE5
MTQ0NjQ1MmUzMWI2YWMxNGQ4MzkyODMwYWMyMTguLjMwYzc5MGYxMzRhNjc5YWJiYjhkNzBiMzRl
YmY4OGM5OTRiYWQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3Bh
cmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRz
V2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNTksNyArMTU5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5n
JiBmb3JtVmFsdWUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlh
bGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDk4NDcw
MThmM2M2NjU3NjQ2NTFhNDllZjg4YWU5NDNiMDg4ZGYzOGEuLjkzMjQ5NDgyNTJiNzBjODZhNTEz
OGMyZDkzYzA1NTdlYTBlOTAyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIFBE
RlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENH
Q29udGV4dFJlZiBjb250ZQogICAgIHNjcm9sbGJhci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwg
c2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBQREZQbHVnaW46OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdp
bjo6c25hcHNob3QoKQogewogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTExNjksNyArMTE2OSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKIAogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
bmFwc2hvdEluQ29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKV07CiAKLSAgICByZXR1
cm4gYml0bWFwLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFwOwogfQogCiBQbGF0Zm9ybUxh
eWVyKiBQREZQbHVnaW46OnBsdWdpbkxheWVyKCkKQEAgLTE2MzUsMTIgKzE2MzUsMTIgQEAgdm9p
ZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Ny
b2xsYmFycygpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEo
KTsKIAogICAgIGlmICghcGRmRGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShwZGZEYXRh
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBh
MTRlOThhYTI5YWQyYWVjOWI2OTYwM2UxYzFjOTA2ODIyMmQ3YTEzLi42MmFiODQ3YzZiZWM0OTRh
OWJiNDNkMjI5YzkxZjdkOTlkMzU2OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRvIGRyYXcgaXRzZWxmIGludG8gYSBiaXRtYXAsIGFuZCByZXR1cm4gdGhhdC4K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgPSAwOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYgYSBwbHVnLWluIGlzIHVzaW5nIHRoZSBDb3Jl
IEFuaW1hdGlvbiBkcmF3aW5nIG1vZGVsLCB0aGlzIHJldHVybnMgaXRzIHBsdWctaW4gbGF5ZXIu
CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEFs
d2F5c0F1dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5k
ZXggMWVjMTZiZTE3MWE1NWRiZWEzMjQzNGQwYjBlNDhkNzIzN2Y2MTM1Zi4uMTNjYTU0MzI1OGY3
NjUyNzg2MWIwZGEzMzQzOWVkNmVmZWEwZWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yMzgsMTYgKzIzOCwxNiBAQCBi
b29sIFBsdWdpblByb3h5OjpzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IGlzU3VwcG9ydGVkOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJv
eHk6OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFw
c2hvdCgpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgc25hcHNob3RTdG9yZUhhbmRs
ZTsKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6U25hcHNob3QoKSwgTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6U25hcHNob3Q6OlJlcGx5KHNuYXBzaG90U3RvcmVIYW5kbGUpLCBtX3BsdWdpbklu
c3RhbmNlSUQpOwogCiAgICAgaWYgKHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25h
cHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc25hcHNob3RCdWZmZXI7CiB9CiAKIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJh
bnNwYXJlbnQoKQpAQCAtNzE2LDkgKzcxNiw5IEBAIEludFBvaW50IFBsdWdpblByb3h5Ojpjb252
ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggODkwNDFjMDQ5OGM2M2U2Zjg4MjljNTU1YjQ5
MjM0ZjBlYzA2YjVmYi4uZTJmOThhZDdlY2NjZWNlMjlkNDg4MDk3OTJhMDgzMTA4YTdhYjcyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIo
KSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYWE4ZjQz
MTY5Yzg1ZjU3NDU3M2VhN2I0YmU2MjU4MzMxNzg4NzUzZi4uMzU3NzhmODIxNWE5NmEwNTRlZTdk
N2RlODg3YzE0ZmJkN2NkZmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChT
dG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmbWFwLnNl
Y3VyaXR5T3JpZ2luKCkpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAg
ICBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IG1hcDsKIApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaQogICAgIHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShXVEY6
Om1vdmUobWFwKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VS
VChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggNmM1MTY3NGM3
MWEyMDBjY2U0NzhmN2JjMDk0MmRmN2U5MzhiZDE5YS4uMzc4MTcxNzNlMjQ4NWI4NjZhOGFmMzI5
Mzc1NTFjNzdkMjZkODMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3Jl
OjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdl
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNv
cmU6OlBhZ2UqKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1f
c3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBmZDBhOThlODQ3NTk0YzM0
MjA3YTI4NWJiNmVjMzA1N2ZkNTgzNDk1Li40NTIwNjIwMDNmZGFmNmQ4NjIxODgwMjJhNzVmZjFk
ZGJlODE4MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTE4
NSwxMiArMTg1LDEyIEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYg
aGlzdG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhCiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0
YXRlKQorUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFn
ZVN0YXRlKQogewotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0
ZS50aXRsZSk7Ci0gICAgYXBwbHlGcmFtZVN0YXRlKCpoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1h
aW5GcmFtZVN0YXRlKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9y
eUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nLCBwYWdlU3Rh
dGUudGl0bGUpOworICAgIGFwcGx5RnJhbWVTdGF0ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1h
aW5GcmFtZVN0YXRlKTsKIAotICAgIHJldHVybiBoaXN0b3J5SXRlbS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGhpc3RvcnlJdGVtOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKaW5kZXggZTQxNTQxNWUxNGU2ZjM0ZDJmMGViYjUxY2U2
NjhiMzQ0MDgzZDA1OC4uYmVlOWQyMjhjYTczOWE1YThmNjY1MGNhZmNmN2JlZjBkYmNkNGRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUGFnZVN0YXRlOwogCiBQYWdlU3RhdGUgdG9QYWdlU3Rh
dGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKLVBhc3NSZWZQdHI8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CitSZWY8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOGZkM2ExMTY3MmEz
NjU2YjNkNWMyZmZiODVkZGU0ODdjNjgxZmY3Ni4uMjlmYTYzY2Q3OGE2MWJiZjFhOTI3M2U4ZDgx
OTNiM2Y4MmQxYzM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODMzLDEyICs4MzMs
MTIgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewog
ICAgIHJldHVybiBXZWJQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAog
ewogICAgIHJldHVybiBXZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlMjA4MWI5Nzc0YzFiNDcyOWI0MTJkM2QyZDVj
ZjUwNDI3NGRkMDk3Li4xNjUzZGZjMTAwNmZlNGU5ODMyODY2MjA5YWMwMDJiOGM4N2RlMmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwMyw4ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5n
RGlyZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVy
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmZGI4YzY4ZDk3MmYyOGIwN2U5MzI4
NzM0MGRhN2I1NzE2MjdhNTZjLi5iY2QwNTEzZjhmYzJlNWIyNDNmZjM2NjAxNDFhNGRlMmRkYjg2
NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI0Miw3ICsxMjQy
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBs
YWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1
dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2Uo
KS0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoKm1fZnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBz
dWJzdGl0dXRlRGF0YSk7CiB9CkBAIC0xMzc0LDcgKzEzNzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2Fk
ZXIgKmRvYwogICAgIG1fZnJhbWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChk
b2N1bWVudExvYWRlciwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1l
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1h
cmdpbldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdodCovKQogewogICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkBAIC0xMzgzLDI1ICsxMzgzLDI1IEBAIFBhc3NSZWZQdHI8
RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nCiAKICAgICBGcmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGlmICghY29yZVN1YmZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1h
eSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUg
cGFnZSBhbHJlYWR5LgogICAgIGlmICghY29yZVN1YmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY29yZVN1
YmZyYW1lKTsKIAogICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJl
bW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCiAgICAgaWYgKCFzdWJmcmFtZS0+Y29yZUZyYW1l
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NF
UlQoc3ViZnJhbWUtPmNvcmVGcmFtZSgpID09IGNvcmVTdWJmcmFtZSk7CiAgICAgaWYgKCFjb3Jl
U3ViZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGNvcmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0
cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitSZWZQ
dHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewog
ICAgIEFTU0VSVChwYXJhbU5hbWVzLnNpemUoKSA9PSBwYXJhbVZhbHVlcy5zaXplKCkpOwogICAg
IEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwpAQCAtMTQyMCwxMiArMTQyMCwxMiBAQCBQYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFJl
ZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJh
bWUsIHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOwogICAg
IGlmICghcGx1Z2luKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5y
ZWxlYXNlKCksIHBhcmFtZXRlcnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1Z2luRWxl
bWVudCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDNjYjE1ZTk0OTQ4MTZmNTE4ZmU2NjUw
NzBiMzI0YjZmZTU0ODc3YzUuLjU5MGY5NzEwM2Y1OWYwNjhkY2QyOWIzMjc0OTkwNTg4ZTY5ZjVk
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
IG92ZXJyaWRlOwpAQCAtMTg1LDEwICsxODUsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFu
dWFsbHkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpX
aWRnZXQqIHBsdWdpbldpZGdldCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBjNzhlNjlmMDg3NjczNmUyYWJi
MTBhZTI5NDFiODAzZTZiZjExZC4uZDA4MmUyOGRkYTg1OTAxNzM5NTI4ZGIwNTE3MTk3OWEzYzg4
ZTg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjQxLDE0ICsyNDEsMTQgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xP
QkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdl
IikpOwogCi1QYXNzUmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8V2Vi
UGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8V2ViUGFnZT4gcGFnZSA9
IGFkb3B0UmVmKG5ldyBXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOworICAgIFJlZjxXZWJQ
YWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOwog
CiAgICAgaWYgKHBhZ2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkg
JiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdl
LmdldCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUo
KS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKIAotICAgIHJldHVybiBwYWdlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gcGFnZTsKIH0KIAogV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00OTA5
LDE2ICs0OTA5LDE2IEBAIHZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdU
Rjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQogICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogfQogCi1Q
YXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpj
cmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJl
ZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRl
cjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEICYmIGZy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRp
b25JRChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9u
SUQgPSAwOwogICAgIH0KIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1
cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2Fk
ZXIsIEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDJkN2U5M2YzMDE0ZmRhYWEwYTNiNDFkZWVjZTg3NTFhOTdhODIwMWYuLmI4
N2Y0NmQyNWVlNWUwMjhlNzFhZTM3YzM1N2ExMjg0NDVkNjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNz
IFdlYlRvdWNoRXZlbnQ7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVh
bCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAg
V1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAgICAgdm9p
ZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdCAvKiBXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+
IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lk
IHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6
RnJhbWUmKTsKIAogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50KTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0
QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6
OkZsb2F0UG9pbnQsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIHZvaWQgaW1tZWRpYXRl
QWN0aW9uRGlkVXBkYXRlKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsK
ICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOGY5ODY2
ZDYzZmZlY2IwZTgyOTk2ZDg3NzEzYWU2NDQzNjc5OGJjMS4uYTQwYzgyZDk2NTkwNjFhMTZlZGUw
YjEzY2IyNDVmZWIwNWFlNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6
RmxvYXRQb2ludCBsb2NhdGkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGltbWVkaWF0ZUFjdGlvblJlc3VsdCwgaW1tZWRp
YXRlQWN0aW9uSGl0VGVzdFByZXZlbnRzRGVmYXVsdCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRB
dExvY2F0aW9uKEZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9u
YXJ5ICoqb3B0aW9ucykKK1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4
dEF0TG9jYXRpb24oRmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzLCBOU0RpY3Rp
b25hcnkgKipvcHRpb25zKQogewogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lID0gY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFtYWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUu
dmlldygpLT5yZW5kZXJWaWV3KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256944</attachid>
            <date>2015-07-16 18:51:39 -0700</date>
            <delta_ts>2015-07-18 01:49:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150717105028.patch</filename>
            <type>text/plain</type>
            <size>118960</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhODQ4YzYwNjhlY2Iy
MGFiMGNiMmQzNDRiMzUxN2FmMTIyYzliYi4uYzgwMTEzMTlmMjU4YjRhYmMwZWE0ZTQ1ODk5YmNi
MzkwNGIzNDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTUgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpbmRpY2F0b3IgcmVj
dCB1bml0aW5nIGNvZGUgdG8gVGV4dEluZGljYXRvcldpbmRvdyBpbnN0ZWFkIG9mIFRleHRJbmRp
Y2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkNThjNzJhZmRkNDA0MDE0ZTk3ZWY4MTVlZjJjMGVj
M2E0YTZhYTE3Li42NGNhZTEzNDI1ZDI1NzllNjQ3YTgyMjIxODRhNmVjYmMyMDk5MDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB3a1BvcHVw
TWVudSBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2U7IGl0J3Mgbm90IGNhbGxlZCBmcm9tIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAwMjBlZjM3NGU1NDZjYmE3ZmQ4YWQ5ZDgyZGNlZjRk
NGEzNDAzZWQzLi5iYzlkNzRlOWMyZTM0NDczMTI3MDY5M2M5YjcyYzc3YjFmYTUyNDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTYgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGlu
IFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNz
UmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBX
ZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTUtMDctMTUgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTWFpbnRhaW4g
Y29uc2lzdGVudCBDT00gSW50ZXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU5OWIxYTYxNmUzOTMxMjk5
NmI3NDZhYTkzNGExYjUxYjZiMDY5ZTguLmQ4MjZlNTBkY2QwOTVhNTFlM2Y2OWU2MTVkZTM4NjFm
NGI1ZDNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDctMTYgIEd5dXlv
dW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNz
UmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRl
cGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJlcGx5KToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFj
ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQ
cm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxs
YmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3Rlcktl
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Vm
bDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6Y3Jl
YXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9va3Vw
VGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGb2xsb3cgdXAgdG8gcjE4
Njg4NyBmb3IgR1RLKy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
OTU1YTljZjlkZGM2ZDUyYTUxNThkMzRhZmVkYzlhOWEwZTViNjE4Yi4uZWE5MjU1YzgyMGYyM2Q0
YTk0Y2Q1ZGNjMmFiMGVmYzk2YzE1NjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9Owog
CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdl
TmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGUgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJy
aWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIG92ZXJyaWRlCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxFbXB0eVBvcHVwTWVudT4gbV9wb3B1cDsKIH07CiAKLVBhc3NS
ZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3QKK1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50
OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOwogfQpAQCAtMTgzLDE5
ICsxODMsMTkgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWUKIHsKIH0KIAotUGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIHJldHVybiBEb2N1
bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgaW50LCBpbnQpCitSZWZQdHI8RnJhbWU+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sKQorUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdl
dCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTM4MTIwMzhiZjZkZTVk
MGE4MjcwMTU3Y2NmMTdkYjZlN2MxMzE0OS4uOGM1N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRm
YzE1ZGI4NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTE4LDgg
KzExOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJl
Y3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFy
Y2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0K
IApAQCAtMzQzLDcgKzM0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8RG9jdW1l
bnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNh
Y2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KIApAQCAtMzcwLDggKzM3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwg
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiNzIwMWVlODYxYzA2NzVlMmZmNzg0ZmY4OGQ0ZDc3Y2M3ZGY4
NGViLi4yNGJhYjg3YzA3NjE1YjlkM2JjMjNlZWYzMWZhNDk1ZjYxMjk0YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBGcmFtZUxvYWRl
cjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogewogICAgIC8vIFRo
aXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4gaW5pdGlhbCBl
bXB0eSBkb2N1bWVudC4KLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0
KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSku
cHRyKCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExv
YWRpbmdNYWluUmVzb3VyY2UoKTsKIApAQCAtMTMxNSwxNiArMTMxNSwxNiBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3QpCiAgICAg
aWYgKCFyZXF1ZXN0Lmhhc1N1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0U3Vi
c3RpdHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0g
bV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKIAotICAgIGxvYWQobG9hZGVyLmdldCgpKTsKKyAgICBsb2FkKGxv
YWRlci5wdHIoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBhY3Rp
b24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIGFjdGlvbi5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogCiAgICAgaWYgKGxvY2tIaXN0b3J5ID09
IExvY2tIaXN0b3J5OjpZZXMgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5z
ZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExvYWRlci0+ZGlkQ3Jl
YXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51cmxGb3JIaXN0b3J5
KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKSk7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAog
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKIAotICAgIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCB0eXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIu
cHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2Fk
ZXIpCkBAIC0xNTQ0LDE0ICsxNTQ0LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgLy8gV2Ugc2hvdWxk
IGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGluIHRoaXMgY2FzZS4KICAgICByZXF1ZXN0
LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAotICAgIFJlZlB0cjxE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVx
dWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKLSAgICBh
cHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2Fk
ZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1
ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdE
b2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KGxvYWRlci5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigp
KTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiAKLSAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
LCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKQEAgLTE1NzIsOCArMTU3Miw4IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGRvY3VtZW50IGxvYWRlciBmb3IgdGhlIHJlbG9hZCwgdGhpcyB3aWxsIGJlY29tZSBtX2RvY3Vt
ZW50TG9hZGVyIGV2ZW50dWFsbHksCiAgICAgLy8gYnV0IGZpcnN0IGl0IGhhcyB0byBiZSB0aGUg
InBvbGljeSIgZG9jdW1lbnQgbG9hZGVyLCBhbmQgdGhlbiB0aGUgInByb3Zpc2lvbmFsIiBkb2N1
bWVudCBsb2FkZXIuCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVu
dC5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVE
YXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3VtZW50TG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgUmVm
PERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihp
bml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0
LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9
IGxvYWRlci0+cmVxdWVzdCgpOwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogICAgIAot
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBlbmRUb0VuZFJlbG9hZCA/
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gOiBGcmFtZUxvYWRUeXBlOjpSZWxvYWQs
IDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjMTNhMTk2
MWY0MmNiODdkODBjMDVmZjMxYmU0Y2JiNTRmZTRhNTYyLi5jOWRmZjIyYjk3ZjRmYmMzZmEwNjRh
OTUzZWIwNTdlYzBhODM5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpID0gMDsKIApAQCAtMjcxLDggKzI3MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9h
ZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRn
ZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkwNzEzMTBiZTA2MDViMTgxOWQyZjYzY2I4NjQ1
ODcyODY5NDc3NjYuLjFhZTNmYmNhMTNjZGFkOGEwYzU4YjMyYjJlM2VjMjJlMDY1YmFiYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+UmVzb3VyY2VMb2FkU2No
ZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUq
IGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCkBA
IC0xMjYsMTIgKzEyNiwxMiBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYQogICAgIGlmICghbG9h
ZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAjZW5kaWYKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUs
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1l
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgY2xpZW50LCByZXF1ZXN0KTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNs
aWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2NoZWR1bGVMb2FkKGxv
YWRlci5nZXQoKSk7CiAgICAgcmV0dXJuIGxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA5ZmI5ZmI0YTc1MDU5MmQzYzI5OGNlYWQ4
NjQzN2UwYzIyNGM4NTQzLi5iMDVkYTA0NDlhYmY3MTMxNTgzYWUyMDFhZTA0M2E4YjhlZWQ4NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC01MSw4ICs1MSw4IEBAIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVk
dWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoUmVzb3VyY2VMb2FkZXIqLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAw
ODA4MzE2NzA3NTI4NGNhNDQ0Y2U1NDMxNTI5ZWEwMzY3NzI0ZWFkLi4wM2YwNTg4NTNkZmNjNWJi
MTdjZjk1MmQ4ZmYyNTQxMWRlYTExMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6On5T
dWJyZXNvdXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1
YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc3Vi
bG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9w
dGlvbnMpKSk7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lLCBDYWNoZWRSZXNvCiAjZW5kaWYKICAgICBpZiAoIXN1YmxvYWRlci0+aW5pdChyZXF1ZXN0
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHN1YmxvYWRlcjsKIH0KICAgICAKICNpZiBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IGRmMDQzMmFkY2Ex
NGI5OGI0NDAxYmFiNGIyMmZmODUwOWZmNWUzOWEuLmEwODkwMWI1NTVkODRlYTQ2YzQ1ZWU2ZTk4
OGU1YzRmYjhlM2RjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBj
cmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAK
ICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggNDRlMjMyNjgyMjY1NjU2NWI2YmNlZmNiNTRlNjFjNmM4ZjQ5NTAzOS4uZDJiZmM2NTNj
YmZlYzEzMDE1NDY0MjAwNjdlYWE0MDg4MDk1YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtNTQ4LDEzICs1NDgsMTMgQEAgYm9vbCBDaHJvbWU6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQuaGFzT3BlbmVkUG9wdXAoKTsKIH0KIAotUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2
ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZVBvcHVwTWVudShjbGllbnQpOwogfQog
Ci1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkg
Y29uc3QKIHsKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICByZXR1cm4g
bV9jbGllbnQuY3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApp
bmRleCAyMjI1MTg0YzhiZjViMDRkZmMwMDgwZGY5Y2E5N2Q0Mjk0N2M2OGI5Li5jMGJkODU4ODA3
ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTE3
Myw4ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlv
bklzTmF0dXJhbCgpOwogICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3Jp
dGluZ0RpcmVjdGlvbigpOwogICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisgICAgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRl
UG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIGNvbWUgdXAgd2l0aCBhIGJl
dHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IDQ3ODZlYzgwNWU1OWI4ODRhNjA3MzdmOTA0YTI4MDRhMGFkY2NkZDguLjRmODE0M2QyYjFm
ZTFjZjMzOWM0OGY2ZTY3NzMxMjgyMDE4ZTQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtMzc1LDggKzM3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpID0gMDsKICAgICAvLyBD
aGVja3MgaWYgdGhlcmUgaXMgYW4gb3BlbmVkIHBvcHVwLCBjYWxsZWQgYnkgUmVuZGVyTWVudUxp
c3Q6OnNob3dQb3B1cCgpLgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVw
TWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA3OTI3YTQ5YjQzODUzZGNjMTMx
ZTdiNzU2NzgyYTQwMjc0ZmIzNTQ4Li4wNzZkMDFiZTk0MDVlMWMwNDE1ODkwNTk3OWFlNjRkZjEz
Y2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGljIFJlZkNv
dW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRD
b3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAyZTc2ZDdjZGQwZTE4OWFlZGZmNjhi
MTEyOWZkMWE3ODIzYThiYTZjLi4wYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2Fj
YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxh
eWVyKiA+JiBhcnJheSk7CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAw
OyB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tp
bmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9CiAgICAgRmxvYXRQb2lu
dCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9s
bFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBib29sIGlzQW5jZXN0
b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBs
aWNhVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmNwcAppbmRleCBiMzNiYmI2MjkzMDA1ZWZmNmFmMzc2YzQxNDE4ZWRhYzU1MDhh
MTBhLi5lOTdmY2Q4OWMyYzgxYmZmMTc4ZWE5YjVjNGZlM2U4NjYwNGM0MTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCh1aW50MzJfdCkKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZm
ZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBhbiBlbXB0eSB0ZXh0dXJlLCB3ZSBz
aG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBpbnRvIGEgQml0bWFwVGV4dHVyZS4KICAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCAzMWQxODE5MmNkM2VmMGFiNDY4
NjgxY2JmZTVhZGZlOTY4MzUzOGJiLi4yMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0OWU2ZDAyZDZj
YTcwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KICAgICB2b2lkIHNldEdy
YXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dh
cEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCmluZGV4IDY0
OGU3MWYwMGEwOWFhZjdiYmZlMzkyODBlYzBlYTc3ZWIxNDg2ZGYuLjdlMjIxMmU1MjVmNDJmNTVk
ZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJUaWxl
IHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgaW5saW5lIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgaW5saW5l
IEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgaW5saW5lIHZv
aWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVyZSA9IHRleHR1
cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBt
X3JlY3QgPSByZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuY3BwCmluZGV4IGQzNTcxMGE2OTI4MWE4MjA2MTZkZTMxMjEzM2M0ZDNjN2ZmOTE3ZTgu
LjM2MjVjMTQ4NjQzMWQ0NDVhMmE5OTEzMjBlZjUxMDFmNDVmZTE2ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcp
OwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRpbGUgOiBtX3RpbGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHR1cmUgPSB0aWxl
LnRleHR1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCAyZjc5MmRjZjk0ODQ4ZDRiOGFiYjBhMjlmMTBkODMxODRlMzBmNTlkLi40ZjNjY2U4
OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUp
OyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0
IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXgg
MDljYTNkZTA0YmVjZDY1NzliYTI1NWZiYTFlMzMyNmFjMTFhNWJiYi4uYmRlOTVmNTE4MDc3OWFm
YTQ4MTllOTNiMzZmOTA1NTY4OWVlNDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlLmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDRkYTRkMTdmOGFlNTQ4MWYzMDlmMzA3ZmMwYjk3
ZTkxN2ZmNDNlNC4uNmFhMGYzMzE2OTlmZDAyOWUxMGJmYTczYTUxYWJkNTk2ZWE3OTU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwo
KQogICAgICAgICBjbG9zZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwpAQCAtOTYsMTAgKzk2LDEwIEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
UGFnZSopCiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFN
YXAuZW5kKCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgaSA9IG1fc3RvcmFn
ZUFyZWFNYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5t
X3N0b3JhZ2VBcmVhTWFwLnNldChpLT5rZXksIGktPnZhbHVlLT5jb3B5KCkpOwotICAgIHJldHVy
biBuZXdOYW1lc3BhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CiB9CiAK
LVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBwcnBPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQoIW1faXNTaHV0ZG93bik7CkBAIC0xMDcsMTEgKzEwNywxMSBAQCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gcHJwT3JpZ2lu
OwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwogICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOwogCiAg
ICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBv
cmlnaW4sIG1fc3luY01hbmFnZXIsIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0
KG9yaWdpbi5yZWxlYXNlKCksIHN0b3JhZ2VBcmVhKTsKLSAgICByZXR1cm4gc3RvcmFnZUFyZWEu
cmVsZWFzZSgpOworICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIH0KIAogdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCA1MjU5OTcxYzVlYzQwNjk3YmE3Y2ZiOWM0ZDkwYTRjNmFjNmEyMmY3
Li43MGM2YjU3MzE0ZTdjYmEzOWViMTlhM2M3OGE4NzFhN2NkOGJjNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4p
ICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pICBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpIG92
ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJl
ZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1h
cCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAxYjU5MzVkYTljM2ZkYTM3MzIyMDE4
MGZkZjBjMTY0NjQ2MTdkMjc3Li5iZDk0Y2U3NWUxN2VkOTBjMTMxMzRlMzlkZWVhZmIzNmJmNzI2
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MuaApAQCAtNzksOCArNzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVj
dGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1l
bnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2ViQXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCmluZGV4IDQ2Zjg3ZDhjYmMwMGZhMTExNmY0NzY2ZGRkOWMxNDFlNWE0ZGFl
NmUuLmI5Y2YxMzk3ODRlNmY1MjBlNGVjYTg2OWQ0YjJiNDlmM2ZkYzNkODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50SU9TOjpzZWxlY3RJ
dGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElP
Uzo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51SU9TKGNsaWVudCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA1ZTNiMmRjYmNhZWE5NWNmZWFhZmI4ZTNiNmJmZGZiMzkzNTVkYWJiLi5kNzU1
ZmM3YzE5NmFjZDc4YmM2Y2JjYWY3NWIyYzZjNjZmNWI1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTg5LDggKzE4
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChi
b29sKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDIwZjZkNzI4MjQ0Njg2ZmIzZDI2NWZhN2Fk
MTU1NzczNzBlNWZkZTYuLjFiOWNmOWMzYTdhMjYyNTIzMGU0MjMzZGMwNzkzNmUwOTk4MDFhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KQEAgLTg0Miw3ICs4NDIsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6aGFzT3Bl
bmVkUG9wdXAoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKTsKQEAgLTg1MSw3ICs4NTEsNyBAQCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVNYWMoY2xpZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA3Y2YxNThmOTZiNjM4YjcyOTQwMjY0MDllMTk3MmUyNDU2MGJiMGQ3
Li5jZDFmMjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2FmZjQ1MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0
IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAorICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0MWQwMTljNWViYjA3YmZmYmU0Y2RkZjc2
OGI4NzU0YTM5MjYzNjczLi45OGNlZGQ0ZWU2MDI0MzVhZTMyZThjZjAyMTc5ZmY1MDAzYzdjMzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMyMiwxNSArMTMyMiwxNSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICNlbmRpZgog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAg
ICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVy
TWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIFJlZjxXZWJEb2N1bWVu
dExvYWRlck1hYz4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gW1tX
ZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjpsb2FkZXIuZ2V0KCld
OworICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbW1dlYkRhdGFTb3VyY2UgYWxsb2Nd
IF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5wdHIoKV07CiAgICAgbG9hZGVyLT5zZXRE
YXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkpOwogICAg
IFtkYXRhU291cmNlIHJlbGVhc2VdOwogCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGxvYWRlci5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwm
IHVybCkKQEAgLTE2MDgsNyArMTYwOCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNh
bkNhY2hlUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBp
bnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwpAQCAtMTYyNywxOSArMTYyNywxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZwogCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJi
aXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4K
ICAgICBpZiAoIXJlc3VsdC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgCiAgICAgY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkubG9h
ZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIHJlc3VsdC5nZXQoKSk7CiAKICAgICAv
LyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhl
IGRvY3VtZW50LgogICAgIGlmICghcmVzdWx0LT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE9iamVjdENv
bnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKQpAQCAtMTkwNyw3ICsxOTA3LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXpl
LCBIVE1MUAogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEb2N1bWVudExvYWRlck1hYy5oCmluZGV4IGIyY2MzNzU4ZjdiMzA3NmZhZWM1NDgzMzU3Yjcz
OTNhMGVhMWRiMzIuLmU4MDMxNGIyYTA4OTQ4NGE0YTJlNDllNjA5NzRmZTYwOTdiMWY3OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLmgK
QEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJEb2N1bWVu
dExvYWRlck1hYyA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBkYXRhKQorICAgIHN0YXRpYyBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJEb2N1bWVudExvYWRlck1hYyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkRvY3VtZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKICAgICB9
CiAKICAgICB2b2lkIHNldERhdGFTb3VyY2UoV2ViRGF0YVNvdXJjZSAqLCBXZWJWaWV3Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCA0NmY4ZTVkYzQ3ZjhlOGQwODFmNDc4NGU5ODQyZDQ5NjkxY2M1Y2U3Li4xODkw
NmRmMDQ2OTlhYmI3N2Q0Mjg0YTFmODliYzhhOWY3ZDExYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCwx
MiArNzgwLDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitS
ZWZQdHI8UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVw
TWVudVdpbihjbGllbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDI1MWY4NjJmNDNiODBkODJmMjdhZDhlODIxMzE5MGJkYTAzNzVmOGYuLmY2M2FjZWZhZDMxYzcw
MjY5NzgzYzA1N2Q5NDJiYWYxYmNhY2JlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTEsOCArMTUxLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0
aW5nRGlyZWN0aW9uKCk7CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2Ny
ZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBjYmQxOTNlOGZkMGZkYWQ2NTc0ZjNkNWY0YjE4MmQx
ZGExZmJhODkuLmRmMGY5MTMxYzhiMjEzMzAwY2Y1Mzk5ZTNkNThhNDFlNzBhNGM1YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTk0OSwxNCArOTQ5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRl
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRh
KQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRM
b2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3Vt
ZW50TG9hZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKIAogICAgIENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNlKEFk
b3B0Q09NLCBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsKIAog
ICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1cm4g
bG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODdiNmQ1MTZhYzM5
YTlhMDJlYWM1ZTdiNTFlYTc4MWM2NjQzMjE5Ni4uYzM4ZmYyZmIxYTM0MjNhNzE1NDljZjgzZTFl
YmZjY2U0NzBkZWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAgdmlydHVhbCBSZWY8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpAQCAt
MTgwLDkgKzE4MCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2Uo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCos
CiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJp
ZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6Oldp
ZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCA0YzMxMDNkNWUyMDc3NzYx
YWU3YmMzZGI3YjhmMTg2NDQzZDU1NWUzLi42MTY1M2NhYzE3OGQzNGZhYTQ2OWZmMTA2ZTUwNTRm
N2Q3NzkwM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVm
ZQogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKLVBhc3NSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFz
ZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCitSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVs
bHB0cik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBQYXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29ucwogCiAg
ICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IFVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGUoaWRlbnRpZmllcik7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGRh
dGFiYXNlLmdldCgpOwotICAgIHJldHVybiBkYXRhYmFzZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGRhdGFiYXNlOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cmVtb3ZlVW5pcXVlSURCRGF0
YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDU5YTYxOGJlNDA1
OTVjMjhjMjJiZGIyZTljYTIxODE3OTZkMjNjNjkuLjQ3YzY5MjU4NmNmZjlkMzBlOWNkNzE4NjM0
NGNiOTM3ZjBmZWY2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
U3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
ZWREYXRhYmFzZURpcmVjdG9yeTsgfQogCi0gICAgUGFzc1JlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZT4gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGdldE9yQ3JlYXRlVW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAg
dm9pZCByZW1vdmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYpOwog
CiAgICAgdm9pZCBlbnN1cmVJbmRleGVkRGF0YWJhc2VSZWxhdGl2ZVBhdGhFeGlzdHMoY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGE5ZjQ2N2U4NzhkZTgxYzY2MWJkZWQzNWQ3NjE2
NjMwNjExYzQ3Yy4uYTU2ZDkyNTAzYThlOTBlOTk5MmNmNzcwYTI2ZWMyMjMyYTI0ZjdlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
c2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZQogICAg
IG1faW5pdGlhbGl6YXRpb25SZXBseSA9IHJlcGx5OwogfQogCi1QYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQorUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IFBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAgIHJl
dHVybiBtX2luaXRpYWxpemF0aW9uUmVwbHkucmVsZWFzZSgpOworICAgIHJldHVybiBtX2luaXRp
YWxpemF0aW9uUmVwbHk7CiB9CiAKIGJvb2wgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppbml0aWFs
aXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKaW5kZXggOWVlZDJlNzExOGM3MWY4N2QzNmU5ZmQyZTZmYjA0ODI4YzczYTc3Yy4uMmUz
MzNmNGZjN2EwZGI4OTIzODI5NTNiNDgyMDIyMzFmNThlMmFjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luaXRpYWxpemluZzsgfQogICAgIAogICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25S
ZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1
Z2luOjpEZWxheWVkUmVwbHk+KTsKLSAgICBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlv
blJlcGx5KCk7CisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3Jl
YXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBjNjZkMjhiNzUzOTc0YTA1NzQwY2I2YWY2OGUyYzQ4
NDgxZDkzYzMyLi41MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJjODAwOGUwZjJhOTQwMGZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC05MSw3ICs5MSw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiAgICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGls
ZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9CiAKLVBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAor
UmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkg
Y29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7CiAgICAg
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCk7CkBAIC05
OSw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7CiAgICAg
fQogCi0gICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKKyAgICByZXR1cm4g
UmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmgKaW5kZXggZDkwMzQ5ZDYzYTVmOGI0NmY2NjZjZWM2MjE0NmI2MjVjMDQz
YzNiNC4uNWRhZmEwMTEyODdlOWFjYTQyNzQ0MmIzZWQ2N2M3YWQ5M2M1ZGMyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKTsKICAgICB2b2lkIHJlbW92ZUFs
bFRpbGVzKCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMg
UmVmPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJh
dGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA2YjhkMTFkYTcyN2UwYWQ1NDVjOWVlM2M1ZjZmNzQ0
YjllMDg0YWVhLi4wZGQzMDY0ZWUzYjg5M2Y1YjhmMDJlOGYzZDIwODAzMTA1Y2U2ZTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9v
bCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBIYW5kbGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogewogICAg
IFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCkBAIC03OSwxMSArNzksMTEgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHMKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHN1cmZhY2UgPSBjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIChmbGFncyAmIFN1cHBvcnRzQWxw
aGEpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhIDogU2hhcmVhYmxlQml0bWFwOjpO
b0ZsYWdzKSk7CiAKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1
cmZhY2U7CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLVBhc3NSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNl
KGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MgZmxhZ3MpCiB7CiAgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPQog
ICAgICAgICBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29mdHdhcmVXcml0ZQpAQCAtOTcsNyAr
OTcsNyBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdAogICAgIC8vIEluIHRoYXQgY2FzZSwgdGhp
cyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBiYWNrIHRvIFNo
YXJlYWJsZUJpdG1hcC4KICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3Jh
cGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKICAgICBpZiAoIXN1cmZh
Y2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFT
U0VSVChzdXJmYWNlKTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZShzaXplLCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKQEAgLTE0Niw3ICsxNDYsNyBA
QCBXZWJDb29yZGluYXRlZFN1cmZhY2U6On5XZWJDb29yZGluYXRlZFN1cmZhY2UoKQogewogfQog
Ci1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkK
IHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3Vy
ZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7CkBAIC0xNjEsNyArMTYxLDcgQEAgUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0
IEhhbmRsZSYgaGEKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSk7CiAgICAgaWYgKCFiaXRt
YXApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJl
dHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAppbmRleCA3ZGMxNmYyYzA0
M2JmYjVmYzRkMzkyM2UzMzFlZDVhYzFmNjM0M2ZhLi44YTE4ZjYwNzY5NmJmYTBiNzBjZGEyYzBk
Yjc4NDc5NmFlNDg2NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAt
NjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBoaWNzU3VyZmFj
ZSBvciBhIFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncyk7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVh
YmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOwogCiAgICAgLy8g
Q3JlYXRlIGEgaGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYpOwpAQCAtODcs
NyArODcsNyBAQCBwcml2YXRlOgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIFdlYkNv
b3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxl
IGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsK
ICAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhp
c3RpbmcgR3JhcGhpY3NTdXJmYWNlLgogICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaAppbmRleCBlNDU4ODZhNWRiYmIwZjUxMjdkNTMyMGZhOTNh
YzczODE3NmYzN2Y2Li42ZTk1YjBmZWE2ZWQ0NjBhZDZjM2QwNjMyNWM4MWZmMjU5ODE5NTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRLZWVwQ3VycmVu
dEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSTo6T2JqZWN0KikgeyB9CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFn
ZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdl
YkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4
IGQwMzhiZjFmMTA1MWY5Zjk0YTdlNjczOTcxZWI2NTBiZjY4ZWRlODguLjQxMjUzYzZkMTc3YTVm
YWMxNGJmYTA1ZDQzNDRiMTJiNjM1ZTY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhp
cyBjbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERhdGE+IHdlYkNyeXB0b01h
c3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAxMjQ0NjExMmNmODYz
MGJiMmUxZWIyMjAwZmQ0ZWU3Njc0OTA3MjRiLi5mMWU5ZTQ3MzRkYjU1YWIxMDUwNGQxMzhhY2Zk
NzU5MTRjNThkNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAg
ICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSSgmcGFnZSks
IHRvQVBJKGl0ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJD
cnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0
dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBh
Z2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLmNsaWVudCgpLmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXkoJnBhZ2UucHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkpOwogICAgICAgICB9CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgbV9jbGllbnQud2ViUHJvY2Vzc0Rp
ZENyYXNoKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rl
cktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgUmVmUHRy
PEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jb3B5V2ViQ3J5cHRvTWFz
dGVyS2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDYwZDhh
MGY1NmY5ODAwZjc1MzUwMjU4OTIzMGRlMzcwY2Q5YzJhZWMuLjVjMTZiZjgyZDVhZDA2YTRmYmEy
YzcxMDllZTMzMzlhNzUwZDVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTIwNiwxNyArMjA2LDE3IEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYgZXZlbnQsIGJvb2wKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5uYXRpdmVFdmVu
dCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlHdGs6OmNyZWF0ZSht
X3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSkKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVm
UHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoV0VC
S0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCiAgICAgICAgIHJldHVybiBXZWJLaXRDb2xv
ckNob29zZXI6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggYmM1YjYzNWMxYzli
NGE5YTA1MWU1NTAxY2QwYTMxNGYzNjgyNDAwZi4uMWNiZjM0ODVlZTEzZmQxYzMwZjc4ZjQ0NDY3
OWQ5ZGNlYzZlNmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC04MiwxMCArODIsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdU
b1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVD
b250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3Jl
YXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVm
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUg
PSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1h
dGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAppbmRleCA0OWNlMTNkNTc2OWFi
MzQ0NGYyMzNjYzg2ZGE3YTY4MTNkNGRiNTM2Li5lYWFhMWY3MGM2ZDg1ZDU0Njk3NGI3YjkwNmE0
MDZhNjRkOGZlMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCmluZGV4IDIwNTY0Zjc1NjdjOTExNmFk
NjBhMGNjODk0Nzk2ODE0Yzk2NDYwYzMuLjI4YmViYTZlOGMwYzg2NzFmNjk5MWIxZTdhMzI4NGRl
YmEzYzE3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxi
YWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5o
CmluZGV4IDg3ODYwYmQwYzcwMWU1N2RjNDJjODVhYmM4OTg3YTIyOWM3YjlmNDMuLjc1MmU0Y2M1
ODEwOTMyZTYwMGMxYWUzMGU0YWIyMDE0YzRmYWY4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBkNTUyNmEx
NTY0ZWQ4NGZmOTI4MjViMzhkNTQzMGYxNzY3ZTFiNTJhLi5kYmQ4OTQzOTI1MjRiMzg4NmQ1OTUy
M2E4ZGI1MzBiNzc0N2Q3MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYlBh
Z2VQcm94eSYsIFdlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94
eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0
b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09L
KQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiB1dGkpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNjBhZGJkNGIzY2M3NzI2NGRlZmZlNWU3YWUzZTMyM2Iy
Mzk1MWY1Ni4uNjRkMDczNTMwNzMyZmQ0N2NhODVmOGEyNzUwNTUzYmIzMjg1ZjBlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC02NzAsNyArNjcwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGEKICAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3XTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKK1Jl
ZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5
cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKIHsKICAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJDcnlwdG9NYXN0ZXJLZXlG
b3JXZWJWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKaW5kZXgg
NTk5YjYzMzgwMjk1YWM5MjNkMjExZTdiY2NiOWIzYjM5NGUyZGNhYi4uYjZlZjYzOTY1NGY3Nzcz
MGJkMTEyYzU2MTUxNmExN2ZlODEzZTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKQEAgLTQzMCwyMyAr
NDMwLDIzIEBAIHZvaWQgV2ViVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFn
ZVByb3h5KikKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikK
K1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCAyZmNkNjQwYWU5ODhlYzQ3
NjM3MDBhODdkYWI0Y2MwMDM5NDc5YmU5Li5kNDUzNzI0N2FiOTM3ZDFiNWY1ZjhjMmRmOGQ2NzBk
YTVjMGM5ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xv
clBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2Vi
Q29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0
aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggMGY4ZDI0MDQ3ZTZkNTE4ZWY5OTAyNDZhZjhmOTM2Y2Y0MTU5YWMzOC4uNWRjM2U1
MGYxYjRhNTY0MWVhNjM2MWY3YTk4NWQyMTVmOTMzOTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0yMTAsMTEgKzIxMCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9v
bCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9
IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNv
bnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dElu
ZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCAyNTQyZDQ3OTk2YmY4NGVjNDMyMWNmZTA1YTM5NTI5NzJhZTI5
NTgzLi4xNTZjZmI3MTdkM2YyNzEwYTA2YzA3MmRlNzM4OWE2MDJhNjMzMzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MzAsNyArNzMwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
d2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9u
ZGVyKCk7CiAKICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAppbmRleCAzZGNmZGRjMDc4ODVmZjI0MTFh
YzgyOTIyZWZiODEyZjY3NzBkMzIwLi5iNTU3MDc4YjY2YTg4YjY4NDNiMDdlODJlNGMxNTc5MmJk
MGI4Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAK
QEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFdlYlZpZXdFZmw6OnBhaW50VG9DYWlyb1N1cmZhY2Uo
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250
ZXh0KCZjb250ZXh0LCBtX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpLCBtX3Bh
Z2UtPmRyYXdzQmFja2dyb3VuZCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gV2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQor
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudUxpc3RlbmVy
RWZsOjpjcmVhdGUocGFnZSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLVBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2Vi
Vmlld0VmbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAg
ICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0ZShtX2V3a1ZpZXcsIHBhZ2Up
OwogfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViVmlld0VmbDo6aW5pdGlhbGl6ZUNvbG9y
UGlja2VyQ2xpZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNlKiBjbGllCiAgICAgbV9j
b2xvclBpY2tlckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKQogewogICAgIHJldHVybiBXZWJDb2xvclBpY2tlckVmbDo6Y3JlYXRl
KHRoaXMsIHBhZ2UsIGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlld0VmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3RWZsLmgKaW5kZXggZWY5OTExODQ2YTBkOTE2YWFjNGFhNzE5MzdiZjA5ODgxNmY5N2NjYy4u
YTBjYWYxMDNjNWZiYjMyZTViZGYxZmNiMzYwNDUwMmExYWEwZTE0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJD
bGllbnRCYXNlKik7CiAKICAgICBXZWJDb2xvclBpY2tlckNsaWVudCYgY29sb3JQaWNrZXJDbGll
bnQoKSB7IHJldHVybiBtX2NvbG9yUGlja2VyQ2xpZW50OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFn
ZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Vmlld0JhY2tncm91bmRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwpAQCAtNjYsMTIgKzY2LDEyIEBAIHByaXZhdGU6CiAgICAgV2Vi
Vmlld0VmbChXZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VHcm91cCopOwogCiAgICAgdm9pZCBzZXRD
dXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94
eSopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94
eSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNDg0MjEyNzA4ZDMwN2JhMTc0MzI2MTczZTU1YTNjMGQ3
NmQ0ZTBkZi4uY2M0MGI1NmY3OTc2Yzg3NzhiZTAyODYzOTViODk2MmUxZTIxZGQ3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAt
OTcsOCArOTcsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jiwg
Ym9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2Vi
UGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRv
cj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJU
ZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZs
b2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCmluZGV4IDAzMzdmM2Y3OWQ1ZDg5ZjVjNGUyMmIyNzliZmNkN2VkMzZi
NGYxMjMuLmEwODE2YzQ1Y2ExNmY4MDAxMjM2ZDRmMWYwZjMxNzEyZGM4NmExZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAt
NDQxLDE2ICs0NDEsMTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIG5hdGl2ZVdlYnRvdWMKIH0KICNlbmRpZgogCi1Q
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihSZWY8VGV4dElu
ZGljYXRvcj4gdGV4dEluZGljYXRvciwgVGV4dEluZGljYXRvckxpZmV0aW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmZDIyOTFh
NTU2MTVlMmUwNmMzZWMyZTlkMjE5Njk0YmY1ZTQ4ZGUyLi43YzUyMmM2MWZjM2MzYWQ4M2ViYjQ4
NTMyZjIzMzE5OGE2NjFmNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTA3LDEwICsxMDcsMTAgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBjMWY2ZmMxOGUzNTQwYTkzNjNiZmFmNjM4ZDNk
MWU4OTRmMjRhYTM3Li5hYmUzOTRiNzZmNGJkYjg3ZDg1NTY4NTY5OTM0MzJlY2M1MTFiYmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0x
MjAsMTEgKzEyMCwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVk
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29y
ZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDdkN2Y2YTQ2
NGI1YzMwNDRmY2IzMTFkMTEwOWNkMzg0N2NkYjJlZDMuLmQ3YjYzMWE0ODA5MDQ4NDk2YmY2YjFl
MmRhMGMzNDc0OTljNzY4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQpAQCAtNDg3LDE4ICs0ODcsMTggQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwg
Ym9vbAogICAgIFttX3drVmlldyBfZG9uZVdpdGhLZXlFdmVudDpldmVudC5uYXRpdmVFdmVudCgp
IGV2ZW50V2FzSGFuZGxlZDpldmVudFdhc0hhbmRsZWRdOwogfQogCi1QYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdl
KQogewogICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUobV93a1ZpZXcs
IHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdl
YkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7CiAg
ICAgcmV0dXJuIFdlYkNvbG9yUGlja2VyTWFjOjpjcmVhdGUocGFnZSwgaW5pdGlhbENvbG9yLCBy
ZWN0LCB3a1ZpZXcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IDRjMjIzMWI2OWU1NWM0YjQ5OGYwOGM0YTJmYzk1ZWI3MGRk
NTk2YTIuLmIyOTI4Y2YxOGNmOGNiYjVhMzcyZmU4YzY4ZDY3Zjk1ZWVkYWU2NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zNjgs
MTcgKzM2OCwxNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgYXV0byBtZXNzYWdlVGltZW91dCA9
IHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDIwKTsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxl
LCBzaXplKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICBpZiAoaGFuZGxlLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAppbmRleCAxZWQ3OGQzNDVkNGU3NDJkNzk4NjAyNWE2ZjQzNjdhZjM4YmZkZTRjLi5hYTIzMjRj
ZTFiYTA3OGRhYTAzMDJhZjQxMDE1Y2E0ZjljOWE4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcApAQCAtNjcsMjAgKzY3LDIwIEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6fldl
YlJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQo
RnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxl
U3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1
YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25z
KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCBy
ZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQ
b2xpY3lEZWZhdWx0KTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJh
bWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4g
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUq
IGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZy
YW1lLCBjbGllbnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxl
TG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgp
ID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Ci0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAogc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCmluZGV4IDJlODE3OTdiNWM5NDhlOTk3MzEzYTY2ZWNiYWMzODZiNTll
NmZiOTUuLjc2NGUxYWE4ZTY0MTRhMzFmYTE2NjJkMTY2NjBiNjE2NzAxNmJlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcigpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9hZFNjaGVkdWxl
cigpOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVn
aW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2Vi
Q29yZTo6RnJhbWUqLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCos
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcios
IGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggZDNkYzI0N2U0
OGNkNjE4N2Q2OTJlNmU0MWM0MmU2YWE3YTkyY2VhZi4uMzllOWIzZDQ5ZWY2YmQxYjM0ZjA4MTMx
MDQwY2I0NDk1ZTA5ZWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0xMTIsMTAg
KzExMiwxMCBAQCBOZXRzY2FwZVBsdWdpbjo6fk5ldHNjYXBlUGx1Z2luKCkKICAgICBtX3BsdWdp
bk1vZHVsZS0+ZGVjcmVtZW50TG9hZENvdW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCitSZWZQdHI8TmV0c2NhcGVQ
bHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCiB7CiAgICAgaWYgKCFucHAp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxOZXRzY2FwZVBsdWdpbio+KG5wcC0+bmRhdGEpOwogfQpAQCAtNzA5LDEw
ICs3MDksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgcGxhdGZvcm1QYWludChjb250
ZXh0LCBkaXJ0eVJlY3QpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2Nh
cGVQbHVnaW46OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1
Z2luOjpzbmFwc2hvdCgpCiB7CiAgICAgaWYgKCFzdXBwb3J0c1NuYXBzaG90dGluZygpIHx8IG1f
cGx1Z2luU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTcyOCw3ICs3MjgsNyBA
QCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkK
IAogICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dC5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBt
X3BsdWdpblNpemUpLCB0cnVlKTsKIAotICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOworICAg
IHJldHVybiBiaXRtYXA7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OmlzVHJhbnNwYXJlbnQo
KQpAQCAtMTA2NCw5ICsxMDY0LDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6c3VwcG9ydHNTbmFw
c2hvdHRpbmcoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVz
b3VyY2VEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogSW50UG9pbnQgTmV0c2NhcGVQbHVnaW46OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JiBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCmluZGV4IDhiMzI4M2M5NzkzZWE0ZjA0YjAyMzFmOTU3NzBkMGI4NmZmZTM1ZjMuLmQ4OGI2
ZmQ3ZmRkNWJmOWQ1YzVmOTg0OWUyNmMyODdhNzIwZjhlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBl
UGx1Z2luPiBjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4pOwogICAgIHZp
cnR1YWwgfk5ldHNjYXBlUGx1Z2luKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2Fw
ZVBsdWdpbj4gZnJvbU5QUChOUFApOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+
IGZyb21OUFAoTlBQKTsKIAogICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0
IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgogICAgIHZpcnR1YWwgYm9vbCBp
c0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3koKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBv
dmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTI2NCw3ICsyNjQsNyBAQCBwcml2
YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24n
dCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNvbnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDVkNjVhNjY2ZWE5MTQ0NjQ1MmUzMWI2YWMxNGQ4Mzky
ODMwYWMyMTguLjMwYzc5MGYxMzRhNjc5YWJiYjhkNzBiMzRlYmY4OGM5OTRiYWQ1ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApA
QCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdElu
V2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hv
dCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDk4NDcwMThmM2M2NjU3NjQ2NTFhNDllZjg4
YWU5NDNiMDg4ZGYzOGEuLjkzMjQ5NDgyNTJiNzBjODZhNTEzOGMyZDkzYzA1NTdlYTBlOTAyMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCkBAIC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9s
Rm9yTGF5ZXJJbkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAg
IHNjcm9sbGJhci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3Qo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90
KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogewogICAg
IGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNjks
NyArMTE2OSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBz
aG90KCkKIAogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzbmFwc2hvdEluQ29udGV4dDpjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKV07CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gYml0bWFwOwogfQogCiBQbGF0Zm9ybUxheWVyKiBQREZQbHVnaW46OnBsdWdp
bkxheWVyKCkKQEAgLTE2MzUsMTIgKzE2MzUsMTIgQEAgdm9pZCBQREZQbHVnaW46Om5vdGlmeURp
c3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQogCi1QYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIAogICAgIGlmICghcGRmRGF0
YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShwZGZEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBhMTRlOThhYTI5YWQyYWVjOWI2OTYw
M2UxYzFjOTA2ODIyMmQ3YTEzLi42MmFiODQ3YzZiZWM0OTRhOWJiNDNkMjI5YzkxZjdkOTlkMzU2
OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0x
MzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90
dGluZygpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRvIGRyYXcgaXRz
ZWxmIGludG8gYSBiaXRtYXAsIGFuZCByZXR1cm4gdGhhdC4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgPSAwOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLy8gSWYgYSBwbHVnLWluIGlzIHVzaW5nIHRoZSBDb3JlIEFuaW1hdGlvbiBkcmF3aW5nIG1v
ZGVsLCB0aGlzIHJldHVybnMgaXRzIHBsdWctaW4gbGF5ZXIuCkBAIC0yODMsNyArMjgzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFydCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMWVjMTZiZTE3MWE1NWRiZWEz
MjQzNGQwYjBlNDhkNzIzN2Y2MTM1Zi4uMTNjYTU0MzI1OGY3NjUyNzg2MWIwZGEzMzQzOWVkNmVm
ZWEwZWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCkBAIC0yMzgsMTYgKzIzOCwxNiBAQCBib29sIFBsdWdpblByb3h5OjpzdXBw
b3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCi1Q
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKK1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiB7CiAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgc25hcHNob3RTdG9yZUhhbmRsZTsKICAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
U25hcHNob3QoKSwgTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U25hcHNob3Q6OlJl
cGx5KHNuYXBzaG90U3RvcmVIYW5kbGUpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogCiAgICAgaWYg
KHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90
QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7Ci0g
ICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc25hcHNob3RC
dWZmZXI7CiB9CiAKIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQpAQCAtNzE2LDkg
KzcxNiw5IEBAIEludFBvaW50IFBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybS5tYXBQb2ludChwb2ludCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKICNpZiBQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKaW5kZXggODkwNDFjMDQ5OGM2M2U2Zjg4MjljNTU1YjQ5MjM0ZjBlYzA2YjVmYi4uZTJmOThh
ZDdlY2NjZWNlMjlkNDg4MDk3OTJhMDgzMTA4YTdhYjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBz
aG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgpA
QCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBv
aW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFN0
cmluZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYWE4ZjQzMTY5Yzg1ZjU3NDU3M2VhN2I0YmU2
MjU4MzMxNzg4NzUzZi4uMzU3NzhmODIxNWE5NmEwNTRlZTdkN2RlODg3YzE0ZmJkN2NkZmEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQog
ICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgmbWFwLnNlY3VyaXR5T3JpZ2luKCkpOwogfQog
Ci1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCitSZWZQdHI8U3Rv
cmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFN
YXA+IG1hcDsKIApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaQogICAg
IHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShXVEY6Om1vdmUobWFwKSk7CiB9CiAKLVBh
c3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFn
ZSogbmV3UGFnZSkKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJ
RCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggNmM1MTY3NGM3MWEyMDBjY2U0NzhmN2JjMDk0MmRm
N2U5MzhiZDE5YS4uMzc4MTcxNzNlMjQ4NWI4NjZhOGFmMzI5Mzc1NTFjNzdkMjZkODMyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxP
cmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsK
IAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29u
c3QgdWludDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCBmZDBhOThlODQ3NTk0YzM0MjA3YTI4NWJiNmVjMzA1N2ZkNTgz
NDk1Li40NTIwNjIwMDNmZGFmNmQ4NjIxODgwMjJhNzVmZjFkZGJlODE4MGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTE4NSwxMiArMTg1LDEyIEBAIHN0YXRp
YyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0IEZy
YW1lU3RhdGUmIGZyYW1lU3RhCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQorUmVmPEhpc3RvcnlJdGVt
PiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQogewotICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0
ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0ZS50aXRsZSk7Ci0gICAgYXBwbHlG
cmFtZVN0YXRlKCpoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKKyAgICBS
ZWY8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3Rh
dGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOworICAgIGFwcGx5
RnJhbWVTdGF0ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKIAotICAg
IHJldHVybiBoaXN0b3J5SXRlbS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhpc3RvcnlJdGVtOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmgKaW5kZXggZTQxNTQxNWUxNGU2ZjM0ZDJmMGViYjUxY2U2NjhiMzQ0MDgzZDA1OC4uYmVlOWQy
MjhjYTczOWE1YThmNjY1MGNhZmNmN2JlZjBkYmNkNGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3Rh
dGVDb252ZXJzaW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1
Y3QgUGFnZVN0YXRlOwogCiBQYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mKTsKLVBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0
ZW0oY29uc3QgUGFnZVN0YXRlJik7CitSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHRvSGlzdG9y
eUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggOGZkM2ExMTY3MmEzNjU2YjNkNWMyZmZiODVkZGU0ODdj
NjgxZmY3Ni4uMjlmYTYzY2Q3OGE2MWJiZjFhOTI3M2U4ZDgxOTNiM2Y4MmQxYzM2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODMzLDEyICs4MzMsMTIgQEAgYm9vbCBXZWJDaHJvbWVD
bGllbnQ6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBXZWJQb3B1cE1l
bnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBXZWJTZWFy
Y2hQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBlMjA4MWI5Nzc0YzFiNDcyOWI0MTJkM2QyZDVjZjUwNDI3NGRkMDk3Li4xNjUzZGZj
MTAwNmZlNGU5ODMyODY2MjA5YWMwMDJiOGM4N2RlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTIwMyw4ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVt
V3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBz
ZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBmZGI4YzY4ZDk3MmYyOGIwN2U5MzI4NzM0MGRhN2I1NzE2MjdhNTZjLi5i
Y2QwNTEzZjhmYzJlNWIyNDNmZjM2NjAxNDFhNGRlMmRkYjg2NDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50
TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0
ZURhdGEpCiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoKm1fZnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CkBA
IC0xMzc0LDcgKzEzNzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAgIG1fZnJhbWUt
PmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVz
dCwgcmVzcG9uc2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIC8qYWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1hcmdpbldpZHRoKi8sIGludCAvKm1h
cmdpbkhlaWdodCovKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CkBAIC0xMzgzLDI1ICsxMzgzLDI1IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAKICAgICBG
cmFtZSogY29yZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29y
ZVN1YmZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkg
SmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgogICAgIGlm
ICghY29yZVN1YmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVVJM
SW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY29yZVN1YmZyYW1lKTsKIAogICAgIC8vIFRo
ZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9j
dW1lbnQuCiAgICAgaWYgKCFzdWJmcmFtZS0+Y29yZUZyYW1lKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoc3ViZnJhbWUtPmNvcmVGcmFt
ZSgpID09IGNvcmVTdWJmcmFtZSk7CiAgICAgaWYgKCFjb3JlU3ViZnJhbWUtPnRyZWUoKS5wYXJl
bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIGNvcmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50
KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVu
dCogcGx1Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIEFTU0VSVChwYXJhbU5hbWVz
LnNpemUoKSA9PSBwYXJhbVZhbHVlcy5zaXplKCkpOwogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdl
KCkpOwpAQCAtMTQyMCwxMiArMTQyMCwxMiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbgogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9
IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdpbkVsZW1lbnQsIHBh
cmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOwogICAgIGlmICghcGx1Z2luKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gUGx1Z2lu
Vmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5yZWxlYXNlKCksIHBhcmFtZXRlcnMp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1Z2luRWxlbWVudCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDNjYjE1ZTk0OTQ4MTZmNTE4ZmU2NjUwNzBiMzI0YjZmZTU0ODc3YzUuLjU5
MGY5NzEwM2Y1OWYwNjhkY2QyOWIzMjc0OTkwNTg4ZTY5ZjVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+
IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwpAQCAtMTg1LDEw
ICsxODUsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dz
U2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwog
ICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkg
b3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggNjBjNzhlNjlmMDg3NjczNmUyYWJiMTBhZTI5NDFiODAzZTZiZjExZC4u
ZDA4MmUyOGRkYTg1OTAxNzM5NTI4ZGIwNTE3MTk3OWEzYzg4ZTg3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQxLDE0ICsyNDEsMTQg
QEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExl
YWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1QYXNzUmVmUHRyPFdl
YlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKLSAgICBSZWZQdHI8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKG5ldyBXZWJQYWdl
KHBhZ2VJRCwgcGFyYW1ldGVycykpOworICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYo
Km5ldyBXZWJQYWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOwogCiAgICAgaWYgKHBhZ2UtPnBhZ2VH
cm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
aW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLmdldCgpKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdl
LnB0cigpKTsKIAotICAgIHJldHVybiBwYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcGFnZTsK
IH0KIAogV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00OTA5LDE2ICs0OTA5LDE2IEBAIHZvaWQg
V2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8dWludDMyX3Q+
IHNjcm9sbGJhclN0eWxlKQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1
bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRl
cj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVy
ID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAK
ICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQpOwogICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAwOwogICAgIH0KIAotICAg
IHJldHVybiBkb2N1bWVudExvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9h
ZGVyLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVudExv
YWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW1lJiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDJkN2U5M2Yz
MDE0ZmRhYWEwYTNiNDFkZWVjZTg3NTFhOTdhODIwMWYuLmI4N2Y0NmQyNWVlNWUwMjhlNzFhZTM3
YzM1N2ExMjg0NDVkNjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CiAKIGNs
YXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlPiBjcmVh
dGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZSgpOwogCiAgICAg
dm9pZCByZWluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKQEAgLTg3Myw3ICs4NzMsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpPcHRpb25hbDxXZWJDb3Jl
OjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJu
IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5
U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5
U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
KTsKKyAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50
TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAogICAgIHZvaWQg
Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMTEyMiw3ICsxMTIy
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1JbW1l
ZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKLSAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQsIE5TRGljdGlv
bmFyeSAqKm9wdGlvbnMpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCk7CiAg
ICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGltbWVkaWF0ZUFj
dGlvbkRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOGY5ODY2ZDYzZmZlY2IwZTgyOTk2ZDg3NzEz
YWU2NDQzNjc5OGJjMS4uYTQwYzgyZDk2NTkwNjFhMTZlZGUwYjEzY2IyNDVmZWIwNWFlNGQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtSW1tZWRp
YXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25I
aXRUZXN0KGltbWVkaWF0ZUFjdGlvblJlc3VsdCwgaW1tZWRpYXRlQWN0aW9uSGl0VGVzdFByZXZl
bnRzRGVmYXVsdCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9pbnQg
bG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1JlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQb2lu
dCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQogewog
ICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAg
aWYgKCFtYWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygpLT5yZW5kZXJWaWV3KCkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257026</attachid>
            <date>2015-07-18 01:49:22 -0700</date>
            <delta_ts>2015-07-18 04:17:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150718174806.patch</filename>
            <type>text/plain</type>
            <size>119009</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwNmVmZjZmMTQwOWY2
YTVhOGU4MWJiM2Q4ZDhjMzViNzY2ODE1Ni4uYWM2OWM3MTM3ZDc5MDMxNWU1ZjExNTFhMjY0ODhl
Y2JjODkwYWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTcgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY5MTA1KTogRG8g
bm90IGFzc2lnbiBhIHJlbmRlcmVyIHRvIG11bHRpcGxlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBhNDhlNTE0OGYzNTg1ZTkyNWU1MjMwYTI0MGIwMTk4ZDUzOWRlOTY2
Li42Y2I2OTEyYWJmYTczMWM0MTUxNGMyNmJhYzJhMWQ4YTAxOTNjNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIg
LSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBy
ZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGlu
IFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBX
ZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNyAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnVydGhlciB0aWdodGVuIHRoZSBzYW5k
Ym94IGFyb3VuZCBwYWdlcyBmZXRjaGVkIHdpdGggQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNo
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlMzRhYmJjNmE5Y2I1ZDExNTcxNGE5NTQwMWI3MmM2
YzVlMDc4NzAuLjFlM2ZmZWUwYTdhODU3NzcxNjIyM2NlZWMwNmE1ODc0NDJiMTQ1N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0xOCAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFBhc3NSZWZQdHIgaW4g
V2ViS2l0MiAtIDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBhdGNoIHJlZHVjZXMgdXNlIG9mIFBhc3NS
ZWZQdHIgaW4gV2ViS2l0Mi4KKyAgICAgICAgQmVjYXVzZSBzb21lIHVzZXMgZGVwZW5kIG9uIFdl
YkNvcmUsIFdlYkNvcmUsIFdLMSBwb3J0cyBhcmUgbW9kaWZpZWQgYXMgd2VsbC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxNS0wNy0xNiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBHcm9zcyB3b3Jr
YXJvdW5kIHRvIGZpeCBidWlsZCBhZnRlciByMTg2ODU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMwMjU4Njcz
ODRkNDY2Y2Q1M2IwNzNhNGZmNWMzNDlmOTQ1MzU4NDAuLjIxYTY3ODk0MWM4NzI5ZTc0YTM4NDI0
YWMwMDFmZjcyNDQ2NTk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDct
MTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
ZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29t
ZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJl
cGx5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1
cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJl
Y3Rpb25DYWxsYmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0
b01hc3RlcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3RWZsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmll
d0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
clBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxl
U3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpz
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9va3VwVGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGdXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRi
b3ggYXJvdW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2ht
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDk1NWE5Y2Y5ZGRj
NmQ1MmE1MTU4ZDM0YWZlZGM5YTlhMGU1YjYxOGIuLmVhOTI1NWM4MjBmMjNkNGE5NGNkNWRjYzJh
YjBlZmM5NmMxNTYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7
Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJyaWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBF
bXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+
IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZSB7IHJldHVy
biBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCiAgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBvdmVycmlkZQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8RW1wdHlQb3B1cE1lbnU+IG1fcG9wdXA7CiB9OwogCi1QYXNzUmVmUHRyPFBvcHVw
TWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RW1wdHlQb3B1cE1lbnUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0
eUNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbXB0eVNlYXJjaFBvcHVwTWVudSgpKTsKIH0KQEAgLTE4MywxOSArMTgzLDE5IEBA
IHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lCiB7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICByZXR1cm4gRG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwg
aW50KQorUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmLCBib29sLCBpbnQsIGludCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCkKK1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDUzODEyMDM4YmY2ZGU1ZDBhODI3MDE1N2Nj
ZjE3ZGI2ZTdjMTMxNDkuLjhjNTdkNmU0ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTExOCw4ICsxMTgsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1
cmFsKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51
PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAKQEAgLTM0Myw3
ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPERvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAKQEAgLTM3MCw4ICszNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMDAzZDJlMTA1ZjU0OTZiYjFiYjUzMjQ1OWJhZDllOWQzZTY1ZmNjNi4uMmRhZjQw
NDVkNTdhZDBiNzQ3MzcyZjUyMDkxYjBhODAwMGRhNmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxv
YWRlcigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0
IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1l
bnQuCi0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRM
b2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkp
KSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAg
ICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiAKQEAgLTEzMjUsMTYgKzEzMjUsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQogICAgIGlmICghcmVxdWVz
dC5oYXNTdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICByZXF1ZXN0LnNldFN1YnN0aXR1dGVEYXRh
KGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNy
ZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vi
c3RpdHV0ZURhdGEoKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9O
ZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LnN1YnN0
aXR1dGVEYXRhKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3
RG9jdW1lbnRMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKSk7CiAKLSAgICBsb2FkKGxvYWRlci5nZXQoKSk7CisgICAgbG9hZChsb2FkZXIucHRyKCkp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24s
IExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgYWN0aW9uLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0
ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKIAogICAgIGlmIChsb2NrSGlzdG9yeSA9PSBMb2NrSGlzdG9y
eTo6WWVzICYmIG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUdsb2JhbEhp
c3RvcnlFbnRyeSgpID8gbV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygp
IDogbV9kb2N1bWVudExvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpA
QCAtMTM0Myw3ICsxMzQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9k
b2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGxvYWRlci5nZXQoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCB0eXBl
LCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXIqIG5ld0RvY3VtZW50TG9hZGVyKQpAQCAtMTU1
NCwxNCArMTU1NCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNv
ZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgIC8vIFdlIHNob3VsZCBhc2sgdGhlIHVz
ZXIgZm9yIGNvbmZpcm1hdGlvbiBpbiB0aGlzIGNhc2UuCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3Vt
ZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7Cisg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExv
YWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkp
OworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2Fk
ZXIobG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSk7CiAKLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0
KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSk7CiAKICAgICBs
b2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogCi0gICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
bG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5k
VG9FbmRSZWxvYWQpCkBAIC0xNTgyLDggKzE1ODIsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBs
b2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNvbWUgbV9kb2N1bWVudExvYWRlciBl
dmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMgdG8gYmUgdGhlICJwb2xpY3kiIGRv
Y3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNpb25hbCIgZG9jdW1lbnQgbG9hZGVy
LgotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9j
dW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChp
bml0aWFsUmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAgIFJlZjxEb2N1bWVudExv
YWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVl
c3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwor
ICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIo
bG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QgPSBsb2FkZXItPnJl
cXVlc3QoKTsKIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
KGJvb2wgZW5kVG9FbmRSZWxvYWQpCiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
bV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKICAgICAKLSAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRU
eXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihs
b2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9y
aWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclBy
b3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzEzYTE5NjFmNDJjYjg3ZDgw
YzA1ZmYzMWJlNGNiYjU0ZmU0YTU2Mi4uYzlkZmYyMmI5N2Y0ZmJjM2ZhMDY0YTk1M2ViMDU3ZWMw
YTgzOWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTI1MCw3ICsyNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZjxEb2N1
bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSA9
IDA7CiAKQEAgLTI3MSw4ICsyNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFs
IFJlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAppbmRleCA5MDcxMzEwYmUwNjA1YjE4MTlkMmY2M2NiODY0NTg3Mjg2OTQ3NzY2
Li4xYWUzZmJjYTEzY2RhZDhhMGM1OGIzMmIyZTNlYzIyZTA2NWJhYmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6flJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJl
c291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQpAQCAtMTI2LDEyICsx
MjYsMTIgQEAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmEKICAgICBpZiAoIWxvYWRlciB8fCBsb2Fk
ZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0K
IAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxv
YWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwg
cmVxdWVzdCk7CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBsb2FkZXIg
PSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVl
c3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCkp
OwogICAgIHJldHVybiBsb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKaW5kZXggOWZiOWZiNGE3NTA1OTJkM2MyOThjZWFkODY0MzdlMGMyMjRj
ODU0My4uYjA1ZGEwNDQ5YWJmNzEzMTU4M2FlMjAxYWUwNDNhOGI4ZWVkODYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNTEsOCArNTEs
OCBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxl
cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291
cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFt
TG9hZChGcmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbW92ZShS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291
cmNlTG9hZGVyKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDgwODMxNjcwNzUy
ODRjYTQ0NGNlNTQzMTUyOWVhMDM2NzcyNGVhZC4uMDNmMDU4ODUzZGZjYzViYjE3Y2Y5NTJkOGZm
MjU0MTFkZWExMTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFN1YnJlc291cmNlTG9hZGVyOjp+U3VicmVzb3VyY2VM
b2FkZXIoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9w
dFJlZihuZXcgU3VicmVzb3VyY2VMb2FkZXIoZnJhbWUsIHJlc291cmNlLCBvcHRpb25zKSkpOwog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzbwogI2VuZGlmCiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBzdWJsb2FkZXI7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBkZjA0MzJhZGNhMTRiOThiNDQwMWJh
YjRiMjJmZjg1MDlmZjVlMzlhLi5hMDg5MDFiNTU1ZDg0ZWE0NmM0NWVlNmU5ODhlNWM0ZmI4ZTNk
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9h
ZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1l
KiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVh
bCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDQ0ZTIz
MjY4MjI2NTY1NjViNmJjZWZjYjU0ZTYxYzZjOGY0OTUwMzkuLmQyYmZjNjUzY2JmZWMxMzAxNTQ2
NDIwMDY3ZWFhNDA4ODA5NWFlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTU0OCwxMyAr
NTQ4LDEzIEBAIGJvb2wgQ2hyb21lOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY2xpZW50Lmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBD
aHJvbWU6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAogewogICAgIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpOwogICAg
IHJldHVybiBtX2NsaWVudC5jcmVhdGVQb3B1cE1lbnUoY2xpZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAg
ICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjIyNTE4
NGM4YmY1YjA0ZGZjMDA4MGRmOWNhOTdkNDI5NDdjNjhiOS4uYzBiZDg1ODgwNzg3ODhhMDgxZjBl
ZDg1ZWNmYjk0MGM5YjA2Mjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xNzMsOCArMTczLDgg
QEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KTsKICAgICBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKTsKICAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBjb21lIHVwIHdpdGggYSBiZXR0ZXIgbmFtZSBm
b3IgdGhpcyBzZXR0ZXI/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA0Nzg2ZWM4
MDVlNTliODg0YTYwNzM3ZjkwNGEyODA0YTBhZGNjZGQ4Li40ZjgxNDNkMmIxZmUxY2YzMzljNDhm
NmU2NzczMTI4MjAxOGU0MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM3
NSw4ICszNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1l
bnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSA9IDA7CiAgICAgLy8gQ2hlY2tzIGlmIHRo
ZXJlIGlzIGFuIG9wZW5lZCBwb3B1cCwgY2FsbGVkIGJ5IFJlbmRlck1lbnVMaXN0OjpzaG93UG9w
dXAoKS4KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVu
dCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggNzkyN2E0OWI0Mzg1M2RjYzEzMWU3Yjc1Njc4MmE0
MDI3NGZiMzU0OC4uMDc2ZDAxYmU5NDA1ZTFjMDQxNTg5MDU5NzlhZTY0ZGYxM2NmNTE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291bnQgKi8sIGNv
bnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSB7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMmU3NmQ3Y2RkMGUxODlhZWRmZjY4YjExMjlmZDFhNzgy
M2E4YmE2Yy4uMGM5ZGE3MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYgYXJy
YXkpOwogCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4g
bV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQorICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBt
X2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRl
bHRhIC0gbV91c2VyU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1Zp
ZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVRyYW5zZm9y
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggYjMzYmJiNjI5MzAwNWVmZjZhZjM3NmM0MTQxOGVkYWM1NTA4YTEwYS4uZTk3ZmNk
ODljMmM4MWJmZjE3OGVhOWI1YzRmZTNlODY2MDRjNDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
dWludDMyX3QpCiAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVmZmVycygpOwogfQog
Ci1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElu
c3RlYWQgb2YganVzdCByZXR1cm5pbmcgYW4gZW1wdHkgdGV4dHVyZSwgd2Ugc2hvdWxkIHdyYXAg
dGhlIHRleHR1cmUgY29udGVudHMgaW50byBhIEJpdG1hcFRleHR1cmUuCiAgICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IGVtcHR5VGV4dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmgKaW5kZXggMzFkMTgxOTJjZDNlZjBhYjQ2ODY4MWNiZmU1YWRm
ZTk2ODM1MzhiYi4uMjI0YjgwNjA1MjA4NWU3ZTM2Mjk5ZmRkNDllNmQwMmQ2Y2E3MDQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZh
Y2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZO
ZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA2NDhlNzFmMDBhMDlh
YWY3YmJmZTM5MjgwZWMwZWE3N2ViMTQ4NmRmLi43ZTIyMTJlNTI1ZjQyZjU1ZGVhODE3YWVhMDli
ZDk1MjVkYTM0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBHcmFwaGljc0xheWVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6
Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGlubGluZSBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIGlubGluZSBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGlubGluZSB2b2lkIHNldFRleHR1
cmUoQml0bWFwVGV4dHVyZSogdGV4dHVyZSkgeyBtX3RleHR1cmUgPSB0ZXh0dXJlOyB9CiAgICAg
aW5saW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVj
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCBkMzU3MTBhNjkyODFhODIwNjE2ZGUzMTIxMzNjNGQzYzdmZjkxN2U4Li4zNjI1YzE0ODY0
MzFkNDQ1YTJhOTkxMzIwZWY1MTAxZjQ1ZmUxNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBl
ciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRl
eHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0aWxl
IDogbV90aWxlcykgewogICAgICAgICBpZiAoYXV0byB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMmY3
OTJkY2Y5NDg0OGQ0YjhhYmIwYTI5ZjEwZDgzMTg0ZTMwZjU5ZC4uNGYzY2NlODhjYWJkZmQyNDQ0
NjgxZDVhN2ZjMTIyYmViYzM0YWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZp
cnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpIHsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRD
b3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDA5Y2EzZGUwNGJl
Y2Q2NTc5YmEyNTVmYmExZTMzMjZhYzExYTViYmIuLmJkZTk1ZjUxODA3NzlhZmE0ODE5ZTkzYjM2
ZjkwNTU2ODllZTQwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZS5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikg
PSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2Uq
IG5ld1BhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDA0ZGE0ZDE3ZjhhZTU0ODFmMzA5ZjMwN2ZjMGI5N2U5MTdmZjQzZTQu
LjZhYTBmMzMxNjk5ZmQwMjllMTBiZmE3M2E1MWFiZDU5NmVhNzk1OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtODUsNyArODUsNyBA
QCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAgICAgICAg
Y2xvc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKikKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKQEAgLTk2LDEwICs5NiwxMCBAQCBQYXNzUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogICAg
IFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwog
ICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGkgPSBtX3N0b3JhZ2VBcmVhTWFwLmJl
Z2luKCk7IGkgIT0gZW5kOyArK2kpCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJl
YU1hcC5zZXQoaS0+a2V5LCBpLT52YWx1ZS0+Y29weSgpKTsKLSAgICByZXR1cm4gbmV3TmFtZXNw
YWNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1QYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJw
T3JpZ2luKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lz
U2h1dGRvd24pOwpAQCAtMTA3LDExICsxMDcsMTEgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHBycE9yaWdpbjsKICAgICBSZWZQ
dHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0g
bV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJl
YS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIAogICAgIHN0b3JhZ2VB
cmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5
bmNNYW5hZ2VyLCBtX3F1b3RhKTsKICAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4ucmVs
ZWFzZSgpLCBzdG9yYWdlQXJlYSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3RvcmFnZUFyZWE7CiB9CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
aW5kZXggNTI1OTk3MWM1ZWM0MDY5N2JhN2NmYjljNGQ5MGE0YzZhYzZhMjJmNy4uNzBjNmI1NzMx
NGU3Y2JhMzllYjE5YTNjNzhhODcxYTdjZDhiYzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFn
ZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdl
QXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLmgKaW5kZXggMWI1OTM1ZGE5YzNmZGEzNzMyMjAxODBmZGYwYzE2NDY0
NjE3ZDI3Ny4uYmQ5NGNlNzVlMTdlZDkwYzEzMTM0ZTM5ZGVlYWZiMzZiZjcyNjczMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLmgKQEAgLTc5LDggKzc5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNlbGVj
dEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNo
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdl
YkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZEVsZW1lbnRDaGFuZ2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bQppbmRleCA0NmY4N2Q4Y2JjMDBmYTExMTZmNDc2NmRkZDljMTQxZTVhNGRhZTZlLi5iOWNmMTM5
Nzg0ZTZmNTIwZTRlY2E4NjlkNGIyYjQ5ZjNmZGMzZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0yNDks
MTIgKzI0OSwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVudElPUzo6c2VsZWN0SXRlbUFsaWdubWVu
dEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNlYXJjaFBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUlPUyhjbGllbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
NWUzYjJkY2JjYWVhOTVjZmVhYWZiOGUzYjZiZmRmYjM5MzU1ZGFiYi4uZDc1NWZjN2MxOTZhY2Q3
OGJjNmNiY2FmNzViMmM2YzY2ZjViNTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE4OSw4ICsxODksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3Bl
bmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCAyMGY2ZDcyODI0NDY4NmZiM2QyNjVmYTdhZDE1NTc3MzcwZTVm
ZGU2Li4xYjljZjljM2E3YTI2MjUyMzBlNDIzM2RjMDc5MzZlMDk5ODAxYWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBA
IC04NDIsNyArODQyLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b3B1cE1lbnVNYWMoY2xpZW50KSk7CkBAIC04NTEsNyArODUxLDcgQEAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWUKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51TWFjKGNsaWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggN2NmMTU4Zjk2YjYzOGI3Mjk0MDI2NDA5ZTE5NzJlMjQ1NjBiYjBkNy4uY2QxZjI0YmE5
YzMzYWEzZGI2MGYwYmExZDM1NjVlYjdhZmY0NTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xOTIs
MTQgKzE5MiwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRT
dGFydGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggNDFkMDE5YzVlYmIwN2JmZmJlNGNkZGY3NjhiODc1NGEzOTI2
MzY3My4uOTBkMzFmNThmMDljOWEwM2E5ZWY3OGRiZjBkZjgzZjQxMGRmOTAzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTEzMjIsMTUgKzEzMjIsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAjZW5kaWYKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdl
YkRvY3VtZW50TG9hZGVyTWFjPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+
IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogCi0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJj
ZSBhbGxvY10gX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6bG9hZGVyLmdldCgpXTsKKyAgICBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlID0gW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhE
b2N1bWVudExvYWRlcjpsb2FkZXIucHRyKCldOwogICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShk
YXRhU291cmNlLCBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpKTsKICAgICBbZGF0YVNvdXJj
ZSByZWxlYXNlXTsKIAotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBs
b2FkZXI7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKQEAgLTE2MDgsNyArMTYw
OCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTYy
NywxOSArMTYyNywxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgLy8gVGhlIGNy
ZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhh
dCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBpZiAoIXJlc3VsdC0+cGFn
ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgCiAgICAg
Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkubG9hZFVSTEludG9DaGlsZEZyYW1lKHVy
bCwgcmVmZXJyZXIsIHJlc3VsdC5nZXQoKSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQg
aGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgogICAgIGlmICgh
cmVzdWx0LT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiBy
ZXN1bHQ7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQpAQCAtMTkwNyw3
ICsxOTA3LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBA
IC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUAogCiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRl
ck1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5o
CmluZGV4IGIyY2MzNzU4ZjdiMzA3NmZhZWM1NDgzMzU3YjczOTNhMGVhMWRiMzIuLmU4MDMxNGIy
YTA4OTQ4NGE0YTJlNDllNjA5NzRmZTYwOTdiMWY3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLmgKQEAgLTM5LDkgKzM5LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJEb2N1bWVudExvYWRlck1hYyA6IHB1YmxpYyBX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBkYXRhKQorICAgIHN0
YXRpYyBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBkYXRh
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJEb2N1bWVudExvYWRlck1h
YyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRvY3Vt
ZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKICAgICB9CiAKICAgICB2b2lkIHNldERhdGFT
b3VyY2UoV2ViRGF0YVNvdXJjZSAqLCBXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0NmY4ZTVkYzQ3
ZjhlOGQwODFmNDc4NGU5ODQyZDQ5NjkxY2M1Y2U3Li4xODkwNmRmMDQ2OTlhYmI3N2Q0Mjg0YTFm
ODliYzhhOWY3ZDExYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCwxMiArNzgwLDEyIEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKTsKIH0K
IAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFNlYXJj
aFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFy
Y2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDI1MWY4NjJmNDNiODBkODJmMjdh
ZDhlODIxMzE5MGJkYTAzNzVmOGYuLmY2M2FjZWZhZDMxYzcwMjY5NzgzYzA1N2Q5NDJiYWYxYmNh
Y2JlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCkBAIC0xNTEsOCArMTUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCk7CiAgICAg
dmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBX
ZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDBjYmQxOTNlOGZkMGZkYWQ2NTc0ZjNkNWY0YjE4MmQxZGExZmJhODkuLjI3MzI1YmE4MTkx
Y2MyMWYyYTM0YmMzYjQ2YWQwOTRhZmE3MzZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk0
OSwxNCArOTQ5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBX
ZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIAogICAg
IENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNlKEFkb3B0Q09NLCBXZWJEYXRhU291cmNl
OjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsKIAogICAgIGxvYWRlci0+c2V0RGF0YVNv
dXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGOjptb3ZlKGxvYWRlcik7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwm
IHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg3YjZkNTE2YWMzOWE5YTAyZWFjNWU3YjUxZWE3ODFj
NjY0MzIxOTYuLmMzOGZmMmZiMWEzNDIzYTcxNTQ5Y2Y4M2UxZWJmY2NlNDcwZGViY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpOworICAgIHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTE4MCw5ICsxODAsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKaW5kZXggNGMzMTAzZDVlMjA3Nzc2MWFlN2JjM2RiN2I4ZjE4NjQ0M2Q1
NTVlMy4uNjE2NTNjYWMxNzhkMzRmYWE0NjlmZjEwNmU1MDU0ZjdkNzc5MDNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmUKICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOwogfQogCi1QYXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFz
ZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0
YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBE
YXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVl
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9pZGJEYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgUGFzc1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpn
ZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnMKIAogICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZT4gZGF0YWJhc2UgPSBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlKGlkZW50aWZpZXIp
OwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBkYXRhYmFzZS5nZXQoKTsKLSAgICBy
ZXR1cm4gZGF0YWJhc2UucmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhYmFzZTsKIH0KIAogdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlE
QkRhdGFiYXNlJiBkYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuaAppbmRleCA1OWE2MThiZTQwNTk1YzI4YzIyYmRiMmU5Y2EyMTgx
Nzk2ZDIzYzY5Li40N2M2OTI1ODZjZmY5ZDMwZTljZDcxODYzNDRjYjkzN2YwZmVmNjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KIAotICAgIFBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVl
SURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIHZvaWQgcmVtb3ZlVW5pcXVlSURC
RGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmKTsKIAogICAgIHZvaWQgZW5zdXJlSW5k
ZXhlZERhdGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDRhOWY0NjdlODc4ZGU4MWM2NjFiZGVkMzVkNzYxNjYzMDYxMWM0N2MuLmE1NmQ5MjUw
M2E4ZTkwZTk5OTJjZjc3MGEyNmVjMjIzMmEyNGY3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTk3LDkg
Kzk3LDkgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVw
bHkoUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2UKICAgICBtX2luaXRpYWxpemF0aW9uUmVw
bHkgPSByZXBseTsKIH0KIAotUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRh
a2VJbml0aWFsaXphdGlvblJlcGx5KCkKK1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkKIHsKLSAgICByZXR1cm4gbV9pbml0aWFsaXphdGlv
blJlcGx5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbV9pbml0aWFsaXphdGlvblJlcGx5OwogfQog
CiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDllZWQyZTcx
MThjNzFmODdkMzZlOWZkMmU2ZmIwNDgyOGM3M2E3N2MuLjJlMzMzZjRmYzdhMGRiODkyMzgyOTUz
YjQ4MjAyMjMxZjU4ZTJhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0luaXRpYWxpemluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7
IH0KICAgICAKICAgICB2b2lkIHNldEluaXRpYWxpemF0aW9uUmVwbHkoUGFzc1JlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5Pik7
Ci0gICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBs
dWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOworICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJl
cGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3Rh
cnRQYWludFRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggYzY2ZDI4Yjc1Mzk3NGEwNTc0MGNiNmFmNjhlMmM0ODQ4MWQ5M2MzMi4uNTFkYjA4Y2Uz
NjBiZjhhY2ZiNjBhM2ViYzgwMDhlMGYyYTk0MDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LAogICAgIGl0LT52YWx1ZS5zZXRCYWNrQnVmZmVyKHRpbGVSZWN0LCBzb3VyY2VSZWN0LCBi
YWNrQnVmZmVyLCBvZmZzZXQpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKK1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgewogICAgICAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSA9IHRpbGUudGV4dHVyZSgpOwpAQCAtOTksNyArOTksNyBAQCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29u
c3QKICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlOwogICAgIH0KIAotICAgIHJldHVybiBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CisgICAgcmV0dXJuIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PigpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpzZXRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4
IGQ5MDM0OWQ2M2E1ZjhiNDZmNjY2Y2VjNjIxNDZiNjI1YzA0M2MzYjQuLjVkYWZhMDExMjg3ZTlh
Y2E0Mjc0NDJiM2VkNjdjN2FkOTNjNWRjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVUaWxl
KHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxUaWxlcygpOwogICAgIHZvaWQg
dXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEJhY2tp
bmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZSk7IH0KICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXIqKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRo
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
aW5kZXggNmI4ZDExZGE3MjdlMGFkNTQ1YzllZTNjNWY2Zjc0NGI5ZTA4NGFlYS4uMGRkMzA2NGVl
M2I4OTNmNWI4ZjAyZThmM2QyMDgwMzEwNWNlNmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFuZGxl
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKIHsKICAgICBSZWZQdHI8V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlPiBzdXJmYWNlOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQpAQCAtNzksMTEg
Kzc5LDExIEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzCiAgICAgaWYgKCFzdXJmYWNlKQogICAg
ICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShzaXplLCAoZmxhZ3MgJiBTdXBwb3J0c0FscGhhKSA/IFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncykpOwogCi0gICAgcmV0
dXJuIHN1cmZhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBzdXJmYWNlOwogfQogCiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVk
U3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogewogICAgIEdy
YXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KICAgICAgICAgR3JhcGhpY3NTdXJm
YWNlOjpTdXBwb3J0c1NvZnR3YXJlV3JpdGUKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1
cmZhY2UoY29uc3QKICAgICAvLyBJbiB0aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0
dXJuIG51bGwgYW5kIGFsbG93IGZhbGxpbmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAuCiAgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRl
KHNpemUsIHN1cmZhY2VGbGFncyk7CiAgICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NFUlQoc3VyZmFjZSk7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1
cmZhY2UucmVsZWFzZSgpKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjp+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiB7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQo
KSkgewpAQCAtMTYxLDcgKzE2MSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhCiAKICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSho
YW5kbGUubV9iaXRtYXBIYW5kbGUpOwogICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5t
X3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBiaXRtYXAucmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggN2RjMTZmMmMwNDNiZmI1ZmM0ZDM5MjNlMzMxZWQ1
YWMxZjYzNDNmYS4uOGExOGY2MDc2OTZiZmEwYjcwY2RhMmMwZGI3ODQ3OTZhZTQ4NjZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Us
IGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRt
YXAgYXMgYmFja2luZy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBo
YW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVh
dGUoY29uc3QgSGFuZGxlJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKIAogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAg
ICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZT4pOwogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEg
Z3JhcGhpY3Mgc3VyZmFjZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7
CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJm
YWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAgICAgLy8gQ3JlYXRlIGEgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFj
ZS4KICAgICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50
LmgKaW5kZXggZTQ1ODg2YTVkYmJiMGY1MTI3ZDUzMjBmYTkzYWM3MzgxNzZmMzdmNi4uNmU5NWIw
ZmVhNmVkNDYwYWQ2YzNkMDYzMjVjODFmZjI1OTgxOTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVt
SW5MaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qLCBBUEk6Ok9iamVjdCopIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERh
dGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCBkMDM4YmYxZjEwNTFmOWY5NGE3
ZTY3Mzk3MWViNjUwYmY2OGVkZTg4Li40MTI1M2M2ZDE3N2E1ZmFjMTRiZmEwNWQ0MzQ0YjEyYjYz
NWU2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMgY2xpZW50LgogICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNGEzZTNhOTQ3ZmFkYmFkOWQ0YmI2MGM2NjEzZDVjNzkw
MDZmYzYxZS4uOGI2Yjg5M2ZhMTkyNDEwYjM4YTM5YTIxMDA0Zjg5ZTRlMzg3MDNmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTExNTAsNyArMTE1MCw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgICAgICBtX2NsaWVudC53aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odG9BUEkoJnBhZ2UpLCB0b0FQSShpdGVtKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8QVBJOjpEYXRh
PiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jbGll
bnQoKS5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KCZwYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
KTsKICAgICAgICAgfQpAQCAtMTkzMSw3ICsxOTMxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNs
aWUKICAgICAgICAgICAgIG1fY2xpZW50LndlYlByb2Nlc3NEaWRDcmFzaCh0b0FQSSgmcGFnZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBw
YWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0
b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuY29weVdlYkNyeXB0b01hc3RlcktleSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA2MGQ4YTBmNTZmOTgwMGY3NTM1MDI1ODky
MzBkZTM3MGNkOWMyYWVjLi41YzE2YmY4MmQ1YWQwNmE0ZmJhMmM3MTA5ZWUzMzM5YTc1MGQ1Y2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCkBAIC0yMDYsMTcgKzIwNiwxNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBib29sCiAg
ICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAg
cmV0dXJuIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVh
dGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQor
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKFdFQktJVF9JU19XRUJfVklFVyhtX3Zp
ZXdXaWRnZXQpKQogICAgICAgICByZXR1cm4gV2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUoKnBh
Z2UsIGNvbG9yLCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGJjNWI2MzVjMWM5YjRhOWEwNTFlNTUwMWNkMGEzMTRm
MzY4MjQwMGYuLjFjYmYzNDg1ZWUxM2ZkMWMzMGY3OGY0NDQ2NzlkOWRjZWM2ZTZhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApA
QCAtODIsMTAgKzgyLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQ
b3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2Vy
PiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYg
aW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGlj
YXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiA9
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJDcmVkZW50aWFsLmgKaW5kZXggNDljZTEzZDU3NjlhYjM0NDRmMjMzY2M4NmRhN2E2ODEz
ZDRkYjUzNi4uZWFhYTFmNzBjNmQ4NWQ1NDY5NzRiN2I5MDZhNDA2YTY0ZDhmZTA1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3Jl
ZGVudGlhbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9u
U3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90
ZWN0aW9uU3BhY2UuaAppbmRleCAyMDU2NGY3NTY3YzkxMTZhZDYwYTBjYzg5NDc5NjgxNGM5NjQ2
MGMzLi4yOGJlYmE2ZThjMGM4NjcxZjY5OTFiMWU3YTMyODRkZWJhM2MxN2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNw
YWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlBy
b3RlY3Rpb25TcGFjZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAppbmRleCA4Nzg2MGJkMGM3MDFl
NTdkYzQyYzg1YWJjODk4N2EyMjljN2I5ZjQzLi43NTJlNGNjNTgxMDkzMmU2MDBjMWFlMzBlNGFi
MjAxNGM0ZmFmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0Nv
cnJlY3Rpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29y
cmVjdGlvbkNhbGxiYWNrLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJHZW5lcmljQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggZDU1MjZhMTU2NGVkODRmZjkyODI1YjM4ZDU0
MzBmMTc2N2UxYjUyYS4uZGJkODk0MzkyNTI0YjM4ODZkNTk1MjNhOGRiNTMwYjc3NDdkNzMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJQYWdlUHJveHkmLCBXZWJQcm90ZWN0
aW9uU3BhY2UqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6
OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVBy
b3h5Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RG
OjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmlu
ZGV4IDYwYWRiZDRiM2NjNzcyNjRkZWZmZTVlN2FlM2UzMjNiMjM5NTFmNTYuLjY0ZDA3MzUzMDcz
MmZkNDdjYTg1ZjhhMjc1MDU1M2JiMzI4NWYwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcwLDcgKzY3MCw3IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpXZWJQYWdlUHJveHkmIHBhCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3V2ViUHJv
Y2Vzc0RpZENyYXNoOm1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CiB9CiAKLVBhc3NSZWZQ
dHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0
b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpCitSZWZQdHI8QVBJOjpEYXRhPiBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCmluZGV4IDU5OWI2MzM4MDI5NWFjOTIzZDIx
MWU3YmNjYjliM2IzOTRlMmRjYWIuLmI2ZWY2Mzk2NTRmNzc3MzBiZDExMmM1NjE1MTZhMTdmZTgx
M2UwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC00MzAsMjMgKzQzMCwyMyBAQCB2b2lkIFdlYlZp
ZXc6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwg
Ym9vbCB3YXNFdmVudAogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3Ojpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29s
b3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitSZWZQdHI8V2ViQ29s
b3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmgKaW5kZXggMmZjZDY0MGFlOTg4ZWM0NzYzNzAwYTg3ZGFiNGNjMDAzOTQ3
OWJlOS4uZDQ1MzcyNDdhYjkzN2QxYjVmNWY4YzJkZjhkNjcwZGE1YzBjOWQxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuaApAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZl
bnRIYW5kbGVkKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+
IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBp
bml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGlj
YXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JM
aWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDBmOGQyNDA0N2U2
ZDUxOGVmOTkwMjQ2YWY4ZjkzNmNmNDE1OWFjMzguLjVkYzNlNTBmMWI0YTU2NDFlYTYzNjFmN2E5
ODVkMjE1ZjkzMzk2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjEwLDExICsyMTAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNo
RXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSA9
IDA7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
KikgPSAwOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVy
bWFuZW50KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
OWI2MDlkMGM1MjQ2Y2RhNDEzNWQzZjY0MTRiZWZjMWU1NWIzOGYxOC4uYmRjZTdjZDhlMjM4NjM2
ZDUzOGVlODFjZGQwYjcyZWI0NWJhOTBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNzMwLDcgKzczMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVs
ZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBi
b29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogCiAgICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlld0VmbC5jcHAKaW5kZXggM2RjZmRkYzA3ODg1ZmYyNDExYWM4MjkyMmVmYjgxMmY2NzcwZDMy
MC4uYjU1NzA3OGI2NmE4OGI2ODQzYjA3ZTgyZTRjMTU3OTJiZDBiOGNkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC04OCwxMyArODgsMTMgQEAg
dm9pZCBXZWJWaWV3RWZsOjpwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSkKICAgICBzY2VuZS0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dCgmY29udGV4dCwgbV9wYWdl
LT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSwgbV9wYWdlLT5kcmF3c0JhY2tncm91bmQo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdl
KQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbDo6Y3JlYXRlKHBhZ2UpOwog
fQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJDb250ZXh0
TWVudVByb3h5RWZsOjpjcmVhdGUobV9ld2tWaWV3LCBwYWdlKTsKIH0KQEAgLTIxMiw3ICsyMTIs
NyBAQCB2b2lkIFdlYlZpZXdFZmw6OmluaXRpYWxpemVDb2xvclBpY2tlckNsaWVudChjb25zdCBX
S0NvbG9yUGlja2VyQ2xpZW50QmFzZSogY2xpZQogICAgIG1fY29sb3JQaWNrZXJDbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3
RWZsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsK
ICAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJFZmw6OmNyZWF0ZSh0aGlzLCBwYWdlLCBjb2xvcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCmluZGV4IGVmOTkx
MTg0NmEwZDkxNmFhYzRhYTcxOTM3YmYwOTg4MTZmOTdjY2MuLmEwY2FmMTAzYzVmYmIzMmU1YmRm
MWZjYjM2MDQ1MDJhMWFhMGUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlld0VmbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVD
b2xvclBpY2tlckNsaWVudChjb25zdCBXS0NvbG9yUGlja2VyQ2xpZW50QmFzZSopOwogCiAgICAg
V2ViQ29sb3JQaWNrZXJDbGllbnQmIGNvbG9yUGlja2VyQ2xpZW50KCkgeyByZXR1cm4gbV9jb2xv
clBpY2tlckNsaWVudDsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
QEAgLTY2LDEyICs2NiwxMiBAQCBwcml2YXRlOgogICAgIFdlYlZpZXdFZmwoV2ViUHJvY2Vzc1Bv
b2wqLCBXZWJQYWdlR3JvdXAqKTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYpIG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSBvdmVycmlkZTsKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDQ4NDIxMjcwOGQzMDdiYTE3NDMyNjE3M2U1NWEzYzBkNzZkNGUwZGYuLmNjNDBiNTZmNzk3
NmM4Nzc4YmUwMjg2Mzk1Yjg5NjJlMWUyMWRkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTk3LDggKzk3LDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVk
KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRl
eHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVu
dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dEluZGljYXRv
ckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCAwMzM3ZjNmNzlkNWQ4OWY1YzRlMjJiMjc5YmZjZDdlZDM2YjRmMTIzLi5hMDgxNmM0NWNhMTZm
ODAwMTIzNmQ0ZjFmMGYzMTcxMmRjODZhMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTQ0MSwxNiArNDQxLDE2IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiBuYXRpdmVXZWJ0b3VjCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSopCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5KikKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0
b3IsIFRleHRJbmRpY2F0b3JMaWZldGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZmQyMjkxYTU1NjE1ZTJlMDZjM2VjMmU5ZDIx
OTY5NGJmNWU0OGRlMi4uN2M1MjJjNjFmYzNjM2FkODNlYmI0ODUzMmYyMzMxOThhNjYxZjQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwNywxMCArMTA3LDEwIEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggYzFmNmZjMThlMzU0MGE5MzYzYmZhZjYzOGQzZDFlODk0ZjI0YWEzNy4uYWJlMzk0
Yjc2ZjRiZGI4N2Q4NTU2ODU2OTkzNDMyZWNjNTExYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTIwLDExICsxMjAsMTEgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmly
dHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlm
ZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBmMWY0MjQ3Y2RlMGFmY2UzODMyMjgwYjViY2Rj
MzMwMDJmYWUxODc2Li44MWQwYjFiMDA0NmM0NWZhZGQzOTE3NWEwZGNjNzhlMGIwNGFmMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAg
LTQ4NywxOCArNDg3LDE4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wKICAgICBbbV93a1ZpZXcg
X2RvbmVXaXRoS2V5RXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKSBldmVudFdhc0hhbmRsZWQ6ZXZl
bnRXYXNIYW5kbGVkXTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlNYWM6
OmNyZWF0ZShtX3drVmlldywgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
CitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tl
cihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Is
ICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBXZWJDb2xvclBp
Y2tlck1hYzo6Y3JlYXRlKHBhZ2UsIGluaXRpYWxDb2xvciwgcmVjdCwgd2tWaWV3KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCA0YzIyMzFiNjllNTVjNGI0OThmMDhjNGEyZmM5NWViNzBkZDU5NmEyLi5iMjkyOGNmMThjZjhj
YmI1YTM3MmZlOGM2OGQ2N2Y5NWVlZGFlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzY4LDE3ICszNjgsMTcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAg
IGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUg
PSAwOwogICAgIGNvbnN0IGF1dG8gbWVzc2FnZVRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6c2Vjb25k
cygyMCk7CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIG1fcGFnZUlELCBt
ZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMWVkNzhkMzQ1ZDRl
NzQyZDc5ODYwMjVhNmY0MzY3YWYzOGJmZGU0Yy4uYWEyMzI0Y2UxYmEwNzhkYWEwMzAyYWY0MTAx
NWNhNGY5YzlhODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTY3LDIwICs2
NywyMCBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFt
ZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKGZyYW1lLCByZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikK
ICAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZyYW1lLT5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Ci0gICAg
cmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAotUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gbG9hZGVyID0g
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0
KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCAw
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURl
ZmF1bHQpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBsb2FkZXI7
CiB9CiAKIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1heGltdW1CdWZmZXJpbmdU
aW1lKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRl
eCAyZTgxNzk3YjVjOTQ4ZTk5NzMxM2E2NmVjYmFjMzg2YjU5ZTZmYjk1Li43NjRlMWFhOGU2NDE0
YTMxZmExNjYyZDE2NjYwYjYxNjcwMTZiZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
ICAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29sKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGQzZGMyNDdlNDhjZDYxODdkNjkyZTZlNDFjNDJl
NmFhN2E5MmNlYWYuLjM5ZTliM2Q0OWVmNmJkMWIzNGYwODEzMTA0MGNiNDQ5NWUwOWVjZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgTmV0c2NhcGVQ
bHVnaW46On5OZXRzY2FwZVBsdWdpbigpCiAgICAgbV9wbHVnaW5Nb2R1bGUtPmRlY3JlbWVudExv
YWRDb3VudCgpOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUChOUFAgbnBwKQorUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUChOUFAgbnBwKQogewogICAgIGlmICghbnBwKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmV0c2Nh
cGVQbHVnaW4qPihucHAtPm5kYXRhKTsKIH0KQEAgLTcwOSwxMCArNzA5LDEwIEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsKIH0K
IAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgp
CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogewog
ICAgIGlmICghc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSB8fCBtX3BsdWdpblNpemUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NF
UlQobV9pc1N0YXJ0ZWQpOwogCkBAIC03MjgsNyArNzI4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAKICAgICBwbGF0Zm9ybVBhaW50
KGNvbnRleHQuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7
CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFwOwogfQog
CiBib29sIE5ldHNjYXBlUGx1Z2luOjppc1RyYW5zcGFyZW50KCkKQEAgLTEwNjQsOSArMTA2NCw5
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBO
ZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBOZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEludFBvaW50IE5ldHNj
YXBlUGx1Z2luOjpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnRJblBsdWdp
bkNvb3JkaW5hdGVzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCA4YjMyODNjOTc5
M2VhNGYwNGIwMjMxZjk1NzcwZDBiODZmZmUzNWYzLi5kODhiNmZkN2ZkZDViZjlkNWM1Zjk4NDll
MjZjMjg3YTcyMGY4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NS
ZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKICAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
bigpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQ
KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9tTlBQKE5QUCk7CiAKICAg
ICAvLyBJbi1wcm9jZXNzIE5ldHNjYXBlUGx1Z2lucyBkb24ndCBzdXBwb3J0IGFzeW5jaHJvbm91
cyBpbml0aWFsaXphdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5
SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTg4LDcg
KzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFy
YW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJy
aWRlOwogI2VuZGlmCkBAIC0yNjQsNyArMjY0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb252ZXJ0
ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJsZSkuCiAgICAg
Ym9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludElu
Um9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApp
bmRleCA1ZDY1YTY2NmVhOTE0NDY0NTJlMzFiNmFjMTRkODM5MjgzMGFjMjE4Li4zMGM3OTBmMTM0
YTY3OWFiYmI4ZDcwYjM0ZWJmODhjOTk0YmFkNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSBv
dmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nu
YXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0
Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQmVpbmdBc3lu
Y2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCA5ODQ3MDE4ZjNjNjY1NzY0NjUxYTQ5ZWY4OGFlOTQzYjA4OGRmMzhhLi45MzI0
OTQ4MjUyYjcwYzg2YTUxMzhjMmQ5M2MwNTU3ZWEwZTkwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTE1Miw3ICsx
MTUyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENB
TGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICBzY3JvbGxiYXItPnBhaW50KCZn
cmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwogfQogCi1QYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCitSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKIHsKICAgICBpZiAoc2l6ZSgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTY5LDcgKzExNjksNyBAQCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAKICAgICBbbV9wZGZM
YXllckNvbnRyb2xsZXIgc25hcHNob3RJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJpdG1hcDsK
IH0KIAogUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXllcigpCkBAIC0xNjM1LDEy
ICsxNjM1LDEyIEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50
KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRm
RGF0YSA9IGxpdmVEYXRhKCk7CiAKICAgICBpZiAoIXBkZkRhdGEpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6Ondy
YXBOU0RhdGEocGRmRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggYTE0ZTk4YWEyOWFkMmFlYzliNjk2MDNlMWMxYzkwNjgyMjJkN2ExMy4u
NjJhYjg0N2M2YmVjNDk0YTliYjQzZDIyOWM5MWY3ZDk5ZDM1NjkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0byBkcmF3IGl0c2VsZiBpbnRvIGEgYml0bWFwLCBh
bmQgcmV0dXJuIHRoYXQuCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFw
c2hvdCgpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIElmIGEgcGx1Zy1pbiBp
cyB1c2luZyB0aGUgQ29yZSBBbmltYXRpb24gZHJhd2luZyBtb2RlbCwgdGhpcyByZXR1cm5zIGl0
cyBwbHVnLWluIGxheWVyLgpAQCAtMjgzLDcgKzI4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCmluZGV4IDFlYzE2YmUxNzFhNTVkYmVhMzI0MzRkMGIwZTQ4ZDcyMzdmNjEz
NWYuLjEzY2E1NDMyNThmNzY1Mjc4NjFiMGRhMzM0MzllZDZlZmVhMGVkMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjM4
LDE2ICsyMzgsMTYgQEAgYm9vbCBQbHVnaW5Qcm94eTo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBj
b25zdAogICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQ
bHVnaW5Qcm94eTo6c25hcHNob3QoKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHNu
YXBzaG90U3RvcmVIYW5kbGU7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBzaG90KCksIE1lc3NhZ2Vz
OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBzaG90OjpSZXBseShzbmFwc2hvdFN0b3JlSGFu
ZGxlKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIAogICAgIGlmIChzbmFwc2hvdFN0b3JlSGFuZGxl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJldHVybiBzbmFwc2hvdEJ1
ZmZlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCiBib29sIFBs
dWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKQEAgLTcxNiw5ICs3MTYsOSBAQCBJbnRQb2ludCBQ
bHVnaW5Qcm94eTo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogICAgIHJldHVybiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGx1Z2luUHJveHk6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGx1
Z2luUHJveHk6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDg5MDQxYzA0OThj
NjNlNmY4ODI5YzU1NWI0OTIzNGYwZWMwNmI1ZmIuLmUyZjk4YWQ3ZWNjY2VjZTI5ZDQ4ODA5Nzky
YTA4MzEwOGE3YWI3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3Qo
KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTEzOSw3ICsxMzksNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCmluZGV4IGFhOGY0MzE2OWM4NWY1NzQ1NzNlYTdiNGJlNjI1ODMzMTc4ODc1M2YuLjM1Nzc4
ZjgyMTVhOTZhMDU0ZWU3ZDdkZTg4N2MxNGZiZDdjZGZhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95
U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVhTWFw
cy5yZW1vdmUoJm1hcC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdl
QXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBtYXA7CiAKQEAgLTg2LDcg
Kzg2LDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0
b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkKICAgICByZXR1cm4gU3RvcmFnZUFyZWFJ
bXBsOjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCitSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFn
ZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CmluZGV4IDZjNTE2NzRjNzFhMjAwY2NlNDc4ZjdiYzA5NDJkZjdlOTM4YmQxOWEuLjM3ODE3MTcz
ZTI0ODViODY2YThhZjMyOTM3NTUxYzc3ZDI2ZDgzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01
NCw4ICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAgIGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFn
ZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXgg
ZmQwYTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NS4uNDUyMDYyMDAzZmRhZjZk
ODYyMTg4MDIyYTc1ZmYxZGRiZTgxODBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwCkBAIC0xODUsMTIgKzE4NSwxMiBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3Rh
dGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQog
ICAgIH0KIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25zdCBQ
YWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK1JlZjxIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25z
dCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3Rv
cnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUudXJs
U3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOwotICAgIGFwcGx5RnJhbWVTdGF0ZSgqaGlzdG9yeUl0
ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0
b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLnVy
bFN0cmluZywgcGFnZVN0YXRlLnRpdGxlKTsKKyAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0
ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CiAKLSAgICByZXR1cm4gaGlzdG9yeUl0ZW0u
cmVsZWFzZSgpOworICAgIHJldHVybiBoaXN0b3J5SXRlbTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCmluZGV4IGU0MTU0MTVlMTRl
NmYzNGQyZjBlYmI1MWNlNjY4YjM0NDA4M2QwNTguLmJlZTlkMjI4Y2E3MzlhNWE4ZjY2NTBjYWZj
ZjdiZWYwZGJjZDRkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFBhZ2VTdGF0ZTsKIAogUGFn
ZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJik7Ci1QYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYp
OworUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0
ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDE1NTBhMzNlYTQ0ZGNlYjhlNmE5NzFiMTg2OTExYTBiZTYxNTY3NzcuLjkzOWRjY2NjYWE0
YmY5MThlNzk2ZjZjNTU1YTRiYjMwZDk4ZDQ0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTgzNCwxMiArODM0LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1
cCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlBv
cHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUobV9wYWdlLCBj
bGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUo
bV9wYWdlLCBjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZTIwODFiOTc3NGMx
YjQ3MjliNDEyZDNkMmQ1Y2Y1MDQyNzRkZDA5Ny4uMTY1M2RmYzEwMDZmZTRlOTgzMjg2NjIwOWFj
MDAyYjhjODdkZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDMsOCArMjAzLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZv
bGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGlj
c0xheWVyRmFjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hS
b290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYmU2ZTli
MGVhZDg5OTIzYWI3OGRiMzA4YTJiNDhhYzY2OTcxNDhmNy4uNTQwZGRlOTU2Zjk4ZDgwOWQ0ZjE2
OGIyYzM5NDdmYWZmNzQ5YjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIHJldHVy
biBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZURvY3VtZW50TG9hZGVyKCptX2ZyYW1lLT5jb3JlRnJh
bWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKERvY3VtZW50TG9hZGVyICpkb2MKICAgICBtX2ZyYW1lLT5jb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoZG9jdW1lbnRMb2FkZXIsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
UGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LAorUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9s
bGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtMTM4NCwyNSArMTM4NCwy
NSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgRnJhbWUqIGNvcmVTdWJmcmFtZSA9
IHN1YmZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVTdWJmcmFtZSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGhlIGNyZWF0aW9u
IG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1v
dmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBpZiAoIWNvcmVTdWJmcmFtZS0+cGFn
ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFVSTEludG9DaGlsZEZyYW1lKHVybCwg
cmVmZXJyZXIsIGNvcmVTdWJmcmFtZSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFu
ZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgogICAgIGlmICghc3Vi
ZnJhbWUtPmNvcmVGcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgQVNTRVJUKHN1YmZyYW1lLT5jb3JlRnJhbWUoKSA9PSBjb3JlU3ViZnJhbWUp
OwogICAgIGlmICghY29yZVN1YmZyYW1lLT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjb3JlU3ViZnJhbWU7
CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KQorUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxv
YWRNYW51YWxseSkKIHsKICAgICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFyYW1WYWx1
ZXMuc2l6ZSgpKTsKICAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKQEAgLTE0MjEsMTIgKzE0
MjEsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW4KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNy
ZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJz
Lm1pbWVUeXBlKTsKICAgICBpZiAoIXBsdWdpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5F
bGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHBsdWdpbkVsZW1lbnQpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzY2IxNWU5
NDk0ODE2ZjUxOGZlNjY1MDcwYjMyNGI2ZmU1NDg3N2M1Li41OTBmOTcxMDNmNTlmMDY4ZGNkMjli
MzI3NDk5MDU4OGU2OWY1ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
NjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKQEAgLTE4NSwxMCArMTg1LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2Fk
TWFudWFsbHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJD
b3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJyaWRlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDEyMDI3
MTkxODcyOTkxZjlmMjBjNDgwZGVjZTZlZWQyN2JhNWRjMzEuLjNkM2JkMDdjMTQ0OGYzYjUxNTY1
YTNlNjdiOWU0N2M1ZGE4NDMyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0MSwxNCArMjQxLDE0IEBAIHByaXZhdGU6CiAKIERFRklO
RV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNv
dW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUGFzc1JlZlB0cjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVh
dGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgUmVmUHRy
PFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZihuZXcgV2ViUGFnZShwYWdlSUQsIHBhcmFtZXRlcnMp
KTsKKyAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQs
IHBhcmFtZXRlcnMpKTsKIAogICAgIGlmIChwYWdlLT5wYWdlR3JvdXAoKS0+aXNWaXNpYmxlVG9J
bmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxl
KCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRp
ZENyZWF0ZVBhZ2UocGFnZS5nZXQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7CiAKLSAgICByZXR1
cm4gcGFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShwYWdlKTsKIH0KIAogV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00OTA4LDE2ICs0OTA4LDE2IEBAIHZvaWQgV2ViUGFnZTo6
c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJh
clN0eWxlKQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJQ
YWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVm
PERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1l
bnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVE
YXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9j
dW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKICAgICBpZiAo
bV9wZW5kaW5nTmF2aWdhdGlvbklEICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwog
ICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAwOwogICAgIH0KIAotICAgIHJldHVybiBk
b2N1bWVudExvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShkb2N1bWVudExv
YWRlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjN2E0MDA0ODcxMGQ4OWIx
ZGQ1ODYwMDgwNGY1Yjg2YmE5MWE0M2E0Li4wNWVlZDhiN2MzY2M0MjE5YzA0NTg3MTRhNmJiOTky
MzdmODQyMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCiBjbGFzcyBXZWJQ
YWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFn
ZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHN0YXRp
YyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVp
bml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC04
NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBtX3Njcm9s
bGJhck92ZXJsYXlTdHlsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdU
Rjo6T3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlICov
PiBzY3JvbGxiYXJTdHlsZSk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAg
UmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3Jl
OjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihX
ZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKICAgICB2b2lkIGdldEJ5dGVj
b2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTExMjEsNyArMTEyMSw3IEBAIHBy
aXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0
aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7Ci0gICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gbG9va3VwVGV4dEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBs
b29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipv
cHRpb25zKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZvaWQg
aW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRD
b21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDhmOTg2NmQ2M2ZmZWNiMGU4Mjk5NmQ4NzcxM2FlNjQ0MzY3
OThiYzEuLmE0MGM4MmQ5NjU5MDYxYTE2ZWRlMGIxM2NiMjQ1ZmViMDVhZTRkNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChp
bW1lZGlhdGVBY3Rpb25SZXN1bHQsIGltbWVkaWF0ZUFjdGlvbkhpdFRlc3RQcmV2ZW50c0RlZmF1
bHQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxvY2F0aW9u
SW5WaWV3Q29vcmRpbmF0ZXMsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCitSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9pbnQgbG9jYXRp
b25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBNYWlu
RnJhbWUmIG1haW5GcmFtZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICghbWFp
bkZyYW1lLnZpZXcoKSB8fCAhbWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257028</attachid>
            <date>2015-07-18 04:17:36 -0700</date>
            <delta_ts>2015-07-18 06:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150718201624.patch</filename>
            <type>text/plain</type>
            <size>119009</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwNmVmZjZmMTQwOWY2
YTVhOGU4MWJiM2Q4ZDhjMzViNzY2ODE1Ni4uYWM2OWM3MTM3ZDc5MDMxNWU1ZjExNTFhMjY0ODhl
Y2JjODkwYWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTcgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY5MTA1KTogRG8g
bm90IGFzc2lnbiBhIHJlbmRlcmVyIHRvIG11bHRpcGxlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBhNDhlNTE0OGYzNTg1ZTkyNWU1MjMwYTI0MGIwMTk4ZDUzOWRlOTY2
Li42Y2I2OTEyYWJmYTczMWM0MTUxNGMyNmJhYzJhMWQ4YTAxOTNjNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIg
LSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBy
ZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGlu
IFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBX
ZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNyAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnVydGhlciB0aWdodGVuIHRoZSBzYW5k
Ym94IGFyb3VuZCBwYWdlcyBmZXRjaGVkIHdpdGggQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNo
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlMzRhYmJjNmE5Y2I1ZDExNTcxNGE5NTQwMWI3MmM2
YzVlMDc4NzAuLjFlM2ZmZWUwYTdhODU3NzcxNjIyM2NlZWMwNmE1ODc0NDJiMTQ1N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0xOCAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFBhc3NSZWZQdHIgaW4g
V2ViS2l0MiAtIDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBhdGNoIHJlZHVjZXMgdXNlIG9mIFBhc3NS
ZWZQdHIgaW4gV2ViS2l0Mi4KKyAgICAgICAgQmVjYXVzZSBzb21lIHVzZXMgZGVwZW5kIG9uIFdl
YkNvcmUsIFdlYkNvcmUsIFdLMSBwb3J0cyBhcmUgbW9kaWZpZWQgYXMgd2VsbC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxNS0wNy0xNiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBHcm9zcyB3b3Jr
YXJvdW5kIHRvIGZpeCBidWlsZCBhZnRlciByMTg2ODU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMwMjU4Njcz
ODRkNDY2Y2Q1M2IwNzNhNGZmNWMzNDlmOTQ1MzU4NDAuLjIxYTY3ODk0MWM4NzI5ZTc0YTM4NDI0
YWMwMDFmZjcyNDQ2NTk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDct
MTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
ZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29t
ZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJl
cGx5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1
cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJl
Y3Rpb25DYWxsYmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0
b01hc3RlcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3RWZsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmll
d0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
clBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxl
U3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpz
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9va3VwVGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGdXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRi
b3ggYXJvdW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2ht
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDk1NWE5Y2Y5ZGRj
NmQ1MmE1MTU4ZDM0YWZlZGM5YTlhMGU1YjYxOGIuLmVhOTI1NWM4MjBmMjNkNGE5NGNkNWRjYzJh
YjBlZmM5NmMxNTYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7
Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJyaWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBF
bXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+
IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZSB7IHJldHVy
biBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCiAgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBvdmVycmlkZQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8RW1wdHlQb3B1cE1lbnU+IG1fcG9wdXA7CiB9OwogCi1QYXNzUmVmUHRyPFBvcHVw
TWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RW1wdHlQb3B1cE1lbnUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0
eUNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbXB0eVNlYXJjaFBvcHVwTWVudSgpKTsKIH0KQEAgLTE4MywxOSArMTgzLDE5IEBA
IHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lCiB7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICByZXR1cm4gRG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwg
aW50KQorUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmLCBib29sLCBpbnQsIGludCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCkKK1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDUzODEyMDM4YmY2ZGU1ZDBhODI3MDE1N2Nj
ZjE3ZGI2ZTdjMTMxNDkuLjhjNTdkNmU0ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTExOCw4ICsxMTgsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1
cmFsKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51
PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAKQEAgLTM0Myw3
ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPERvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAKQEAgLTM3MCw4ICszNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMDAzZDJlMTA1ZjU0OTZiYjFiYjUzMjQ1OWJhZDllOWQzZTY1ZmNjNi4uMmRhZjQw
NDVkNTdhZDBiNzQ3MzcyZjUyMDkxYjBhODAwMGRhNmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxv
YWRlcigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0
IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1l
bnQuCi0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRM
b2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkp
KSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAg
ICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiAKQEAgLTEzMjUsMTYgKzEzMjUsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQogICAgIGlmICghcmVxdWVz
dC5oYXNTdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICByZXF1ZXN0LnNldFN1YnN0aXR1dGVEYXRh
KGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNy
ZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vi
c3RpdHV0ZURhdGEoKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9O
ZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LnN1YnN0
aXR1dGVEYXRhKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3
RG9jdW1lbnRMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKSk7CiAKLSAgICBsb2FkKGxvYWRlci5nZXQoKSk7CisgICAgbG9hZChsb2FkZXIucHRyKCkp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24s
IExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgYWN0aW9uLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0
ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKIAogICAgIGlmIChsb2NrSGlzdG9yeSA9PSBMb2NrSGlzdG9y
eTo6WWVzICYmIG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUdsb2JhbEhp
c3RvcnlFbnRyeSgpID8gbV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygp
IDogbV9kb2N1bWVudExvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpA
QCAtMTM0Myw3ICsxMzQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9k
b2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGxvYWRlci5nZXQoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCB0eXBl
LCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXIqIG5ld0RvY3VtZW50TG9hZGVyKQpAQCAtMTU1
NCwxNCArMTU1NCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNv
ZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgIC8vIFdlIHNob3VsZCBhc2sgdGhlIHVz
ZXIgZm9yIGNvbmZpcm1hdGlvbiBpbiB0aGlzIGNhc2UuCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3Vt
ZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7Cisg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExv
YWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkp
OworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2Fk
ZXIobG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSk7CiAKLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0
KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSk7CiAKICAgICBs
b2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogCi0gICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
bG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5k
VG9FbmRSZWxvYWQpCkBAIC0xNTgyLDggKzE1ODIsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBs
b2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNvbWUgbV9kb2N1bWVudExvYWRlciBl
dmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMgdG8gYmUgdGhlICJwb2xpY3kiIGRv
Y3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNpb25hbCIgZG9jdW1lbnQgbG9hZGVy
LgotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9j
dW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChp
bml0aWFsUmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAgIFJlZjxEb2N1bWVudExv
YWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVl
c3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwor
ICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIo
bG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QgPSBsb2FkZXItPnJl
cXVlc3QoKTsKIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
KGJvb2wgZW5kVG9FbmRSZWxvYWQpCiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
bV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKICAgICAKLSAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRU
eXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihs
b2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9y
aWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclBy
b3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzEzYTE5NjFmNDJjYjg3ZDgw
YzA1ZmYzMWJlNGNiYjU0ZmU0YTU2Mi4uYzlkZmYyMmI5N2Y0ZmJjM2ZhMDY0YTk1M2ViMDU3ZWMw
YTgzOWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTI1MCw3ICsyNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZjxEb2N1
bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSA9
IDA7CiAKQEAgLTI3MSw4ICsyNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFs
IFJlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAppbmRleCA5MDcxMzEwYmUwNjA1YjE4MTlkMmY2M2NiODY0NTg3Mjg2OTQ3NzY2
Li4xYWUzZmJjYTEzY2RhZDhhMGM1OGIzMmIyZTNlYzIyZTA2NWJhYmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6flJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJl
c291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQpAQCAtMTI2LDEyICsx
MjYsMTIgQEAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmEKICAgICBpZiAoIWxvYWRlciB8fCBsb2Fk
ZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0K
IAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxv
YWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwg
cmVxdWVzdCk7CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBsb2FkZXIg
PSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVl
c3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCkp
OwogICAgIHJldHVybiBsb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKaW5kZXggOWZiOWZiNGE3NTA1OTJkM2MyOThjZWFkODY0MzdlMGMyMjRj
ODU0My4uYjA1ZGEwNDQ5YWJmNzEzMTU4M2FlMjAxYWUwNDNhOGI4ZWVkODYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNTEsOCArNTEs
OCBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxl
cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291
cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFt
TG9hZChGcmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbW92ZShS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291
cmNlTG9hZGVyKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDgwODMxNjcwNzUy
ODRjYTQ0NGNlNTQzMTUyOWVhMDM2NzcyNGVhZC4uMDNmMDU4ODUzZGZjYzViYjE3Y2Y5NTJkOGZm
MjU0MTFkZWExMTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFN1YnJlc291cmNlTG9hZGVyOjp+U3VicmVzb3VyY2VM
b2FkZXIoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9w
dFJlZihuZXcgU3VicmVzb3VyY2VMb2FkZXIoZnJhbWUsIHJlc291cmNlLCBvcHRpb25zKSkpOwog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzbwogI2VuZGlmCiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBzdWJsb2FkZXI7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBkZjA0MzJhZGNhMTRiOThiNDQwMWJh
YjRiMjJmZjg1MDlmZjVlMzlhLi5hMDg5MDFiNTU1ZDg0ZWE0NmM0NWVlNmU5ODhlNWM0ZmI4ZTNk
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9h
ZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1l
KiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVh
bCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDQ0ZTIz
MjY4MjI2NTY1NjViNmJjZWZjYjU0ZTYxYzZjOGY0OTUwMzkuLmQyYmZjNjUzY2JmZWMxMzAxNTQ2
NDIwMDY3ZWFhNDA4ODA5NWFlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTU0OCwxMyAr
NTQ4LDEzIEBAIGJvb2wgQ2hyb21lOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY2xpZW50Lmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBD
aHJvbWU6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAogewogICAgIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpOwogICAg
IHJldHVybiBtX2NsaWVudC5jcmVhdGVQb3B1cE1lbnUoY2xpZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAg
ICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjIyNTE4
NGM4YmY1YjA0ZGZjMDA4MGRmOWNhOTdkNDI5NDdjNjhiOS4uYzBiZDg1ODgwNzg3ODhhMDgxZjBl
ZDg1ZWNmYjk0MGM5YjA2Mjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xNzMsOCArMTczLDgg
QEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KTsKICAgICBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKTsKICAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBjb21lIHVwIHdpdGggYSBiZXR0ZXIgbmFtZSBm
b3IgdGhpcyBzZXR0ZXI/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA0Nzg2ZWM4
MDVlNTliODg0YTYwNzM3ZjkwNGEyODA0YTBhZGNjZGQ4Li40ZjgxNDNkMmIxZmUxY2YzMzljNDhm
NmU2NzczMTI4MjAxOGU0MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM3
NSw4ICszNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1l
bnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSA9IDA7CiAgICAgLy8gQ2hlY2tzIGlmIHRo
ZXJlIGlzIGFuIG9wZW5lZCBwb3B1cCwgY2FsbGVkIGJ5IFJlbmRlck1lbnVMaXN0OjpzaG93UG9w
dXAoKS4KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVu
dCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggNzkyN2E0OWI0Mzg1M2RjYzEzMWU3Yjc1Njc4MmE0
MDI3NGZiMzU0OC4uMDc2ZDAxYmU5NDA1ZTFjMDQxNTg5MDU5NzlhZTY0ZGYxM2NmNTE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291bnQgKi8sIGNv
bnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSB7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMmU3NmQ3Y2RkMGUxODlhZWRmZjY4YjExMjlmZDFhNzgy
M2E4YmE2Yy4uMGM5ZGE3MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYgYXJy
YXkpOwogCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4g
bV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQorICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBt
X2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRl
bHRhIC0gbV91c2VyU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1Zp
ZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVRyYW5zZm9y
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggYjMzYmJiNjI5MzAwNWVmZjZhZjM3NmM0MTQxOGVkYWM1NTA4YTEwYS4uZTk3ZmNk
ODljMmM4MWJmZjE3OGVhOWI1YzRmZTNlODY2MDRjNDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
dWludDMyX3QpCiAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVmZmVycygpOwogfQog
Ci1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElu
c3RlYWQgb2YganVzdCByZXR1cm5pbmcgYW4gZW1wdHkgdGV4dHVyZSwgd2Ugc2hvdWxkIHdyYXAg
dGhlIHRleHR1cmUgY29udGVudHMgaW50byBhIEJpdG1hcFRleHR1cmUuCiAgICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IGVtcHR5VGV4dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmgKaW5kZXggMzFkMTgxOTJjZDNlZjBhYjQ2ODY4MWNiZmU1YWRm
ZTk2ODM1MzhiYi4uMjI0YjgwNjA1MjA4NWU3ZTM2Mjk5ZmRkNDllNmQwMmQ2Y2E3MDQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZh
Y2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZO
ZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA2NDhlNzFmMDBhMDlh
YWY3YmJmZTM5MjgwZWMwZWE3N2ViMTQ4NmRmLi43ZTIyMTJlNTI1ZjQyZjU1ZGVhODE3YWVhMDli
ZDk1MjVkYTM0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBHcmFwaGljc0xheWVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6
Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGlubGluZSBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIGlubGluZSBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGlubGluZSB2b2lkIHNldFRleHR1
cmUoQml0bWFwVGV4dHVyZSogdGV4dHVyZSkgeyBtX3RleHR1cmUgPSB0ZXh0dXJlOyB9CiAgICAg
aW5saW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVj
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCBkMzU3MTBhNjkyODFhODIwNjE2ZGUzMTIxMzNjNGQzYzdmZjkxN2U4Li4zNjI1YzE0ODY0
MzFkNDQ1YTJhOTkxMzIwZWY1MTAxZjQ1ZmUxNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBl
ciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRl
eHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0aWxl
IDogbV90aWxlcykgewogICAgICAgICBpZiAoYXV0byB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMmY3
OTJkY2Y5NDg0OGQ0YjhhYmIwYTI5ZjEwZDgzMTg0ZTMwZjU5ZC4uNGYzY2NlODhjYWJkZmQyNDQ0
NjgxZDVhN2ZjMTIyYmViYzM0YWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZp
cnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpIHsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRD
b3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDA5Y2EzZGUwNGJl
Y2Q2NTc5YmEyNTVmYmExZTMzMjZhYzExYTViYmIuLmJkZTk1ZjUxODA3NzlhZmE0ODE5ZTkzYjM2
ZjkwNTU2ODllZTQwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZS5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikg
PSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2Uq
IG5ld1BhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDA0ZGE0ZDE3ZjhhZTU0ODFmMzA5ZjMwN2ZjMGI5N2U5MTdmZjQzZTQu
LjZhYTBmMzMxNjk5ZmQwMjllMTBiZmE3M2E1MWFiZDU5NmVhNzk1OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtODUsNyArODUsNyBA
QCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAgICAgICAg
Y2xvc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKikKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKQEAgLTk2LDEwICs5NiwxMCBAQCBQYXNzUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogICAg
IFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwog
ICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGkgPSBtX3N0b3JhZ2VBcmVhTWFwLmJl
Z2luKCk7IGkgIT0gZW5kOyArK2kpCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJl
YU1hcC5zZXQoaS0+a2V5LCBpLT52YWx1ZS0+Y29weSgpKTsKLSAgICByZXR1cm4gbmV3TmFtZXNw
YWNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1QYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJw
T3JpZ2luKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lz
U2h1dGRvd24pOwpAQCAtMTA3LDExICsxMDcsMTEgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHBycE9yaWdpbjsKICAgICBSZWZQ
dHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0g
bV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJl
YS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIAogICAgIHN0b3JhZ2VB
cmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5
bmNNYW5hZ2VyLCBtX3F1b3RhKTsKICAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4ucmVs
ZWFzZSgpLCBzdG9yYWdlQXJlYSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3RvcmFnZUFyZWE7CiB9CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
aW5kZXggNTI1OTk3MWM1ZWM0MDY5N2JhN2NmYjljNGQ5MGE0YzZhYzZhMjJmNy4uNzBjNmI1NzMx
NGU3Y2JhMzllYjE5YTNjNzhhODcxYTdjZDhiYzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFn
ZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdl
QXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLmgKaW5kZXggMWI1OTM1ZGE5YzNmZGEzNzMyMjAxODBmZGYwYzE2NDY0
NjE3ZDI3Ny4uYmQ5NGNlNzVlMTdlZDkwYzEzMTM0ZTM5ZGVlYWZiMzZiZjcyNjczMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLmgKQEAgLTc5LDggKzc5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNlbGVj
dEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNo
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdl
YkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZEVsZW1lbnRDaGFuZ2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bQppbmRleCA0NmY4N2Q4Y2JjMDBmYTExMTZmNDc2NmRkZDljMTQxZTVhNGRhZTZlLi5iOWNmMTM5
Nzg0ZTZmNTIwZTRlY2E4NjlkNGIyYjQ5ZjNmZGMzZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0yNDks
MTIgKzI0OSwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVudElPUzo6c2VsZWN0SXRlbUFsaWdubWVu
dEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNlYXJjaFBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUlPUyhjbGllbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
NWUzYjJkY2JjYWVhOTVjZmVhYWZiOGUzYjZiZmRmYjM5MzU1ZGFiYi4uZDc1NWZjN2MxOTZhY2Q3
OGJjNmNiY2FmNzViMmM2YzY2ZjViNTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE4OSw4ICsxODksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3Bl
bmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCAyMGY2ZDcyODI0NDY4NmZiM2QyNjVmYTdhZDE1NTc3MzcwZTVm
ZGU2Li4xYjljZjljM2E3YTI2MjUyMzBlNDIzM2RjMDc5MzZlMDk5ODAxYWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBA
IC04NDIsNyArODQyLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b3B1cE1lbnVNYWMoY2xpZW50KSk7CkBAIC04NTEsNyArODUxLDcgQEAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWUKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51TWFjKGNsaWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggN2NmMTU4Zjk2YjYzOGI3Mjk0MDI2NDA5ZTE5NzJlMjQ1NjBiYjBkNy4uY2QxZjI0YmE5
YzMzYWEzZGI2MGYwYmExZDM1NjVlYjdhZmY0NTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xOTIs
MTQgKzE5MiwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRT
dGFydGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggNDFkMDE5YzVlYmIwN2JmZmJlNGNkZGY3NjhiODc1NGEzOTI2
MzY3My4uOTBkMzFmNThmMDljOWEwM2E5ZWY3OGRiZjBkZjgzZjQxMGRmOTAzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTEzMjIsMTUgKzEzMjIsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAjZW5kaWYKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdl
YkRvY3VtZW50TG9hZGVyTWFjPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+
IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogCi0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJj
ZSBhbGxvY10gX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6bG9hZGVyLmdldCgpXTsKKyAgICBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlID0gW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhE
b2N1bWVudExvYWRlcjpsb2FkZXIucHRyKCldOwogICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShk
YXRhU291cmNlLCBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpKTsKICAgICBbZGF0YVNvdXJj
ZSByZWxlYXNlXTsKIAotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBs
b2FkZXI7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKQEAgLTE2MDgsNyArMTYw
OCw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTYy
NywxOSArMTYyNywxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgLy8gVGhlIGNy
ZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhh
dCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBpZiAoIXJlc3VsdC0+cGFn
ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgCiAgICAg
Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkubG9hZFVSTEludG9DaGlsZEZyYW1lKHVy
bCwgcmVmZXJyZXIsIHJlc3VsdC5nZXQoKSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQg
aGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgogICAgIGlmICgh
cmVzdWx0LT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiBy
ZXN1bHQ7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQpAQCAtMTkwNyw3
ICsxOTA3LDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBA
IC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUAogCiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRl
ck1hYy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5o
CmluZGV4IGIyY2MzNzU4ZjdiMzA3NmZhZWM1NDgzMzU3YjczOTNhMGVhMWRiMzIuLmU4MDMxNGIy
YTA4OTQ4NGE0YTJlNDllNjA5NzRmZTYwOTdiMWY3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50TG9hZGVyTWFjLmgKQEAgLTM5LDkgKzM5LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJEb2N1bWVudExvYWRlck1hYyA6IHB1YmxpYyBX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBkYXRhKQorICAgIHN0
YXRpYyBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBkYXRh
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJEb2N1bWVudExvYWRlck1h
YyhyZXF1ZXN0LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkRvY3Vt
ZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKICAgICB9CiAKICAgICB2b2lkIHNldERhdGFT
b3VyY2UoV2ViRGF0YVNvdXJjZSAqLCBXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0NmY4ZTVkYzQ3
ZjhlOGQwODFmNDc4NGU5ODQyZDQ5NjkxY2M1Y2U3Li4xODkwNmRmMDQ2OTlhYmI3N2Q0Mjg0YTFm
ODliYzhhOWY3ZDExYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCwxMiArNzgwLDEyIEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1QYXNzUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKTsKIH0K
IAotUGFzc1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFNlYXJj
aFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFy
Y2hQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDI1MWY4NjJmNDNiODBkODJmMjdh
ZDhlODIxMzE5MGJkYTAzNzVmOGYuLmY2M2FjZWZhZDMxYzcwMjY5NzgzYzA1N2Q5NDJiYWYxYmNh
Y2JlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCkBAIC0xNTEsOCArMTUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCk7CiAgICAg
dmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBX
ZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDBjYmQxOTNlOGZkMGZkYWQ2NTc0ZjNkNWY0YjE4MmQxZGExZmJhODkuLjI3MzI1YmE4MTkx
Y2MyMWYyYTM0YmMzYjQ2YWQwOTRhZmE3MzZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk0
OSwxNCArOTQ5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CisgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBX
ZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIAogICAg
IENPTVB0cjxXZWJEYXRhU291cmNlPiBkYXRhU291cmNlKEFkb3B0Q09NLCBXZWJEYXRhU291cmNl
OjpjcmVhdGVJbnN0YW5jZShsb2FkZXIuZ2V0KCkpKTsKIAogICAgIGxvYWRlci0+c2V0RGF0YVNv
dXJjZShkYXRhU291cmNlLmdldCgpKTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGOjptb3ZlKGxvYWRlcik7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwm
IHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg3YjZkNTE2YWMzOWE5YTAyZWFjNWU3YjUxZWE3ODFj
NjY0MzIxOTYuLmMzOGZmMmZiMWEzNDIzYTcxNTQ5Y2Y4M2UxZWJmY2NlNDcwZGViY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpOworICAgIHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTE4MCw5ICsxODAsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKaW5kZXggNGMzMTAzZDVlMjA3Nzc2MWFlN2JjM2RiN2I4ZjE4NjQ0M2Q1
NTVlMy4uNjE2NTNjYWMxNzhkMzRmYWE0NjlmZjEwNmU1MDU0ZjdkNzc5MDNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmUKICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOwogfQogCi1QYXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFz
ZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0
YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBE
YXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVl
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9pZGJEYXRhYmFzZXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgUGFzc1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpn
ZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnMKIAogICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZT4gZGF0YWJhc2UgPSBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlKGlkZW50aWZpZXIp
OwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBkYXRhYmFzZS5nZXQoKTsKLSAgICBy
ZXR1cm4gZGF0YWJhc2UucmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhYmFzZTsKIH0KIAogdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlE
QkRhdGFiYXNlJiBkYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuaAppbmRleCA1OWE2MThiZTQwNTk1YzI4YzIyYmRiMmU5Y2EyMTgx
Nzk2ZDIzYzY5Li40N2M2OTI1ODZjZmY5ZDMwZTljZDcxODYzNDRjYjkzN2YwZmVmNjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KIAotICAgIFBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVl
SURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIHZvaWQgcmVtb3ZlVW5pcXVlSURC
RGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmKTsKIAogICAgIHZvaWQgZW5zdXJlSW5k
ZXhlZERhdGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDRhOWY0NjdlODc4ZGU4MWM2NjFiZGVkMzVkNzYxNjYzMDYxMWM0N2MuLmE1NmQ5MjUw
M2E4ZTkwZTk5OTJjZjc3MGEyNmVjMjIzMmEyNGY3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTk3LDkg
Kzk3LDkgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEluaXRpYWxpemF0aW9uUmVw
bHkoUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2UKICAgICBtX2luaXRpYWxpemF0aW9uUmVw
bHkgPSByZXBseTsKIH0KIAotUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRh
a2VJbml0aWFsaXphdGlvblJlcGx5KCkKK1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5PiBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnRha2VJbml0aWFsaXphdGlvblJlcGx5KCkKIHsKLSAgICByZXR1cm4gbV9pbml0aWFsaXphdGlv
blJlcGx5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbV9pbml0aWFsaXphdGlvblJlcGx5OwogfQog
CiBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDllZWQyZTcx
MThjNzFmODdkMzZlOWZkMmU2ZmIwNDgyOGM3M2E3N2MuLjJlMzMzZjRmYzdhMGRiODkyMzgyOTUz
YjQ4MjAyMjMxZjU4ZTJhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0luaXRpYWxpemluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXppbmc7
IH0KICAgICAKICAgICB2b2lkIHNldEluaXRpYWxpemF0aW9uUmVwbHkoUGFzc1JlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJlcGx5Pik7
Ci0gICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBs
dWdpbjo6RGVsYXllZFJlcGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOworICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6RGVsYXllZFJl
cGx5PiB0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3Rh
cnRQYWludFRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggYzY2ZDI4Yjc1Mzk3NGEwNTc0MGNiNmFmNjhlMmM0ODQ4MWQ5M2MzMi4uNTFkYjA4Y2Uz
NjBiZjhhY2ZiNjBhM2ViYzgwMDhlMGYyYTk0MDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LAogICAgIGl0LT52YWx1ZS5zZXRCYWNrQnVmZmVyKHRpbGVSZWN0LCBzb3VyY2VSZWN0LCBi
YWNrQnVmZmVyLCBvZmZzZXQpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKK1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgewogICAgICAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSA9IHRpbGUudGV4dHVyZSgpOwpAQCAtOTksNyArOTksNyBAQCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29u
c3QKICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlOwogICAgIH0KIAotICAgIHJldHVybiBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CisgICAgcmV0dXJuIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PigpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpzZXRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4
IGQ5MDM0OWQ2M2E1ZjhiNDZmNjY2Y2VjNjIxNDZiNjI1YzA0M2MzYjQuLjVkYWZhMDExMjg3ZTlh
Y2E0Mjc0NDJiM2VkNjdjN2FkOTNjNWRjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVUaWxl
KHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxUaWxlcygpOwogICAgIHZvaWQg
dXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEJhY2tp
bmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZSk7IH0KICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXIqKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRo
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
aW5kZXggNmI4ZDExZGE3MjdlMGFkNTQ1YzllZTNjNWY2Zjc0NGI5ZTA4NGFlYS4uMGRkMzA2NGVl
M2I4OTNmNWI4ZjAyZThmM2QyMDgwMzEwNWNlNmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFuZGxl
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKIHsKICAgICBSZWZQdHI8V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlPiBzdXJmYWNlOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQpAQCAtNzksMTEg
Kzc5LDExIEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzCiAgICAgaWYgKCFzdXJmYWNlKQogICAg
ICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShzaXplLCAoZmxhZ3MgJiBTdXBwb3J0c0FscGhhKSA/IFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncykpOwogCi0gICAgcmV0
dXJuIHN1cmZhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBzdXJmYWNlOwogfQogCiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVk
U3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogewogICAgIEdy
YXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KICAgICAgICAgR3JhcGhpY3NTdXJm
YWNlOjpTdXBwb3J0c1NvZnR3YXJlV3JpdGUKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1
cmZhY2UoY29uc3QKICAgICAvLyBJbiB0aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0
dXJuIG51bGwgYW5kIGFsbG93IGZhbGxpbmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAuCiAgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRl
KHNpemUsIHN1cmZhY2VGbGFncyk7CiAgICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NFUlQoc3VyZmFjZSk7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1
cmZhY2UucmVsZWFzZSgpKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjp+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlKQorUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiB7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQo
KSkgewpAQCAtMTYxLDcgKzE2MSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhCiAKICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSho
YW5kbGUubV9iaXRtYXBIYW5kbGUpOwogICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5t
X3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBiaXRtYXAucmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggN2RjMTZmMmMwNDNiZmI1ZmM0ZDM5MjNlMzMxZWQ1
YWMxZjYzNDNmYS4uOGExOGY2MDc2OTZiZmEwYjcwY2RhMmMwZGI3ODQ3OTZhZTQ4NjZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Us
IGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRt
YXAgYXMgYmFja2luZy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBo
YW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVh
dGUoY29uc3QgSGFuZGxlJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKIAogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAg
ICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZT4pOwogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEg
Z3JhcGhpY3Mgc3VyZmFjZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7
CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJm
YWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAgICAgLy8gQ3JlYXRlIGEgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFj
ZS4KICAgICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50
LmgKaW5kZXggZTQ1ODg2YTVkYmJiMGY1MTI3ZDUzMjBmYTkzYWM3MzgxNzZmMzdmNi4uNmU5NWIw
ZmVhNmVkNDYwYWQ2YzNkMDYzMjVjODFmZjI1OTgxOTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVt
SW5MaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qLCBBUEk6Ok9iamVjdCopIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERh
dGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCBkMDM4YmYxZjEwNTFmOWY5NGE3
ZTY3Mzk3MWViNjUwYmY2OGVkZTg4Li40MTI1M2M2ZDE3N2E1ZmFjMTRiZmEwNWQ0MzQ0YjEyYjYz
NWU2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMgY2xpZW50LgogICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNGEzZTNhOTQ3ZmFkYmFkOWQ0YmI2MGM2NjEzZDVjNzkw
MDZmYzYxZS4uOGI2Yjg5M2ZhMTkyNDEwYjM4YTM5YTIxMDA0Zjg5ZTRlMzg3MDNmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTExNTAsNyArMTE1MCw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgICAgICBtX2NsaWVudC53aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odG9BUEkoJnBhZ2UpLCB0b0FQSShpdGVtKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8QVBJOjpEYXRh
PiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jbGll
bnQoKS5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KCZwYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
KTsKICAgICAgICAgfQpAQCAtMTkzMSw3ICsxOTMxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNs
aWUKICAgICAgICAgICAgIG1fY2xpZW50LndlYlByb2Nlc3NEaWRDcmFzaCh0b0FQSSgmcGFnZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBw
YWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0
b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuY29weVdlYkNyeXB0b01hc3RlcktleSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA2MGQ4YTBmNTZmOTgwMGY3NTM1MDI1ODky
MzBkZTM3MGNkOWMyYWVjLi41YzE2YmY4MmQ1YWQwNmE0ZmJhMmM3MTA5ZWUzMzM5YTc1MGQ1Y2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCkBAIC0yMDYsMTcgKzIwNiwxNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBib29sCiAg
ICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAg
cmV0dXJuIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpjcmVh
dGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQor
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKFdFQktJVF9JU19XRUJfVklFVyhtX3Zp
ZXdXaWRnZXQpKQogICAgICAgICByZXR1cm4gV2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUoKnBh
Z2UsIGNvbG9yLCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGJjNWI2MzVjMWM5YjRhOWEwNTFlNTUwMWNkMGEzMTRm
MzY4MjQwMGYuLjFjYmYzNDg1ZWUxM2ZkMWMzMGY3OGY0NDQ2NzlkOWRjZWM2ZTZhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApA
QCAtODIsMTAgKzgyLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQ
b3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2Vy
PiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYg
aW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGlj
YXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiA9
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJDcmVkZW50aWFsLmgKaW5kZXggNDljZTEzZDU3NjlhYjM0NDRmMjMzY2M4NmRhN2E2ODEz
ZDRkYjUzNi4uZWFhYTFmNzBjNmQ4NWQ1NDY5NzRiN2I5MDZhNDA2YTY0ZDhmZTA1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3Jl
ZGVudGlhbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9u
U3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90
ZWN0aW9uU3BhY2UuaAppbmRleCAyMDU2NGY3NTY3YzkxMTZhZDYwYTBjYzg5NDc5NjgxNGM5NjQ2
MGMzLi4yOGJlYmE2ZThjMGM4NjcxZjY5OTFiMWU3YTMyODRkZWJhM2MxN2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNw
YWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlBy
b3RlY3Rpb25TcGFjZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAppbmRleCA4Nzg2MGJkMGM3MDFl
NTdkYzQyYzg1YWJjODk4N2EyMjljN2I5ZjQzLi43NTJlNGNjNTgxMDkzMmU2MDBjMWFlMzBlNGFi
MjAxNGM0ZmFmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0Nv
cnJlY3Rpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29y
cmVjdGlvbkNhbGxiYWNrLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJHZW5lcmljQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggZDU1MjZhMTU2NGVkODRmZjkyODI1YjM4ZDU0
MzBmMTc2N2UxYjUyYS4uZGJkODk0MzkyNTI0YjM4ODZkNTk1MjNhOGRiNTMwYjc3NDdkNzMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJQYWdlUHJveHkmLCBXZWJQcm90ZWN0
aW9uU3BhY2UqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6
OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVBy
b3h5Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RG
OjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmlu
ZGV4IDYwYWRiZDRiM2NjNzcyNjRkZWZmZTVlN2FlM2UzMjNiMjM5NTFmNTYuLjY0ZDA3MzUzMDcz
MmZkNDdjYTg1ZjhhMjc1MDU1M2JiMzI4NWYwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjcwLDcgKzY3MCw3IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpXZWJQYWdlUHJveHkmIHBhCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3V2ViUHJv
Y2Vzc0RpZENyYXNoOm1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CiB9CiAKLVBhc3NSZWZQ
dHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0
b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpCitSZWZQdHI8QVBJOjpEYXRhPiBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCmluZGV4IDU5OWI2MzM4MDI5NWFjOTIzZDIx
MWU3YmNjYjliM2IzOTRlMmRjYWIuLmI2ZWY2Mzk2NTRmNzc3MzBiZDExMmM1NjE1MTZhMTdmZTgx
M2UwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC00MzAsMjMgKzQzMCwyMyBAQCB2b2lkIFdlYlZp
ZXc6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwg
Ym9vbCB3YXNFdmVudAogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3Ojpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29s
b3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitSZWZQdHI8V2ViQ29s
b3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmgKaW5kZXggMmZjZDY0MGFlOTg4ZWM0NzYzNzAwYTg3ZGFiNGNjMDAzOTQ3
OWJlOS4uZDQ1MzcyNDdhYjkzN2QxYjVmNWY4YzJkZjhkNjcwZGE1YzBjOWQxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuaApAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZl
bnRIYW5kbGVkKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+
IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBp
bml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGlj
YXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JM
aWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDBmOGQyNDA0N2U2
ZDUxOGVmOTkwMjQ2YWY4ZjkzNmNmNDE1OWFjMzguLjVkYzNlNTBmMWI0YTU2NDFlYTYzNjFmN2E5
ODVkMjE1ZjkzMzk2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjEwLDExICsyMTAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNo
RXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSA9
IDA7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
KikgPSAwOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVy
bWFuZW50KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
OWI2MDlkMGM1MjQ2Y2RhNDEzNWQzZjY0MTRiZWZjMWU1NWIzOGYxOC4uYmRjZTdjZDhlMjM4NjM2
ZDUzOGVlODFjZGQwYjcyZWI0NWJhOTBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNzMwLDcgKzczMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVs
ZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBi
b29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogCiAgICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlld0VmbC5jcHAKaW5kZXggM2RjZmRkYzA3ODg1ZmYyNDExYWM4MjkyMmVmYjgxMmY2NzcwZDMy
MC4uYjU1NzA3OGI2NmE4OGI2ODQzYjA3ZTgyZTRjMTU3OTJiZDBiOGNkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC04OCwxMyArODgsMTMgQEAg
dm9pZCBXZWJWaWV3RWZsOjpwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSkKICAgICBzY2VuZS0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dCgmY29udGV4dCwgbV9wYWdl
LT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSwgbV9wYWdlLT5kcmF3c0JhY2tncm91bmQo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdl
KQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbDo6Y3JlYXRlKHBhZ2UpOwog
fQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJDb250ZXh0
TWVudVByb3h5RWZsOjpjcmVhdGUobV9ld2tWaWV3LCBwYWdlKTsKIH0KQEAgLTIxMiw3ICsyMTIs
NyBAQCB2b2lkIFdlYlZpZXdFZmw6OmluaXRpYWxpemVDb2xvclBpY2tlckNsaWVudChjb25zdCBX
S0NvbG9yUGlja2VyQ2xpZW50QmFzZSogY2xpZQogICAgIG1fY29sb3JQaWNrZXJDbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3
RWZsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsK
ICAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJFZmw6OmNyZWF0ZSh0aGlzLCBwYWdlLCBjb2xvcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCmluZGV4IGVmOTkx
MTg0NmEwZDkxNmFhYzRhYTcxOTM3YmYwOTg4MTZmOTdjY2MuLmEwY2FmMTAzYzVmYmIzMmU1YmRm
MWZjYjM2MDQ1MDJhMWFhMGUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlld0VmbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVD
b2xvclBpY2tlckNsaWVudChjb25zdCBXS0NvbG9yUGlja2VyQ2xpZW50QmFzZSopOwogCiAgICAg
V2ViQ29sb3JQaWNrZXJDbGllbnQmIGNvbG9yUGlja2VyQ2xpZW50KCkgeyByZXR1cm4gbV9jb2xv
clBpY2tlckNsaWVudDsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
QEAgLTY2LDEyICs2NiwxMiBAQCBwcml2YXRlOgogICAgIFdlYlZpZXdFZmwoV2ViUHJvY2Vzc1Bv
b2wqLCBXZWJQYWdlR3JvdXAqKTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYpIG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSBvdmVycmlkZTsKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDQ4NDIxMjcwOGQzMDdiYTE3NDMyNjE3M2U1NWEzYzBkNzZkNGUwZGYuLmNjNDBiNTZmNzk3
NmM4Nzc4YmUwMjg2Mzk1Yjg5NjJlMWUyMWRkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTk3LDggKzk3LDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVk
KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQ
cm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRl
eHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVu
dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dEluZGljYXRv
ckRpc21pc3NhbEFuaW1hdGlvbjo6RmFkZU91dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCAwMzM3ZjNmNzlkNWQ4OWY1YzRlMjJiMjc5YmZjZDdlZDM2YjRmMTIzLi5hMDgxNmM0NWNhMTZm
ODAwMTIzNmQ0ZjFmMGYzMTcxMmRjODZhMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTQ0MSwxNiArNDQxLDE2IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiBuYXRpdmVXZWJ0b3VjCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94
eSopCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5KikKK1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUmVmPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0
b3IsIFRleHRJbmRpY2F0b3JMaWZldGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZmQyMjkxYTU1NjE1ZTJlMDZjM2VjMmU5ZDIx
OTY5NGJmNWU0OGRlMi4uN2M1MjJjNjFmYzNjM2FkODNlYmI0ODUzMmYyMzMxOThhNjYxZjQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwNywxMCArMTA3LDEwIEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggYzFmNmZjMThlMzU0MGE5MzYzYmZhZjYzOGQzZDFlODk0ZjI0YWEzNy4uYWJlMzk0
Yjc2ZjRiZGI4N2Q4NTU2ODU2OTkzNDMyZWNjNTExYmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTIwLDExICsxMjAsMTEgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmly
dHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlm
ZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBmMWY0MjQ3Y2RlMGFmY2UzODMyMjgwYjViY2Rj
MzMwMDJmYWUxODc2Li44MWQwYjFiMDA0NmM0NWZhZGQzOTE3NWEwZGNjNzhlMGIwNGFmMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAg
LTQ4NywxOCArNDg3LDE4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wKICAgICBbbV93a1ZpZXcg
X2RvbmVXaXRoS2V5RXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKSBldmVudFdhc0hhbmRsZWQ6ZXZl
bnRXYXNIYW5kbGVkXTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlNYWM6
OmNyZWF0ZShtX3drVmlldywgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
CitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tl
cihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Is
ICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBXZWJDb2xvclBp
Y2tlck1hYzo6Y3JlYXRlKHBhZ2UsIGluaXRpYWxDb2xvciwgcmVjdCwgd2tWaWV3KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCA0YzIyMzFiNjllNTVjNGI0OThmMDhjNGEyZmM5NWViNzBkZDU5NmEyLi5iMjkyOGNmMThjZjhj
YmI1YTM3MmZlOGM2OGQ2N2Y5NWVlZGFlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzY4LDE3ICszNjgsMTcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAg
IGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUg
PSAwOwogICAgIGNvbnN0IGF1dG8gbWVzc2FnZVRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6c2Vjb25k
cygyMCk7CiAgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIG1fcGFnZUlELCBt
ZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMWVkNzhkMzQ1ZDRl
NzQyZDc5ODYwMjVhNmY0MzY3YWYzOGJmZGU0Yy4uYWEyMzI0Y2UxYmEwNzhkYWEwMzAyYWY0MTAx
NWNhNGY5YzlhODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTY3LDIwICs2
NywyMCBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFt
ZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKGZyYW1lLCByZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikK
ICAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZyYW1lLT5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Ci0gICAg
cmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAotUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gbG9hZGVyID0g
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0
KTsKICAgICBpZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCAw
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURl
ZmF1bHQpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBsb2FkZXI7
CiB9CiAKIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1heGltdW1CdWZmZXJpbmdU
aW1lKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRl
eCAyZTgxNzk3YjVjOTQ4ZTk5NzMxM2E2NmVjYmFjMzg2YjU5ZTZmYjk1Li43NjRlMWFhOGU2NDE0
YTMxZmExNjYyZDE2NjYwYjYxNjcwMTZiZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
ICAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29sKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGQzZGMyNDdlNDhjZDYxODdkNjkyZTZlNDFjNDJl
NmFhN2E5MmNlYWYuLjM5ZTliM2Q0OWVmNmJkMWIzNGYwODEzMTA0MGNiNDQ5NWUwOWVjZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTEyLDEwICsxMTIsMTAgQEAgTmV0c2NhcGVQ
bHVnaW46On5OZXRzY2FwZVBsdWdpbigpCiAgICAgbV9wbHVnaW5Nb2R1bGUtPmRlY3JlbWVudExv
YWRDb3VudCgpOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUChOUFAgbnBwKQorUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdp
bjo6ZnJvbU5QUChOUFAgbnBwKQogewogICAgIGlmICghbnBwKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmV0c2Nh
cGVQbHVnaW4qPihucHAtPm5kYXRhKTsKIH0KQEAgLTcwOSwxMCArNzA5LDEwIEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsKIH0K
IAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgp
CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogewog
ICAgIGlmICghc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSB8fCBtX3BsdWdpblNpemUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NF
UlQobV9pc1N0YXJ0ZWQpOwogCkBAIC03MjgsNyArNzI4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAKICAgICBwbGF0Zm9ybVBhaW50
KGNvbnRleHQuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7
CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFwOwogfQog
CiBib29sIE5ldHNjYXBlUGx1Z2luOjppc1RyYW5zcGFyZW50KCkKQEAgLTEwNjQsOSArMTA2NCw5
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBO
ZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBOZXRzY2FwZVBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEludFBvaW50IE5ldHNj
YXBlUGx1Z2luOjpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnRJblBsdWdp
bkNvb3JkaW5hdGVzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCA4YjMyODNjOTc5
M2VhNGYwNGIwMjMxZjk1NzcwZDBiODZmZmUzNWYzLi5kODhiNmZkN2ZkZDViZjlkNWM1Zjk4NDll
MjZjMjg3YTcyMGY4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NS
ZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+KTsKICAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdp
bigpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQ
KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9tTlBQKE5QUCk7CiAKICAg
ICAvLyBJbi1wcm9jZXNzIE5ldHNjYXBlUGx1Z2lucyBkb24ndCBzdXBwb3J0IGFzeW5jaHJvbm91
cyBpbml0aWFsaXphdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5
SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTg4LDcg
KzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFy
YW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJy
aWRlOwogI2VuZGlmCkBAIC0yNjQsNyArMjY0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb252ZXJ0
ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJsZSkuCiAgICAg
Ym9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludElu
Um9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApp
bmRleCA1ZDY1YTY2NmVhOTE0NDY0NTJlMzFiNmFjMTRkODM5MjgzMGFjMjE4Li4zMGM3OTBmMTM0
YTY3OWFiYmI4ZDcwYjM0ZWJmODhjOTk0YmFkNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSBv
dmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nu
YXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0
Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQmVpbmdBc3lu
Y2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCA5ODQ3MDE4ZjNjNjY1NzY0NjUxYTQ5ZWY4OGFlOTQzYjA4OGRmMzhhLi45MzI0
OTQ4MjUyYjcwYzg2YTUxMzhjMmQ5M2MwNTU3ZWEwZTkwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTE1Miw3ICsx
MTUyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENB
TGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICBzY3JvbGxiYXItPnBhaW50KCZn
cmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwogfQogCi1QYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCitSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKIHsKICAgICBpZiAoc2l6ZSgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTY5LDcgKzExNjksNyBAQCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAKICAgICBbbV9wZGZM
YXllckNvbnRyb2xsZXIgc25hcHNob3RJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJpdG1hcDsK
IH0KIAogUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXllcigpCkBAIC0xNjM1LDEy
ICsxNjM1LDEyIEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50
KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRm
RGF0YSA9IGxpdmVEYXRhKCk7CiAKICAgICBpZiAoIXBkZkRhdGEpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6Ondy
YXBOU0RhdGEocGRmRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggYTE0ZTk4YWEyOWFkMmFlYzliNjk2MDNlMWMxYzkwNjgyMjJkN2ExMy4u
NjJhYjg0N2M2YmVjNDk0YTliYjQzZDIyOWM5MWY3ZDk5ZDM1NjkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0byBkcmF3IGl0c2VsZiBpbnRvIGEgYml0bWFwLCBh
bmQgcmV0dXJuIHRoYXQuCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFw
c2hvdCgpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIElmIGEgcGx1Zy1pbiBp
cyB1c2luZyB0aGUgQ29yZSBBbmltYXRpb24gZHJhd2luZyBtb2RlbCwgdGhpcyByZXR1cm5zIGl0
cyBwbHVnLWluIGxheWVyLgpAQCAtMjgzLDcgKzI4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCmluZGV4IDFlYzE2YmUxNzFhNTVkYmVhMzI0MzRkMGIwZTQ4ZDcyMzdmNjEz
NWYuLjEzY2E1NDMyNThmNzY1Mjc4NjFiMGRhMzM0MzllZDZlZmVhMGVkMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjM4
LDE2ICsyMzgsMTYgQEAgYm9vbCBQbHVnaW5Qcm94eTo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBj
b25zdAogICAgIHJldHVybiBpc1N1cHBvcnRlZDsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQ
bHVnaW5Qcm94eTo6c25hcHNob3QoKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHNu
YXBzaG90U3RvcmVIYW5kbGU7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBzaG90KCksIE1lc3NhZ2Vz
OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlNuYXBzaG90OjpSZXBseShzbmFwc2hvdFN0b3JlSGFu
ZGxlKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIAogICAgIGlmIChzbmFwc2hvdFN0b3JlSGFuZGxl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJldHVybiBzbmFwc2hvdEJ1
ZmZlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCiBib29sIFBs
dWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKQEAgLTcxNiw5ICs3MTYsOSBAQCBJbnRQb2ludCBQ
bHVnaW5Qcm94eTo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogICAgIHJldHVybiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGx1Z2luUHJveHk6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGx1
Z2luUHJveHk6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDg5MDQxYzA0OThj
NjNlNmY4ODI5YzU1NWI0OTIzNGYwZWMwNmI1ZmIuLmUyZjk4YWQ3ZWNjY2VjZTI5ZDQ4ODA5Nzky
YTA4MzEwOGE3YWI3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3Qo
KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTEzOSw3ICsxMzksNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCmluZGV4IGFhOGY0MzE2OWM4NWY1NzQ1NzNlYTdiNGJlNjI1ODMzMTc4ODc1M2YuLjM1Nzc4
ZjgyMTVhOTZhMDU0ZWU3ZDdkZTg4N2MxNGZiZDdjZGZhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95
U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVhTWFw
cy5yZW1vdmUoJm1hcC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdl
QXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhTWFwPiBtYXA7CiAKQEAgLTg2LDcg
Kzg2LDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0
b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkKICAgICByZXR1cm4gU3RvcmFnZUFyZWFJ
bXBsOjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCitSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFn
ZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CmluZGV4IDZjNTE2NzRjNzFhMjAwY2NlNDc4ZjdiYzA5NDJkZjdlOTM4YmQxOWEuLjM3ODE3MTcz
ZTI0ODViODY2YThhZjMyOTM3NTUxYzc3ZDI2ZDgzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01
NCw4ICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAgIGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFn
ZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXgg
ZmQwYTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NS4uNDUyMDYyMDAzZmRhZjZk
ODYyMTg4MDIyYTc1ZmYxZGRiZTgxODBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwCkBAIC0xODUsMTIgKzE4NSwxMiBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3Rh
dGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQog
ICAgIH0KIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25zdCBQ
YWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK1JlZjxIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25z
dCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3Rv
cnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUudXJs
U3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOwotICAgIGFwcGx5RnJhbWVTdGF0ZSgqaGlzdG9yeUl0
ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0
b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLnVy
bFN0cmluZywgcGFnZVN0YXRlLnRpdGxlKTsKKyAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0
ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7CiAKLSAgICByZXR1cm4gaGlzdG9yeUl0ZW0u
cmVsZWFzZSgpOworICAgIHJldHVybiBoaXN0b3J5SXRlbTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCmluZGV4IGU0MTU0MTVlMTRl
NmYzNGQyZjBlYmI1MWNlNjY4YjM0NDA4M2QwNTguLmJlZTlkMjI4Y2E3MzlhNWE4ZjY2NTBjYWZj
ZjdiZWYwZGJjZDRkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFBhZ2VTdGF0ZTsKIAogUGFn
ZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJik7Ci1QYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYp
OworUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0
ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDE1NTBhMzNlYTQ0ZGNlYjhlNmE5NzFiMTg2OTExYTBiZTYxNTY3NzcuLjkzOWRjY2NjYWE0
YmY5MThlNzk2ZjZjNTU1YTRiYjMwZDk4ZDQ0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTgzNCwxMiArODM0LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1
cCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlBv
cHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUobV9wYWdlLCBj
bGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUo
bV9wYWdlLCBjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZTIwODFiOTc3NGMx
YjQ3MjliNDEyZDNkMmQ1Y2Y1MDQyNzRkZDA5Ny4uMTY1M2RmYzEwMDZmZTRlOTgzMjg2NjIwOWFj
MDAyYjhjODdkZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDMsOCArMjAzLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZv
bGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGlj
c0xheWVyRmFjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hS
b290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYmU2ZTli
MGVhZDg5OTIzYWI3OGRiMzA4YTJiNDhhYzY2OTcxNDhmNy4uNTQwZGRlOTU2Zjk4ZDgwOWQ0ZjE2
OGIyYzM5NDdmYWZmNzQ5YjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK1JlZjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIHJldHVy
biBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZURvY3VtZW50TG9hZGVyKCptX2ZyYW1lLT5jb3JlRnJh
bWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKERvY3VtZW50TG9hZGVyICpkb2MKICAgICBtX2ZyYW1lLT5jb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoZG9jdW1lbnRMb2FkZXIsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
UGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LAorUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9s
bGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtMTM4NCwyNSArMTM4NCwy
NSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgRnJhbWUqIGNvcmVTdWJmcmFtZSA9
IHN1YmZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVTdWJmcmFtZSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGhlIGNyZWF0aW9u
IG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1v
dmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KICAgICBpZiAoIWNvcmVTdWJmcmFtZS0+cGFn
ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFVSTEludG9DaGlsZEZyYW1lKHVybCwg
cmVmZXJyZXIsIGNvcmVTdWJmcmFtZSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFu
ZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgogICAgIGlmICghc3Vi
ZnJhbWUtPmNvcmVGcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgQVNTRVJUKHN1YmZyYW1lLT5jb3JlRnJhbWUoKSA9PSBjb3JlU3ViZnJhbWUp
OwogICAgIGlmICghY29yZVN1YmZyYW1lLT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjb3JlU3ViZnJhbWU7
CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KQorUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxv
YWRNYW51YWxseSkKIHsKICAgICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFyYW1WYWx1
ZXMuc2l6ZSgpKTsKICAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKQEAgLTE0MjEsMTIgKzE0
MjEsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW4KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNy
ZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJz
Lm1pbWVUeXBlKTsKICAgICBpZiAoIXBsdWdpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5F
bGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHBsdWdpbkVsZW1lbnQpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzY2IxNWU5
NDk0ODE2ZjUxOGZlNjY1MDcwYjMyNGI2ZmU1NDg3N2M1Li41OTBmOTcxMDNmNTlmMDY4ZGNkMjli
MzI3NDk5MDU4OGU2OWY1ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
NjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKQEAgLTE4NSwxMCArMTg1LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2Fk
TWFudWFsbHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJD
b3JlOjpXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJyaWRlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDEyMDI3
MTkxODcyOTkxZjlmMjBjNDgwZGVjZTZlZWQyN2JhNWRjMzEuLjNkM2JkMDdjMTQ0OGYzYjUxNTY1
YTNlNjdiOWU0N2M1ZGE4NDMyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0MSwxNCArMjQxLDE0IEBAIHByaXZhdGU6CiAKIERFRklO
RV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNv
dW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUGFzc1JlZlB0cjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVh
dGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgUmVmUHRy
PFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZihuZXcgV2ViUGFnZShwYWdlSUQsIHBhcmFtZXRlcnMp
KTsKKyAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQs
IHBhcmFtZXRlcnMpKTsKIAogICAgIGlmIChwYWdlLT5wYWdlR3JvdXAoKS0+aXNWaXNpYmxlVG9J
bmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxl
KCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRp
ZENyZWF0ZVBhZ2UocGFnZS5nZXQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7CiAKLSAgICByZXR1
cm4gcGFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShwYWdlKTsKIH0KIAogV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00OTA4LDE2ICs0OTA4LDE2IEBAIHZvaWQgV2ViUGFnZTo6
c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJh
clN0eWxlKQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJQ
YWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVm
PERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
IHN1YnN0aXR1dGVEYXRhKQogewotICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1l
bnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVE
YXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9j
dW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKICAgICBpZiAo
bV9wZW5kaW5nTmF2aWdhdGlvbklEICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwog
ICAgICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSAwOwogICAgIH0KIAotICAgIHJldHVybiBk
b2N1bWVudExvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShkb2N1bWVudExv
YWRlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyLCBGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjN2E0MDA0ODcxMGQ4OWIx
ZGQ1ODYwMDgwNGY1Yjg2YmE5MWE0M2E0Li4wNWVlZDhiN2MzY2M0MjE5YzA0NTg3MTRhNmJiOTky
MzdmODQyMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCiBjbGFzcyBXZWJQ
YWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFn
ZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHN0YXRp
YyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVp
bml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC04
NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBtX3Njcm9s
bGJhck92ZXJsYXlTdHlsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdU
Rjo6T3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlICov
PiBzY3JvbGxiYXJTdHlsZSk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAg
UmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3Jl
OjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihX
ZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKICAgICB2b2lkIGdldEJ5dGVj
b2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTExMjEsNyArMTEyMSw3IEBAIHBy
aXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0
aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7Ci0gICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gbG9va3VwVGV4dEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBs
b29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipv
cHRpb25zKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZvaWQg
aW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRD
b21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDhmOTg2NmQ2M2ZmZWNiMGU4Mjk5NmQ4NzcxM2FlNjQ0MzY3
OThiYzEuLmE0MGM4MmQ5NjU5MDYxYTE2ZWRlMGIxM2NiMjQ1ZmViMDVhZTRkNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChp
bW1lZGlhdGVBY3Rpb25SZXN1bHQsIGltbWVkaWF0ZUFjdGlvbkhpdFRlc3RQcmV2ZW50c0RlZmF1
bHQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxvY2F0aW9u
SW5WaWV3Q29vcmRpbmF0ZXMsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCitSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9pbnQgbG9jYXRp
b25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBNYWlu
RnJhbWUmIG1haW5GcmFtZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICghbWFp
bkZyYW1lLnZpZXcoKSB8fCAhbWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257029</attachid>
            <date>2015-07-18 06:06:50 -0700</date>
            <delta_ts>2015-07-18 15:33:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146995-20150718220537.patch</filename>
            <type>text/plain</type>
            <size>119020</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwNmVmZjZmMTQwOWY2
YTVhOGU4MWJiM2Q4ZDhjMzViNzY2ODE1Ni4uYWM2OWM3MTM3ZDc5MDMxNWU1ZjExNTFhMjY0ODhl
Y2JjODkwYWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gcmVtb3ZlIFBhc3NSZWZQdHIsIHRoaXMgcGF0Y2ggcmVkdWNlcyB1
c2Ugb2YgUGFzc1JlZlB0ciBpbiBXZWJLaXQyLgorICAgICAgICBCZWNhdXNlIHNvbWUgdXNlcyBk
ZXBlbmQgb24gV2ViQ29yZSwgV2ViQ29yZSwgV0sxIHBvcnRzIGFyZSBtb2RpZmllZCBhcyB3ZWxs
LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGU6OnRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMTUtMDctMTcgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY5MTA1KTogRG8g
bm90IGFzc2lnbiBhIHJlbmRlcmVyIHRvIG11bHRpcGxlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBhNDhlNTE0OGYzNTg1ZTkyNWU1MjMwYTI0MGIwMTk4ZDUzOWRlOTY2
Li42Y2I2OTEyYWJmYTczMWM0MTUxNGMyNmJhYzJhMWQ4YTAxOTNjNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIg
LSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBy
ZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGlu
IFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBX
ZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwogMjAxNS0wNy0xNyAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRnVydGhlciB0aWdodGVuIHRoZSBzYW5k
Ym94IGFyb3VuZCBwYWdlcyBmZXRjaGVkIHdpdGggQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNo
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlMzRhYmJjNmE5Y2I1ZDExNTcxNGE5NTQwMWI3MmM2
YzVlMDc4NzAuLjFlM2ZmZWUwYTdhODU3NzcxNjIyM2NlZWMwNmE1ODc0NDJiMTQ1N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0xOCAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFBhc3NSZWZQdHIgaW4g
V2ViS2l0MiAtIDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBhdGNoIHJlZHVjZXMgdXNlIG9mIFBhc3NS
ZWZQdHIgaW4gV2ViS2l0Mi4KKyAgICAgICAgQmVjYXVzZSBzb21lIHVzZXMgZGVwZW5kIG9uIFdl
YkNvcmUsIFdlYkNvcmUsIFdLMSBwb3J0cyBhcmUgbW9kaWZpZWQgYXMgd2VsbC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxNS0wNy0xNiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBHcm9zcyB3b3Jr
YXJvdW5kIHRvIGZpeCBidWlsZCBhZnRlciByMTg2ODU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMwMjU4Njcz
ODRkNDY2Y2Q1M2IwNzNhNGZmNWMzNDlmOTQ1MzU4NDAuLjIxYTY3ODk0MWM4NzI5ZTc0YTM4NDI0
YWMwMDFmZjcyNDQ2NTk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTUtMDct
MTggIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
ZHVjZSBQYXNzUmVmUHRyIGluIFdlYktpdDIgLSAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29t
ZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnRha2VJbml0aWFsaXphdGlvblJl
cGx5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1
cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b0NvcnJl
Y3Rpb25DYWxsYmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0
b01hc3RlcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3RWZsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmll
d0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
clBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxl
U3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6ZnJvbU5QUCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpz
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmxpdmVS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9va3VwVGV4dEF0TG9jYXRpb24pOgorCiAyMDE1LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGdXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRi
b3ggYXJvdW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2ht
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDk1NWE5Y2Y5ZGRj
NmQ1MmE1MTU4ZDM0YWZlZGM5YTlhMGU1YjYxOGIuLmVhOTI1NWM4MjBmMjNkNGE5NGNkNWRjYzJh
YjBlZmM5NmMxNTYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7
Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pIG92ZXJyaWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBF
bXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+
IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZSB7IHJldHVy
biBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAgICAgdmlydHVhbCBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCiAgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBvdmVycmlkZQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8RW1wdHlQb3B1cE1lbnU+IG1fcG9wdXA7CiB9OwogCi1QYXNzUmVmUHRyPFBvcHVw
TWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RW1wdHlQb3B1cE1lbnUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0
eUNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0CitSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbXB0eVNlYXJjaFBvcHVwTWVudSgpKTsKIH0KQEAgLTE4MywxOSArMTgzLDE5IEBA
IHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lCiB7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICByZXR1cm4gRG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwg
aW50KQorUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmLCBib29sLCBpbnQsIGludCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCkKK1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDUzODEyMDM4YmY2ZGU1ZDBhODI3MDE1N2Nj
ZjE3ZGI2ZTdjMTMxNDkuLjhjNTdkNmU0ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTExOCw4ICsxMTgsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1
cmFsKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51
PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAKQEAgLTM0Myw3
ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPERvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAKQEAgLTM3MCw4ICszNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMDAzZDJlMTA1ZjU0OTZiYjFiYjUzMjQ1OWJhZDllOWQzZTY1ZmNjNi4uMmRhZjQw
NDVkNTdhZDBiNzQ3MzcyZjUyMDkxYjBhODAwMGRhNmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxv
YWRlcigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0
IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1l
bnQuCi0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRM
b2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkp
KSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVy
KG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAg
ICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiAKQEAgLTEzMjUsMTYgKzEzMjUsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQogICAgIGlmICghcmVxdWVz
dC5oYXNTdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICByZXF1ZXN0LnNldFN1YnN0aXR1dGVEYXRh
KGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNy
ZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vi
c3RpdHV0ZURhdGEoKSk7Ci0gICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9O
ZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LnN1YnN0
aXR1dGVEYXRhKCkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3
RG9jdW1lbnRMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKSk7CiAKLSAgICBsb2FkKGxvYWRlci5nZXQoKSk7CisgICAgbG9hZChsb2FkZXIucHRyKCkp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24s
IExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgYWN0aW9uLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0
ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobG9hZGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKIAogICAgIGlmIChsb2NrSGlzdG9yeSA9PSBMb2NrSGlzdG9y
eTo6WWVzICYmIG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUdsb2JhbEhp
c3RvcnlFbnRyeSgpID8gbV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygp
IDogbV9kb2N1bWVudExvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpA
QCAtMTM0Myw3ICsxMzQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAgICBpZiAobV9k
b2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGxvYWRlci5nZXQoKSwgdHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCB0eXBl
LCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXIqIG5ld0RvY3VtZW50TG9hZGVyKQpAQCAtMTU1
NCwxNCArMTU1NCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNv
ZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgIC8vIFdlIHNob3VsZCBhc2sgdGhlIHVz
ZXIgZm9yIGNvbmZpcm1hdGlvbiBpbiB0aGlzIGNhc2UuCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBtX2RvY3Vt
ZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7Cisg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExv
YWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkp
OworICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2Fk
ZXIobG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSk7CiAKLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0
KCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSk7CiAKICAgICBs
b2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogCi0gICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
bG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5k
VG9FbmRSZWxvYWQpCkBAIC0xNTgyLDggKzE1ODIsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCBs
b2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNvbWUgbV9kb2N1bWVudExvYWRlciBl
dmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMgdG8gYmUgdGhlICJwb2xpY3kiIGRv
Y3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNpb25hbCIgZG9jdW1lbnQgbG9hZGVy
LgotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9j
dW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChp
bml0aWFsUmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoKmxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAgIFJlZjxEb2N1bWVudExv
YWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVl
c3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwor
ICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIo
bG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QgPSBsb2FkZXItPnJl
cXVlc3QoKTsKIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
KGJvb2wgZW5kVG9FbmRSZWxvYWQpCiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
bV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKICAgICAKLSAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRU
eXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihs
b2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9y
aWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclBy
b3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzEzYTE5NjFmNDJjYjg3ZDgw
YzA1ZmYzMWJlNGNiYjU0ZmU0YTU2Mi4uYzlkZmYyMmI5N2Y0ZmJjM2ZhMDY0YTk1M2ViMDU3ZWMw
YTgzOWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTI1MCw3ICsyNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZjxEb2N1
bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSA9
IDA7CiAKQEAgLTI3MSw4ICsyNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFs
IFJlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAppbmRleCA5MDcxMzEwYmUwNjA1YjE4MTlkMmY2M2NiODY0NTg3Mjg2OTQ3NzY2
Li4xYWUzZmJjYTEzY2RhZDhhMGM1OGIzMmIyZTNlYzIyZTA2NWJhYmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6flJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJl
c291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQpAQCAtMTI2LDEyICsx
MjYsMTIgQEAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmEKICAgICBpZiAoIWxvYWRlciB8fCBsb2Fk
ZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0K
IAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCitSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxv
YWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwg
cmVxdWVzdCk7CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBsb2FkZXIg
PSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVl
c3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCkp
OwogICAgIHJldHVybiBsb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKaW5kZXggOWZiOWZiNGE3NTA1OTJkM2MyOThjZWFkODY0MzdlMGMyMjRj
ODU0My4uYjA1ZGEwNDQ5YWJmNzEzMTU4M2FlMjAxYWUwNDNhOGI4ZWVkODYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNTEsOCArNTEs
OCBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxl
cigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291
cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFt
TG9hZChGcmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbW92ZShS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291
cmNlTG9hZGVyKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDgwODMxNjcwNzUy
ODRjYTQ0NGNlNTQzMTUyOWVhMDM2NzcyNGVhZC4uMDNmMDU4ODUzZGZjYzViYjE3Y2Y5NTJkOGZm
MjU0MTFkZWExMTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFN1YnJlc291cmNlTG9hZGVyOjp+U3VicmVzb3VyY2VM
b2FkZXIoKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJl
c291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHN1YmxvYWRlcihhZG9w
dFJlZihuZXcgU3VicmVzb3VyY2VMb2FkZXIoZnJhbWUsIHJlc291cmNlLCBvcHRpb25zKSkpOwog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVk
UmVzbwogI2VuZGlmCiAgICAgaWYgKCFzdWJsb2FkZXItPmluaXQocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBzdWJsb2FkZXI7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBkZjA0MzJhZGNhMTRiOThiNDQwMWJh
YjRiMjJmZjg1MDlmZjVlMzlhLi5hMDg5MDFiNTU1ZDg0ZWE0NmM0NWVlNmU5ODhlNWM0ZmI4ZTNk
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9h
ZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1l
KiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVh
bCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDQ0ZTIz
MjY4MjI2NTY1NjViNmJjZWZjYjU0ZTYxYzZjOGY0OTUwMzkuLmQyYmZjNjUzY2JmZWMxMzAxNTQ2
NDIwMDY3ZWFhNDA4ODA5NWFlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTU0OCwxMyAr
NTQ4LDEzIEBAIGJvb2wgQ2hyb21lOjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY2xpZW50Lmhhc09wZW5lZFBvcHVwKCk7CiB9CiAKLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBD
aHJvbWU6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1Jl
ZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAogewogICAgIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygpOwogICAg
IHJldHVybiBtX2NsaWVudC5jcmVhdGVQb3B1cE1lbnUoY2xpZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAg
ICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMjIyNTE4
NGM4YmY1YjA0ZGZjMDA4MGRmOWNhOTdkNDI5NDdjNjhiOS4uYzBiZDg1ODgwNzg3ODhhMDgxZjBl
ZDg1ZWNmYjk0MGM5YjA2Mjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0xNzMsOCArMTczLDgg
QEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KTsKICAgICBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKTsKICAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxQ
b3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVh
dGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBjb21lIHVwIHdpdGggYSBiZXR0ZXIgbmFtZSBm
b3IgdGhpcyBzZXR0ZXI/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA0Nzg2ZWM4
MDVlNTliODg0YTYwNzM3ZjkwNGEyODA0YTBhZGNjZGQ4Li40ZjgxNDNkMmIxZmUxY2YzMzljNDhm
NmU2NzczMTI4MjAxOGU0MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM3
NSw4ICszNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1l
bnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSA9IDA7CiAgICAgLy8gQ2hlY2tzIGlmIHRo
ZXJlIGlzIGFuIG9wZW5lZCBwb3B1cCwgY2FsbGVkIGJ5IFJlbmRlck1lbnVMaXN0OjpzaG93UG9w
dXAoKS4KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVu
dCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggNzkyN2E0OWI0Mzg1M2RjYzEzMWU3Yjc1Njc4MmE0
MDI3NGZiMzU0OC4uMDc2ZDAxYmU5NDA1ZTFjMDQxNTg5MDU5NzlhZTY0ZGYxM2NmNTE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291bnQgKi8sIGNv
bnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSB7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMmU3NmQ3Y2RkMGUxODlhZWRmZjY4YjExMjlmZDFhNzgy
M2E4YmE2Yy4uMGM5ZGE3MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYgYXJy
YXkpOwogCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4g
bV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQorICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBt
X2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRl
bHRhIC0gbV91c2VyU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1Zp
ZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVRyYW5zZm9y
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggYjMzYmJiNjI5MzAwNWVmZjZhZjM3NmM0MTQxOGVkYWM1NTA4YTEwYS4uZTk3ZmNk
ODljMmM4MWJmZjE3OGVhOWI1YzRmZTNlODY2MDRjNDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
dWludDMyX3QpCiAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVmZmVycygpOwogfQog
Ci1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IElu
c3RlYWQgb2YganVzdCByZXR1cm5pbmcgYW4gZW1wdHkgdGV4dHVyZSwgd2Ugc2hvdWxkIHdyYXAg
dGhlIHRleHR1cmUgY29udGVudHMgaW50byBhIEJpdG1hcFRleHR1cmUuCiAgICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IGVtcHR5VGV4dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmgKaW5kZXggMzFkMTgxOTJjZDNlZjBhYjQ2ODY4MWNiZmU1YWRm
ZTk2ODM1MzhiYi4uMjI0YjgwNjA1MjA4NWU3ZTM2Mjk5ZmRkNDllNmQwMmQ2Y2E3MDQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmgKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZh
Y2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZO
ZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA2NDhlNzFmMDBhMDlh
YWY3YmJmZTM5MjgwZWMwZWE3N2ViMTQ4NmRmLi43ZTIyMTJlNTI1ZjQyZjU1ZGVhODE3YWVhMDli
ZDk1MjVkYTM0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBHcmFwaGljc0xheWVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6
Ci0gICAgaW5saW5lIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGlubGluZSBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAgIGlubGluZSBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgIGlubGluZSB2b2lkIHNldFRleHR1
cmUoQml0bWFwVGV4dHVyZSogdGV4dHVyZSkgeyBtX3RleHR1cmUgPSB0ZXh0dXJlOyB9CiAgICAg
aW5saW5lIHZvaWQgc2V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVj
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCBkMzU3MTBhNjkyODFhODIwNjE2ZGUzMTIxMzNjNGQzYzdmZjkxN2U4Li4zNjI1YzE0ODY0
MzFkNDQ1YTJhOTkxMzIwZWY1MTAxZjQ1ZmUxNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBl
ciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRl
eHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0aWxl
IDogbV90aWxlcykgewogICAgICAgICBpZiAoYXV0byB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMmY3
OTJkY2Y5NDg0OGQ0YjhhYmIwYTI5ZjEwZDgzMTg0ZTMwZjU5ZC4uNGYzY2NlODhjYWJkZmQyNDQ0
NjgxZDVhN2ZjMTIyYmViYzM0YWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZp
cnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpIHsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRD
b3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDA5Y2EzZGUwNGJl
Y2Q2NTc5YmEyNTVmYmExZTMzMjZhYzExYTViYmIuLmJkZTk1ZjUxODA3NzlhZmE0ODE5ZTkzYjM2
ZjkwNTU2ODllZTQwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZS5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikg
PSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2Uq
IG5ld1BhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDA0ZGE0ZDE3ZjhhZTU0ODFmMzA5ZjMwN2ZjMGI5N2U5MTdmZjQzZTQu
LjZhYTBmMzMxNjk5ZmQwMjllMTBiZmE3M2E1MWFiZDU5NmVhNzk1OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtODUsNyArODUsNyBA
QCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAgICAgICAg
Y2xvc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKikKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKQEAgLTk2LDEwICs5NiwxMCBAQCBQYXNzUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogICAg
IFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwog
ICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGkgPSBtX3N0b3JhZ2VBcmVhTWFwLmJl
Z2luKCk7IGkgIT0gZW5kOyArK2kpCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJl
YU1hcC5zZXQoaS0+a2V5LCBpLT52YWx1ZS0+Y29weSgpKTsKLSAgICByZXR1cm4gbmV3TmFtZXNw
YWNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1QYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJw
T3JpZ2luKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lz
U2h1dGRvd24pOwpAQCAtMTA3LDExICsxMDcsMTEgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmkK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHBycE9yaWdpbjsKICAgICBSZWZQ
dHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0g
bV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJl
YS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIAogICAgIHN0b3JhZ2VB
cmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5
bmNNYW5hZ2VyLCBtX3F1b3RhKTsKICAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4ucmVs
ZWFzZSgpLCBzdG9yYWdlQXJlYSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3RvcmFnZUFyZWE7CiB9CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
aW5kZXggNTI1OTk3MWM1ZWM0MDY5N2JhN2NmYjljNGQ5MGE0YzZhYzZhMjJmNy4uNzBjNmI1NzMx
NGU3Y2JhMzllYjE5YTNjNzhhODcxYTdjZDhiYzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSAgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFn
ZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdl
QXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLmgKaW5kZXggMWI1OTM1ZGE5YzNmZGEzNzMyMjAxODBmZGYwYzE2NDY0
NjE3ZDI3Ny4uYmQ5NGNlNzVlMTdlZDkwYzEzMTM0ZTM5ZGVlYWZiMzZiZjcyNjczMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLmgKQEAgLTc5LDggKzc5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNlbGVj
dEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNo
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdl
YkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZEVsZW1lbnRDaGFuZ2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bQppbmRleCA0NmY4N2Q4Y2JjMDBmYTExMTZmNDc2NmRkZDljMTQxZTVhNGRhZTZlLi5iOWNmMTM5
Nzg0ZTZmNTIwZTRlY2E4NjlkNGIyYjQ5ZjNmZGMzZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0yNDks
MTIgKzI0OSwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVudElPUzo6c2VsZWN0SXRlbUFsaWdubWVu
dEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6
OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJT1M6OmNyZWF0ZVNlYXJjaFBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUlPUyhjbGllbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
NWUzYjJkY2JjYWVhOTVjZmVhYWZiOGUzYjZiZmRmYjM5MzU1ZGFiYi4uZDc1NWZjN2MxOTZhY2Q3
OGJjNmNiY2FmNzViMmM2YzY2ZjViNTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE4OSw4ICsxODksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3Bl
bmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCkgb3ZlcnJp
ZGUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCAyMGY2ZDcyODI0NDY4NmZiM2QyNjVmYTdhZDE1NTc3MzcwZTVm
ZGU2Li4xYjljZjljM2E3YTI2MjUyMzBlNDIzM2RjMDc5MzZlMDk5ODAxYWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBA
IC04NDIsNyArODQyLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50
KSBjb25zdAogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b3B1cE1lbnVNYWMoY2xpZW50KSk7CkBAIC04NTEsNyArODUxLDcgQEAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWUKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVu
dT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51TWFjKGNsaWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggN2NmMTU4Zjk2YjYzOGI3Mjk0MDI2NDA5ZTE5NzJlMjQ1NjBiYjBkNy4uY2QxZjI0YmE5
YzMzYWEzZGI2MGYwYmExZDM1NjVlYjdhZmY0NTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xOTIs
MTQgKzE5MiwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRT
dGFydGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggNDFkMDE5YzVlYmIwN2JmZmJlNGNkZGY3NjhiODc1NGEzOTI2
MzY3My4uMTEzZmE4MDY3YzYxOGE0ODg4YWFjYTIyOTM0MTY0YWU2ZThhNGE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTEzMjIsMTUgKzEzMjIsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAjZW5kaWYKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdl
YkRvY3VtZW50TG9hZGVyTWFjPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlck1hYzo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXJNYWM+
IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogCi0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSA9IFtbV2ViRGF0YVNvdXJj
ZSBhbGxvY10gX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6bG9hZGVyLmdldCgpXTsKKyAgICBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlID0gW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhE
b2N1bWVudExvYWRlcjpsb2FkZXIucHRyKCldOwogICAgIGxvYWRlci0+c2V0RGF0YVNvdXJjZShk
YXRhU291cmNlLCBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpKTsKICAgICBbZGF0YVNvdXJj
ZSByZWxlYXNlXTsKIAotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEY6Om1vdmUobG9hZGVyKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQpAQCAt
MTYwOCw3ICsxNjA4LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdl
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUmVmUHRyPEZyYW1l
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CkBAIC0xNjI3LDE5ICsxNjI3LDE5IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAKICAg
ICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2
YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgogICAgIGlmICgh
cmVzdWx0LT5wYWdlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAKICAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5sb2FkVVJMSW50b0No
aWxkRnJhbWUodXJsLCByZWZlcnJlciwgcmVzdWx0LmdldCgpKTsKIAogICAgIC8vIFRoZSBmcmFt
ZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQu
CiAgICAgaWYgKCFyZXN1bHQtPnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogT2JqZWN0Q29udGVudFR5cGUg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
CkBAIC0xOTA3LDcgKzE5MDcsNyBAQCBwcml2YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LCBjb25zdCBVUkwmIHVybCwKK1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQCiAK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1
Z2luKFdpZGdldCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRv
Y3VtZW50TG9hZGVyTWFjLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3VtZW50
TG9hZGVyTWFjLmgKaW5kZXggYjJjYzM3NThmN2IzMDc2ZmFlYzU0ODMzNTdiNzM5M2EwZWExZGIz
Mi4uZTgwMzE0YjJhMDg5NDg0YTRhMmU0OWU2MDk3NGZlNjA5N2IxZjc4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVudExvYWRlck1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaApAQCAtMzksOSAr
MzksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkRvY3VtZW50TG9hZGVyTWFj
IDogcHVibGljIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJEb2N1bWVudExvYWRlck1hYz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIGRh
dGEpCisgICAgc3RhdGljIFJlZjxXZWJEb2N1bWVudExvYWRlck1hYz4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkRvY3Vt
ZW50TG9hZGVyTWFjKHJlcXVlc3QsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViRG9jdW1lbnRMb2FkZXJNYWMocmVxdWVzdCwgZGF0YSkpOwogICAgIH0KIAogICAgIHZv
aWQgc2V0RGF0YVNvdXJjZShXZWJEYXRhU291cmNlICosIFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IDQ2ZjhlNWRjNDdmOGU4ZDA4MWY0Nzg0ZTk4NDJkNDk2OTFjYzVjZTcuLjE4OTA2ZGYwNDY5OWFi
Yjc3ZDQyODRhMWY4OWJjOGE5ZjdkMTFiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzgwLDEyICs3ODAsMTIg
QEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc09wZW5lZFBvcHVwKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxQb3B1
cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBNZW51V2luKGNs
aWVudCkpOwogfQogCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitS
ZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlYXJjaFBvcHVwTWVudVdpbihjbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMjUxZjg2MmY0
M2I4MGQ4MmYyN2FkOGU4MjEzMTkwYmRhMDM3NWY4Zi4uZjYzYWNlZmFkMzFjNzAyNjk3ODNjMDU3
ZDk0MmJhZjFiY2FjYmVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1MSw4ICsxNTEsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CiAgICAg
dmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9w
dXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVt
ZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqLCBib29sIHdpdGhLZXlib2FyZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggMGNiZDE5M2U4ZmQwZmRhZDY1NzRmM2Q1ZjRiMTgyZDFkYTFmYmE4OS4u
MjczMjViYTgxOTFjYzIxZjJhMzRiYzNiNDZhZDA5NGFmYTczNmUzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtOTQ5LDE0ICs5NDksMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJl
cGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAg
UmVmUHRyPFdlYkRvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3Jl
YXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+
IGxvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURh
dGEpOwogCiAgICAgQ09NUHRyPFdlYkRhdGFTb3VyY2U+IGRhdGFTb3VyY2UoQWRvcHRDT00sIFdl
YkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKGxvYWRlci5nZXQoKSkpOwogCiAgICAgbG9hZGVy
LT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UuZ2V0KCkpOwotICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUobG9hZGVyKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODdiNmQ1MTZhYzM5YTlhMDJlYWM1
ZTdiNTFlYTc4MWM2NjQzMjE5Ni4uYzM4ZmYyZmIxYTM0MjNhNzE1NDljZjgzZTFlYmZjY2U0NzBk
ZWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikg
b3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpAQCAtMTgwLDkgKzE4
MCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RG
OjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBj
b25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1
Z2luV2lkZ2V0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCA0YzMxMDNkNWUyMDc3NzYxYWU3YmMzZGI3
YjhmMTg2NDQzZDU1NWUzLi42MTY1M2NhYzE3OGQzNGZhYTQ2OWZmMTA2ZTUwNTRmN2Q3NzkwM2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZQogICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKLVBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBV
bmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCitSZWZQdHI8VW5pcXVlSURC
RGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShj
b25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFiYXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBQYXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFz
ZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29ucwogCiAgICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGUo
aWRlbnRpZmllcik7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGRhdGFiYXNlLmdl
dCgpOwotICAgIHJldHVybiBkYXRhYmFzZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGFiYXNl
OwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cmVtb3ZlVW5pcXVlSURCRGF0YWJhc2UoY29u
c3QgVW5pcXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDU5YTYxOGJlNDA1OTVjMjhjMjJi
ZGIyZTljYTIxODE3OTZkMjNjNjkuLjQ3YzY5MjU4NmNmZjlkMzBlOWNkNzE4NjM0NGNiOTM3ZjBm
ZWY2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBp
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeTsgfQogCi0gICAgUGFzc1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZ2V0T3JD
cmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0
YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAgICAgdm9pZCByZW1v
dmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYpOwogCiAgICAgdm9p
ZCBlbnN1cmVJbmRleGVkRGF0YWJhc2VSZWxhdGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKaW5kZXggNGE5ZjQ2N2U4NzhkZTgxYzY2MWJkZWQzNWQ3NjE2NjMwNjExYzQ3
Yy4uYTU2ZDkyNTAzYThlOTBlOTk5MmNmNzcwYTI2ZWMyMjMyYTI0ZjdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0SW5pdGlh
bGl6YXRpb25SZXBseShQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZQogICAgIG1faW5pdGlh
bGl6YXRpb25SZXBseSA9IHJlcGx5OwogfQogCi1QYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQorUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkoKQogewotICAgIHJldHVybiBtX2lu
aXRpYWxpemF0aW9uUmVwbHkucmVsZWFzZSgpOworICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9u
UmVwbHk7CiB9CiAKIGJvb2wgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppbml0aWFsaXplKGNvbnN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5k
ZXggOWVlZDJlNzExOGM3MWY4N2QzNmU5ZmQyZTZmYjA0ODI4YzczYTc3Yy4uMmUzMzNmNGZjN2Ew
ZGI4OTIzODI5NTNiNDgyMDIyMzFmNThlMmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzSW5pdGlhbGl6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
aXRpYWxpemluZzsgfQogICAgIAogICAgIHZvaWQgc2V0SW5pdGlhbGl6YXRpb25SZXBseShQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luOjpEZWxh
eWVkUmVwbHk+KTsKLSAgICBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Q3JlYXRlUGx1Z2luOjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7
CisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
OjpEZWxheWVkUmVwbHk+IHRha2VJbml0aWFsaXphdGlvblJlcGx5KCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBzdGFydFBhaW50VGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBjNjZkMjhiNzUzOTc0YTA1NzQwY2I2YWY2OGUyYzQ4NDgxZDkzYzMy
Li41MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJjODAwOGUwZjJhOTQwMGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsCiAgICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNv
dXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJp
dG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsK
ICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7CiAgICAgICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGlsZS50ZXh0dXJlKCk7CkBAIC05OSw3ICs5OSw3
IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRl
eHR1cmUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7CiAgICAgfQogCi0gICAg
cmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKKyAgICByZXR1cm4gUmVmUHRyPEJp
dG1hcFRleHR1cmU+KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmgKaW5kZXggZDkwMzQ5ZDYzYTVmOGI0NmY2NjZjZWM2MjE0NmI2MjVjMDQzYzNiNC4uNWRh
ZmEwMTEyODdlOWFjYTQyNzQ0MmIzZWQ2N2M3YWQ5M2M1ZGMyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKTsKICAgICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7
CiAgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3Jk
aW5hdGVkU3VyZmFjZT4sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3Jk
ZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmNwcAppbmRleCA2YjhkMTFkYTcyN2UwYWQ1NDVjOWVlM2M1ZjZmNzQ0YjllMDg0YWVh
Li4wZGQzMDY0ZWUzYjg5M2Y1YjhmMDJlOGYzZDIwODAzMTA1Y2U2ZTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBIYW5kbGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2ViQ29vcmRp
bmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogewogICAgIFJlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CkBAIC03OSwxMSArNzksMTEgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHMKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHN1cmZhY2UgPSBjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIChmbGFncyAmIFN1cHBvcnRzQWxwaGEpID8gU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhIDogU2hhcmVhYmxlQml0bWFwOjpOb0ZsYWdzKSk7
CiAKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9
CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJm
YWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3Mp
CiB7CiAgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPQogICAgICAgICBH
cmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29mdHdhcmVXcml0ZQpAQCAtOTcsNyArOTcsNyBAQCBQ
YXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGVXaXRoU3VyZmFjZShjb25zdAogICAgIC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlv
biB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJp
dG1hcC4KICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJm
YWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChzdXJm
YWNlKTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXpl
LCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6On5XZWJDb29yZGluYXRlZFN1cmZhY2UoKQogewogfQogCi1QYXNzUmVm
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUo
Y29uc3QgSGFuZGxlJiBoYW5kbGUpCitSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJD
b29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKIHsKICNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2Vu
KCkuaXNWYWxpZCgpKSB7CkBAIC0xNjEsNyArMTYxLDcgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYg
aGEKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjcmVh
dGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAppbmRleCA3ZGMxNmYyYzA0M2JmYjVmYzRk
MzkyM2UzMzFlZDVhYzFmNjM0M2ZhLi44YTE4ZjYwNzY5NmJmYTBiNzBjZGEyYzBkYjc4NDc5NmFl
NDg2NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtNjEsMTAgKzYx
LDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIFNo
YXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7Cisg
ICAgc3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHN1cmZh
Y2UgZnJvbSBhIGhhbmRsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOwogCiAgICAgLy8gQ3JlYXRlIGEg
aGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYpOwpAQCAtODcsNyArODcsNyBA
QCBwcml2YXRlOgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBi
YWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNv
b3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3Jl
YXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKICAgICAvLyBD
cmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgR3Jh
cGhpY3NTdXJmYWNlLgogICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElM
b2FkZXJDbGllbnQuaAppbmRleCBlNDU4ODZhNWRiYmIwZjUxMjdkNTMyMGZhOTNhYzczODE3NmYz
N2Y2Li42ZTk1YjBmZWE2ZWQ0NjBhZDZjM2QwNjMyNWM4MWZmMjU5ODE5NTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTk1LDcgKzk1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3
YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSTo6T2JqZWN0KikgeyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5Jikg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01h
c3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGQwMzhiZjFm
MTA1MWY5Zjk0YTdlNjczOTcxZWI2NTBiZjY4ZWRlODguLjQxMjUzYzZkMTc3YTVmYWMxNGJmYTA1
ZDQzNDRiMTJiNjM1ZTY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQu
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
IHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0YTNlM2E5NDdmYWRiYWQ5ZDRiYjYw
YzY2MTNkNWM3OTAwNmZjNjFlLi44YjZiODkzZmExOTI0MTBiMzhhMzlhMjEwMDRmODllNGUzODcw
M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTE1
MCw3ICsxMTUwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgICAgIG1f
Y2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSSgmcGFnZSksIHRvQVBJKGl0
ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0
ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIFJlZlB0
cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJy
aWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLmNsaWVudCgpLmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXkoJnBhZ2UucHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkpOwogICAgICAgICB9CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgbV9jbGllbnQud2ViUHJvY2Vzc0RpZENyYXNoKHRv
QVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQ
YWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0
YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDYwZDhhMGY1NmY5ODAw
Zjc1MzUwMjU4OTIzMGRlMzcwY2Q5YzJhZWMuLjVjMTZiZjgyZDVhZDA2YTRmYmEyYzcxMDllZTMz
MzlhNzUwZDVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTIwNiwxNyArMjA2LDE3IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIGJvb2wKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5uYXRpdmVFdmVudCgpKTsKIH0K
IAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRn
ZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJv
eHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoV0VCS0lUX0lTX1dF
Ql9WSUVXKG1fdmlld1dpZGdldCkpCiAgICAgICAgIHJldHVybiBXZWJLaXRDb2xvckNob29zZXI6
OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggYmM1YjYzNWMxYzliNGE5YTA1MWU1
NTAxY2QwYTMxNGYzNjgyNDAwZi4uMWNiZjM0ODVlZTEzZmQxYzMwZjc4ZjQ0NDY3OWQ5ZGNlYzZl
NmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCkBAIC04MiwxMCArODIsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRvbmVX
aXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRI
YW5kbGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJv
eHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGlzbWlzc2Fs
QW5pbWF0aW9uID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbjo6RmFk
ZU91dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAppbmRleCA0OWNlMTNkNTc2OWFiMzQ0NGYyMzNj
Yzg2ZGE3YTY4MTNkNGRiNTM2Li5lYWFhMWY3MGM2ZDg1ZDU0Njk3NGI3YjkwNmE0MDZhNjRkOGZl
MDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJDcmVkZW50aWFsLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRp
YWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dl
YlByb3RlY3Rpb25TcGFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCmluZGV4IDIwNTY0Zjc1NjdjOTExNmFkNjBhMGNjODk0
Nzk2ODE0Yzk2NDYwYzMuLjI4YmViYTZlOGMwYzg2NzFmNjk5MWIxZTdhMzI4NGRlYmEzYzE3YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQ
cm90ZWN0aW9uU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCmluZGV4IDg3
ODYwYmQwYzcwMWU1N2RjNDJjODVhYmM4OTg3YTIyOWM3YjlmNDMuLjc1MmU0Y2M1ODEwOTMyZTYw
MGMxYWUzMGU0YWIyMDE0YzRmYWY4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBkNTUyNmExNTY0ZWQ4NGZm
OTI4MjViMzhkNTQzMGYxNzY3ZTFiNTJhLi5kYmQ4OTQzOTI1MjRiMzg4NmQ1OTUyM2E4ZGI1MzBi
Nzc0N2Q3MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYlBhZ2VQcm94eSYs
IFdlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rlcktl
eShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KaW5kZXggNjBhZGJkNGIzY2M3NzI2NGRlZmZlNWU3YWUzZTMyM2IyMzk1MWY1Ni4u
NjRkMDczNTMwNzMyZmQ0N2NhODVmOGEyNzUwNTUzYmIzMjg1ZjBlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC02NzAsNyAr
NjcwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGEKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3XTsKIH0K
IAotUGFzc1JlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKK1JlZlB0cjxBUEk6
OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVy
S2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKaW5kZXggNTk5YjYzMzgw
Mjk1YWM5MjNkMjExZTdiY2NiOWIzYjM5NGUyZGNhYi4uYjZlZjYzOTY1NGY3NzczMGJkMTEyYzU2
MTUxNmExN2ZlODEzZTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKQEAgLTQzMCwyMyArNDMwLDIzIEBA
IHZvaWQgV2ViVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmIGV2ZW50LCBib29sIHdhc0V2ZW50CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikK
K1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlUG9wdXBNZW51UHJveHko
V2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+
IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1JlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1Jl
ZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1Jl
ZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCAyZmNkNjQwYWU5ODhlYzQ3NjM3MDBhODdk
YWI0Y2MwMDM5NDc5YmU5Li5kNDUzNzI0N2FiOTM3ZDFiNWY1ZjhjMmRmOGQ2NzBkYTVjMGM5ZDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jiwg
Ym9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVBy
b3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihX
ZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4
dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJt
YW5lbnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXgg
MGY4ZDI0MDQ3ZTZkNTE4ZWY5OTAyNDZhZjhmOTM2Y2Y0MTU5YWMzOC4uNWRjM2U1MGYxYjRhNTY0
MWVhNjM2MWY3YTk4NWQyMTVmOTMzOTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0yMTAsMTEgKzIxMCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRv
bmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVu
dEhhbmRsZWQpID0gMDsKICNlbmRpZgogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKSA9IDA7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNy
ZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0
aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwg
V2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxp
ZmV0aW1lOjpQZXJtYW5lbnQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA5YjYwOWQwYzUyNDZjZGE0MTM1ZDNmNjQxNGJlZmMxZTU1YjM4ZjE4Li5iZGNl
N2NkOGUyMzg2MzZkNTM4ZWU4MWNkZDBiNzJlYjQ1YmE5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MzAsNyArNzMwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9r
ZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAK
ICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAppbmRleCAzZGNmZGRjMDc4ODVmZjI0MTFhYzgyOTIyZWZi
ODEyZjY3NzBkMzIwLi5iNTU3MDc4YjY2YTg4YjY4NDNiMDdlODJlNGMxNTc5MmJkMGI4Y2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKQEAgLTg4LDEz
ICs4OCwxMyBAQCB2b2lkIFdlYlZpZXdFZmw6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlKQogICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KCZjb250
ZXh0LCBtX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpLCBtX3BhZ2UtPmRyYXdz
QmFja2dyb3VuZCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmll
d0VmbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOjpjcmVh
dGUocGFnZSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLVBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gV2ViVmlld0VmbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlld0VmbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJu
IFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0ZShtX2V3a1ZpZXcsIHBhZ2UpOwogfQpAQCAt
MjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViVmlld0VmbDo6aW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xp
ZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNlKiBjbGllCiAgICAgbV9jb2xvclBpY2tl
ckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNr
ZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1JlZlB0
cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQogewogICAgIHJldHVybiBXZWJDb2xvclBpY2tlckVmbDo6Y3JlYXRlKHRoaXMsIHBh
Z2UsIGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0VmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgK
aW5kZXggZWY5OTExODQ2YTBkOTE2YWFjNGFhNzE5MzdiZjA5ODgxNmY5N2NjYy4uYTBjYWYxMDNj
NWZiYjMyZTViZGYxZmNiMzYwNDUwMmExYWEwZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
aW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50KGNvbnN0IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNl
Kik7CiAKICAgICBXZWJDb2xvclBpY2tlckNsaWVudCYgY29sb3JQaWNrZXJDbGllbnQoKSB7IHJl
dHVybiBtX2NvbG9yUGlja2VyQ2xpZW50OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Vmlld0JhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpOwpAQCAtNjYsMTIgKzY2LDEyIEBAIHByaXZhdGU6CiAgICAgV2ViVmlld0VmbChX
ZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VHcm91cCopOwogCiAgICAgdm9pZCBzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopIG92ZXJy
aWRlOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggNDg0MjEyNzA4ZDMwN2JhMTc0MzI2MTczZTU1YTNjMGQ3NmQ0ZTBkZi4u
Y2M0MGI1NmY3OTc2Yzg3NzhiZTAyODYzOTViODk2MmUxZTIxZGQ3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtOTcsOCArOTcs
OCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lk
IGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNF
dmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGlt
ZTo6UGVybWFuZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNh
dG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCmluZGV4IDAzMzdmM2Y3OWQ1ZDg5ZjVjNGUyMmIyNzliZmNkN2VkMzZiNGYxMjMuLmEw
ODE2YzQ1Y2ExNmY4MDAxMjM2ZDRmMWYwZjMxNzEyZGM4NmExZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDQxLDE2ICs0
NDEsMTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYlRvdWNoRXZlbnQmIG5hdGl2ZVdlYnRvdWMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHko
V2ViUGFnZVByb3h5KikKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihSZWY8VGV4dEluZGljYXRvcj4g
dGV4dEluZGljYXRvciwgVGV4dEluZGljYXRvckxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmZDIyOTFhNTU2MTVlMmUw
NmMzZWMyZTlkMjE5Njk0YmY1ZTQ4ZGUyLi43YzUyMmM2MWZjM2MzYWQ4M2ViYjQ4NTMyZjIzMzE5
OGE2NjFmNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTA3LDEwICsxMDcsMTAgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAppbmRleCBjMWY2ZmMxOGUzNTQwYTkzNjNiZmFmNjM4ZDNkMWU4OTRmMjRh
YTM3Li5hYmUzOTRiNzZmNGJkYjg3ZDg1NTY4NTY5OTM0MzJlY2M1MTFiYmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMjAsMTEgKzEy
MCwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tl
cj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dElu
ZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IGYxZjQyNDdjZGUwYWZjZTM4
MzIyODBiNWJjZGMzMzAwMmZhZTE4NzYuLjgxZDBiMWIwMDQ2YzQ1ZmFkZDM5MTc1YTBkY2M3OGUw
YjA0YWYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQpAQCAtNDg3LDE4ICs0ODcsMTggQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdp
dGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbAogICAg
IFttX3drVmlldyBfZG9uZVdpdGhLZXlFdmVudDpldmVudC5uYXRpdmVFdmVudCgpIGV2ZW50V2Fz
SGFuZGxlZDpldmVudFdhc0hhbmRsZWRdOwogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJQb3B1cE1l
bnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAg
IHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUobV93a1ZpZXcsIHBhZ2UpOwog
fQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlj
a2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
aXRpYWxDb2xvciwgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJu
IFdlYkNvbG9yUGlja2VyTWFjOjpjcmVhdGUocGFnZSwgaW5pdGlhbENvbG9yLCByZWN0LCB3a1Zp
ZXcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IDRjMjIzMWI2OWU1NWM0YjQ5OGYwOGM0YTJmYzk1ZWI3MGRkNTk2YTIuLmIy
OTI4Y2YxOGNmOGNiYjVhMzcyZmU4YzY4ZDY3Zjk1ZWVkYWU2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zNjgsMTcgKzM2OCwx
NyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWlu
dDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgYXV0byBtZXNzYWdlVGltZW91dCA9IHN0ZDo6Y2hy
b25vOjpzZWNvbmRzKDIwKTsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwg
bV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSksIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAx
ZWQ3OGQzNDVkNGU3NDJkNzk4NjAyNWE2ZjQzNjdhZjM4YmZkZTRjLi5hYTIzMjRjZTFiYTA3OGRh
YTAzMDJhZjQxMDE1Y2E0ZjljOWE4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApA
QCAtNjcsMjAgKzY3LDIwIEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6fldlYlJlc291cmNl
TG9hZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZy
YW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNl
TG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBp
ZiAobG9hZGVyKQogICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwg
ZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZh
dWx0KTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyOwog
fQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGll
bnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2Fk
ZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVy
cmVyUG9saWN5RGVmYXVsdCk7Ci0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGxvYWRlcjsKIH0KIAogc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWF4aW11
bUJ1ZmZlcmluZ1RpbWUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCmluZGV4IDJlODE3OTdiNWM5NDhlOTk3MzEzYTY2ZWNiYWMzODZiNTllNmZiOTUuLjc2
NGUxYWE4ZTY0MTRhMzFmYTE2NjJkMTY2NjBiNjE2NzAxNmJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcigpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogICAg
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1M
b2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNv
dXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
T3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGJvb2wpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggZDNkYzI0N2U0OGNkNjE4N2Q2
OTJlNmU0MWM0MmU2YWE3YTkyY2VhZi4uMzllOWIzZDQ5ZWY2YmQxYjM0ZjA4MTMxMDQwY2I0NDk1
ZTA5ZWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0xMTIsMTAgKzExMiwxMCBA
QCBOZXRzY2FwZVBsdWdpbjo6fk5ldHNjYXBlUGx1Z2luKCkKICAgICBtX3BsdWdpbk1vZHVsZS0+
ZGVjcmVtZW50TG9hZENvdW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5l
dHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5l
dHNjYXBlUGx1Z2luOjpmcm9tTlBQKE5QUCBucHApCiB7CiAgICAgaWYgKCFucHApCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOZXRzY2FwZVBsdWdpbio+KG5wcC0+bmRhdGEpOwogfQpAQCAtNzA5LDEwICs3MDksMTAg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgcGxhdGZvcm1QYWludChjb250ZXh0LCBkaXJ0
eVJlY3QpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46
OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFw
c2hvdCgpCiB7CiAgICAgaWYgKCFzdXBwb3J0c1NuYXBzaG90dGluZygpIHx8IG1fcGx1Z2luU2l6
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKIAogICAgIHBs
YXRmb3JtUGFpbnQoY29udGV4dC5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNp
emUpLCB0cnVlKTsKIAotICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOworICAgIHJldHVybiBi
aXRtYXA7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OmlzVHJhbnNwYXJlbnQoKQpAQCAtMTA2
NCw5ICsxMDY0LDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6c3VwcG9ydHNTbmFwc2hvdHRpbmco
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IE5ldHNjYXBlUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSW50
UG9pbnQgTmV0c2NhcGVQbHVnaW46OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBw
b2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4
IDhiMzI4M2M5NzkzZWE0ZjA0YjAyMzFmOTU3NzBkMGI4NmZmZTM1ZjMuLmQ4OGI2ZmQ3ZmRkNWJm
OWQ1YzVmOTg0OWUyNmMyODdhNzIwZjhlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBj
cmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4pOwogICAgIHZpcnR1YWwgfk5l
dHNjYXBlUGx1Z2luKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4g
ZnJvbU5QUChOUFApOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAo
TlBQKTsKIAogICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQg
YXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5
bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6
ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxh
eWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTI2NCw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAg
IC8vIGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRp
YmxlKS4KICAgICBib29sIGNvbnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJ
blBsdWdpbkNvb3JkaW5hdGVzKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCmluZGV4IDVkNjVhNjY2ZWE5MTQ0NjQ1MmUzMWI2YWMxNGQ4MzkyODMwYWMyMTgu
LjMwYzc5MGYxMzRhNjc5YWJiYjhkNzBiMzRlYmY4OGM5OTRiYWQ1ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTE4LDcg
KzExOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29v
cmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGlu
dHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCmluZGV4IDk4NDcwMThmM2M2NjU3NjQ2NTFhNDllZjg4YWU5NDNiMDg4
ZGYzOGEuLjkzMjQ5NDgyNTJiNzBjODZhNTEzOGMyZDkzYzA1NTdlYTBlOTAyMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBA
IC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJ
bkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAgIHNjcm9sbGJh
ci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKK1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogewogICAgIGlmIChzaXpl
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNjksNyArMTE2OSw3
IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKIAog
ICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzbmFwc2hvdEluQ29udGV4dDpjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKV07CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYml0bWFwOwogfQogCiBQbGF0Zm9ybUxheWVyKiBQREZQbHVnaW46OnBsdWdpbkxheWVyKCkK
QEAgLTE2MzUsMTIgKzE2MzUsMTIgQEAgdm9pZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2Rl
Q2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAg
TlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIAogICAgIGlmICghcGRmRGF0YSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6d3JhcE5TRGF0YShwZGZEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBhMTRlOThhYTI5YWQyYWVjOWI2OTYwM2UxYzFjOTA2
ODIyMmQ3YTEzLi42MmFiODQ3YzZiZWM0OTRhOWJiNDNkMjI5YzkxZjdkOTlkMzU2OTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0xMzUsNyArMTM1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNv
bnN0ID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRvIGRyYXcgaXRzZWxmIGludG8g
YSBiaXRtYXAsIGFuZCByZXR1cm4gdGhhdC4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHNuYXBzaG90KCkgPSAwOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYg
YSBwbHVnLWluIGlzIHVzaW5nIHRoZSBDb3JlIEFuaW1hdGlvbiBkcmF3aW5nIG1vZGVsLCB0aGlz
IHJldHVybnMgaXRzIHBsdWctaW4gbGF5ZXIuCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMWVjMTZiZTE3MWE1NWRiZWEzMjQzNGQwYjBl
NDhkNzIzN2Y2MTM1Zi4uMTNjYTU0MzI1OGY3NjUyNzg2MWIwZGEzMzQzOWVkNmVmZWEwZWQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCkBAIC0yMzgsMTYgKzIzOCwxNiBAQCBib29sIFBsdWdpblByb3h5OjpzdXBwb3J0c1NuYXBz
aG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCi1QYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgc25hcHNob3RTdG9yZUhhbmRsZTsKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U25hcHNob3Qo
KSwgTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U25hcHNob3Q6OlJlcGx5KHNuYXBz
aG90U3RvcmVIYW5kbGUpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogCiAgICAgaWYgKHNuYXBzaG90
U3RvcmVIYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJu
IHNuYXBzaG90QnVmZmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc25hcHNob3RCdWZmZXI7CiB9
CiAKIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQpAQCAtNzE2LDkgKzcxNiw5IEBA
IEludFBvaW50IFBsdWdpblByb3h5Ojpjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQ
b2ludChwb2ludCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVn
aW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXgg
ODkwNDFjMDQ5OGM2M2U2Zjg4MjljNTU1YjQ5MjM0ZjBlYzA2YjVmYi4uZTJmOThhZDdlY2NjZWNl
MjlkNDg4MDk3OTJhMDgzMTA4YTdhYjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMTM5LDcg
KzEzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZl
cnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFN0cmluZyBnZXRT
ZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKaW5kZXggYWE4ZjQzMTY5Yzg1ZjU3NDU3M2VhN2I0YmU2MjU4MzMxNzg4
NzUzZi4uMzU3NzhmODIxNWE5NmEwNTRlZTdkN2RlODg3YzE0ZmJkN2NkZmEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3Rv
cmFnZUFyZWFNYXBzLnJlbW92ZSgmbWFwLnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCi1QYXNzUmVm
UHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCitSZWZQdHI8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFNYXA+IG1hcDsK
IApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaQogICAgIHJldHVybiBT
dG9yYWdlQXJlYUltcGw6OmNyZWF0ZShXVEY6Om1vdmUobWFwKSk7CiB9CiAKLVBhc3NSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFn
ZSkKK1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmgKaW5kZXggNmM1MTY3NGM3MWEyMDBjY2U0NzhmN2JjMDk0MmRmN2U5MzhiZDE5
YS4uMzc4MTcxNzNlMjQ4NWI4NjZhOGFmMzI5Mzc1NTFjNzdkMjZkODMyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
dG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0
X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcAppbmRleCBmZDBhOThlODQ3NTk0YzM0MjA3YTI4NWJiNmVjMzA1N2ZkNTgzNDk1Li40NTIw
NjIwMDNmZGFmNmQ4NjIxODgwMjJhNzVmZjFkZGJlODE4MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTE4NSwxMiArMTg1LDEyIEBAIHN0YXRpYyB2b2lkIGFw
cGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUm
IGZyYW1lU3RhCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJ
dGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQorUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3Rv
cnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQogewotICAgIFJlZlB0cjxIaXN0b3J5
SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJh
bWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0ZS50aXRsZSk7Ci0gICAgYXBwbHlGcmFtZVN0YXRl
KCpoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKKyAgICBSZWY8SGlzdG9y
eUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZy
YW1lU3RhdGUudXJsU3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOworICAgIGFwcGx5RnJhbWVTdGF0
ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKIAotICAgIHJldHVybiBo
aXN0b3J5SXRlbS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhpc3RvcnlJdGVtOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKaW5kZXgg
ZTQxNTQxNWUxNGU2ZjM0ZDJmMGViYjUxY2U2NjhiMzQ0MDgzZDA1OC4uYmVlOWQyMjhjYTczOWE1
YThmNjY1MGNhZmNmN2JlZjBkYmNkNGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUGFnZVN0
YXRlOwogCiBQYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0m
KTsKLVBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3Qg
UGFnZVN0YXRlJik7CitSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29u
c3QgUGFnZVN0YXRlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggMTU1MGEzM2VhNDRkY2ViOGU2YTk3MWIxODY5MTFhMGJlNjE1Njc3Ny4u
OTM5ZGNjY2NhYTRiZjkxOGU3OTZmNmM1NTVhNGJiMzBkOThkNDQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtODM0LDEyICs4MzQsMTIgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhh
c09wZW5lZFBvcHVwKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViQ29yZTo6UG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQb3B1
cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnU6OmNyZWF0
ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBN
ZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1l
bnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogICAgIHJldHVybiBXZWJTZWFyY2hQb3B1cE1l
bnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBl
MjA4MWI5Nzc0YzFiNDcyOWI0MTJkM2QyZDVjZjUwNDI3NGRkMDk3Li4xNjUzZGZjMTAwNmZlNGU5
ODMyODY2MjA5YWMwMDJiOGM4N2RlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwMyw4
ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0Rp
cmVjdGlvbklzTmF0dXJhbCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVt
QWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3Rv
cnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBiZTZlOWIwZWFkODk5MjNhYjc4ZGIzMDhhMmI0OGFjNjY5NzE0OGY3Li41NDBkZGU5NTZm
OThkODA5ZDRmMTY4YjJjMzk0N2ZhZmY3NDliMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQorUmVmPERvY3VtZW50TG9hZGVyPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7
CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoKm1fZnJh
bWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CkBAIC0xMzc1LDcg
KzEzNzUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAgIG1fZnJhbWUtPmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwgcmVzcG9u
c2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCitSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8q
YWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1hcmdpbldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdo
dCovKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkBAIC0xMzg0
LDI1ICsxMzg0LDI1IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAKICAgICBGcmFtZSogY29y
ZVN1YmZyYW1lID0gc3ViZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZVN1YmZyYW1l
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBU
aGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJpdHJhcnkgSmF2YVNjcmlw
dCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5LgogICAgIGlmICghY29yZVN1
YmZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxk
RnJhbWUodXJsLCByZWZlcnJlciwgY29yZVN1YmZyYW1lKTsKIAogICAgIC8vIFRoZSBmcmFtZSdz
IG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCiAg
ICAgaWYgKCFzdWJmcmFtZS0+Y29yZUZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoc3ViZnJhbWUtPmNvcmVGcmFtZSgpID09IGNv
cmVTdWJmcmFtZSk7CiAgICAgaWYgKCFjb3JlU3ViZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGNv
cmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5F
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCitSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2lu
RWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIEFTU0VSVChwYXJhbU5hbWVzLnNpemUoKSA9
PSBwYXJhbVZhbHVlcy5zaXplKCkpOwogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwpAQCAt
MTQyMSwxMiArMTQyMSwxMiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbgogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUt
PnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMs
IHBhcmFtZXRlcnMubWltZVR5cGUpOwogICAgIGlmICghcGx1Z2luKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gUGx1Z2luVmlldzo6Y3Jl
YXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5yZWxlYXNlKCksIHBhcmFtZXRlcnMpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGx1Z2luRWxlbWVudCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDNjYjE1ZTk0OTQ4MTZmNTE4ZmU2NjUwNzBiMzI0YjZmZTU0ODc3YzUuLjU5MGY5NzEwM2Y1
OWYwNjhkY2QyOWIzMjc0OTkwNTg4ZTY5ZjVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291
cmNlUmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNh
Y2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwpAQCAtMTg1LDEwICsxODUsMTAg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
LCBib29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgb3ZlcnJpZGU7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggMTIwMjcxOTE4NzI5OTFmOWYyMGM0ODBkZWNlNmVlZDI3YmE1ZGMzMS4uM2QzYmQwN2Mx
NDQ4ZjNiNTE1NjVhM2U2N2I5ZTQ3YzVkYTg0MzJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQxLDE0ICsyNDEsMTQgQEAgcHJpdmF0
ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVy
LCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1QYXNzUmVmUHRyPFdlYlBhZ2U+IFdl
YlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
LSAgICBSZWZQdHI8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKG5ldyBXZWJQYWdlKHBhZ2VJRCwg
cGFyYW1ldGVycykpOworICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQ
YWdlKHBhZ2VJRCwgcGFyYW1ldGVycykpOwogCiAgICAgaWYgKHBhZ2UtPnBhZ2VHcm91cCgpLT5p
c1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5q
ZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRC
dW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLmdldCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsK
IAotICAgIHJldHVybiBwYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHBhZ2Up
OwogfQogCiBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTQ5MDgsMTYgKzQ5MDgsMTYgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJf
dD4gc2Nyb2xsYmFyU3R5bGUpCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnJlY2Fs
Y3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0
ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdlYkRvY3VtZW50TG9h
ZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwg
c3Vic3RpdHV0ZURhdGEpOworICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2Fk
ZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsK
IAogICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgJiYgZnJhbWUuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2aWdhdGlvbklEKG1fcGVuZGluZ05hdmln
YXRpb25JRCk7CiAgICAgICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IDA7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3Zl
KGRvY3VtZW50TG9hZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW1lJiBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3YTQw
MDQ4NzEwZDg5YjFkZDU4NjAwODA0ZjViODZiYTkxYTQzYTQuLjA1ZWVkOGI3YzNjYzQyMTljMDQ1
ODcxNGE2YmI5OTIzN2Y4NDIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CiAK
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlPiBj
cmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CisgICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZSgpOwogCiAg
ICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKQEAgLTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpPcHRpb25hbDxXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0
dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9h
ZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3Vt
ZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAogICAgIHZv
aWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMTEyMSw3ICsx
MTIxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKLSAg
ICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQsIE5TRGlj
dGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCk7
CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGltbWVkaWF0
ZUFjdGlvbkRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOGY5ODY2ZDYzZmZlY2IwZTgyOTk2ZDg3
NzEzYWU2NDQzNjc5OGJjMS4uYTQwYzgyZDk2NTkwNjFhMTZlZGUwYjEzY2IyNDVmZWIwNWFlNGQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtSW1t
ZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0KGltbWVkaWF0ZUFjdGlvblJlc3VsdCwgaW1tZWRpYXRlQWN0aW9uSGl0VGVzdFBy
ZXZlbnRzRGVmYXVsdCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9p
bnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Jl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQ
b2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQog
ewogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAg
ICAgaWYgKCFtYWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygpLT5yZW5kZXJWaWV3
KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257033</attachid>
            <date>2015-07-18 15:33:55 -0700</date>
            <delta_ts>2015-07-18 17:18:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146995-20150719073243.patch</filename>
            <type>text/plain</type>
            <size>118975</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRkYmY4NzcxNjNjOTE2
OGI4MDUxMWZjYzY2YjYwNzNkNTA0NDRhMi4uYTAzMTFhY2E3ZjQ2YzBhNzZhOWVkNzkxNzJmODBh
NmFmNGM3NDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTE4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFz
c1JlZlB0ciBpbiBXZWJLaXQyIC0gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVz
LgorCisgICAgICAgIFRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBhdGNoIHJlZHVjZXMgdXNl
IG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0Mi4KKyAgICAgICAgQmVjYXVzZSBzb21lIHVzZXMgZGVw
ZW5kIG9uIFdlYkNvcmUsIFdlYkNvcmUsIFdLMSBwb3J0cyBhcmUgbW9kaWZpZWQgYXMgd2VsbC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6cmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0
cmVhbUxvYWQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJU
aWxlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorCiAyMDE1LTA3LTE4ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE4Njk3Nik6IFVz
ZSBwaUZsb2F0IGluc3RlYWQgb2YgTV9QSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGE0OGU1MTQ4ZjM1
ODVlOTI1ZTUyMzBhMjQwYjAxOThkNTM5ZGU5NjYuLjFmYjE3MjVhM2Y0YTI0MjY2OGIwZTUwYzQy
ODA3MjAzYzk5NGUyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
Ny0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmVkdWNlIFBhc3NSZWZQdHIgaW4gV2ViS2l0MiAtIDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
bmllbCBCYXRlcy4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBwYXRjaCBy
ZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1c2Ugc29t
ZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1vZGlmaWVk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKwog
MjAxNS0wNy0xNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gRnVydGhlciB0aWdodGVuIHRoZSBzYW5kYm94IGFyb3VuZCBwYWdlcyBmZXRjaGVkIHdpdGgg
Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRlMzRh
YmJjNmE5Y2I1ZDExNTcxNGE5NTQwMWI3MmM2YzVlMDc4NzAuLjI0NWUyMGM1YjczN2E1ZTk3MDQz
YzgwMDhmOTNiMjQwMmRmMzkwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNS0wNy0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVkdWNlIFBhc3NSZWZQdHIgaW4gV2ViS2l0MiAtIDMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njk5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBUbyByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBw
YXRjaCByZWR1Y2VzIHVzZSBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIuCisgICAgICAgIEJlY2F1
c2Ugc29tZSB1c2VzIGRlcGVuZCBvbiBXZWJDb3JlLCBXZWJDb3JlLCBXSzEgcG9ydHMgYXJlIG1v
ZGlmaWVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1l
bnRMb2FkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisKIDIwMTUtMDctMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dpbl0gR3Jvc3Mgd29ya2Fyb3VuZCB0byBmaXggYnVpbGQgYWZ0ZXIgcjE4Njg1
OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBjMDI1ODY3Mzg0ZDQ2NmNkNTNiMDczYTRmZjVjMzQ5Zjk0NTM1ODQw
Li4wNTc3YTY2YWEyOWI3OTU3ZmE2OGY2OGU5NTQ4MzE5YTJhMTIzN2Q3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA3IEBACisyMDE1LTA3LTE4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUGFzc1JlZlB0ciBpbiBXZWJLaXQyIC0gMwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTk1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgIFRvIHJlbW92ZSBQ
YXNzUmVmUHRyLCB0aGlzIHBhdGNoIHJlZHVjZXMgdXNlIG9mIFBhc3NSZWZQdHIgaW4gV2ViS2l0
Mi4KKyAgICAgICAgQmVjYXVzZSBzb21lIHVzZXMgZGVwZW5kIG9uIFdlYkNvcmUsIFdlYkNvcmUs
IFdLMSBwb3J0cyBhcmUgbW9kaWZpZWQgYXMgd2VsbC4KKworICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nl
c3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6dGFrZUluaXRpYWxpemF0aW9uUmVwbHkpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6
OndlYkNyeXB0b01hc3RlcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01h
c3RlcktleSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlj
a2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlQ29s
b3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdFZmw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpjcmVhdGVDb2xvclBpY2tlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1l
bnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6c25hcHNob3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm94eTo6bGl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNvcHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvSGlzdG9yeUl0ZW0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdp
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbik6CisKIDIwMTUt
MDctMTcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZ1
cnRoZXIgdGlnaHRlbiB0aGUgc2FuZGJveCBhcm91bmQgcGFnZXMgZmV0Y2hlZCB3aXRoIENvbnRl
bnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggOTU1YTljZjlkZGM2ZDUyYTUxNThkMzRhZmVkYzlhOWEwZTViNjE4Yi4uZWE5
MjU1YzgyMGYyM2Q0YTk0Y2Q1ZGNjMmFiMGVmYzk2YzE1NjJlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgRW1wdHlTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
IHsKICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1
YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgb3ZlcnJpZGUg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBvdmVycmlkZSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAgICB2aXJ0
dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4pIG92ZXJyaWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsg
fQorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBv
dmVycmlkZSB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQog
ICAgIH07CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIG92ZXJyaWRlCkBAIC0xNDYsMTIg
KzE0NiwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxFbXB0eVBvcHVwTWVudT4gbV9wb3B1cDsK
IH07CiAKLVBhc3NSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlUG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CitSZWZQdHI8UG9wdXBNZW51PiBFbXB0eUNo
cm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsKIH0KIAotUGFzc1JlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QKK1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IEVtcHR5
Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOwog
fQpAQCAtMTgzLDE5ICsxODMsMTkgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWUKIHsKIH0KIAot
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAg
IHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsK
IH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpCitSZWZQdHI8RnJhbWU+IEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQogewotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQorUmVmUHRyPFdpZGdldD4gRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0lu
RWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQogewotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRl
UGx1Z2luKFdpZGdldCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTM4
MTIwMzhiZjZkZTVkMGE4MjcwMTU3Y2NmMTdkYjZlN2MxMzE0OS4uOGM1N2Q2ZTRkYWU2YmU2NDA2
MTc5ZmFlYWY0MjRmYzE1ZGI4NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aApAQCAtMTE4LDggKzExOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRl
bVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGly
ZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFz
T3BlbmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2VhcmNoUG9wdXBN
ZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZSB7IH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWY8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBVUkwmKSBvdmVycmlkZSB7IH0KIApAQCAtMzcwLDggKzM3MCw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIG92ZXJyaWRlIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBVUkwmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwg
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwMDNkMmUxMDVmNTQ5NmJiMWJiNTMyNDU5
YmFkOWU5ZDNlNjVmY2M2Li4yZGFmNDA0NWQ1N2FkMGI3NDczNzJmNTIwOTFiMGE4MDAwZGE2Zjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBA
QCBGcmFtZUxvYWRlcjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQog
ewogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUg
YW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KLSAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlciht
X2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVS
TFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAg
c2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVz
b3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3Rp
dHV0ZURhdGEoKSkucHRyKCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9w
b2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApAQCAtMTMyNSwxNiArMTMyNSwxNiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJl
cXVlc3QpCiAgICAgaWYgKCFyZXF1ZXN0Lmhhc1N1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgIHJl
cXVlc3Quc2V0U3Vic3RpdHV0ZURhdGEoZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudExvYWRl
cj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdC5zdWJzdGl0dXRlRGF0YSgpKTsKLSAgICBhcHBseVNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKCpsb2FkZXIsIHJlcXVlc3Qu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXBwbHlTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIHJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKIAotICAgIGxvYWQobG9hZGVyLmdldCgpKTsK
KyAgICBsb2FkKGxvYWRlci5wdHIoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9h
ZFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKIHsKLSAgICBSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVy
KHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0g
ICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigq
bG9hZGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBSZWY8
RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJl
cXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAg
YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2Fk
ZXIsIGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogCiAgICAgaWYgKGxv
Y2tIaXN0b3J5ID09IExvY2tIaXN0b3J5OjpZZXMgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAg
ICAgbG9hZGVyLT5zZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExv
YWRlci0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51
cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkoKSk7CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBsb2FkZXItPnNl
dE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsK
IAotICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCB0eXBlLCBmb3JtU3Rh
dGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgbG9hZFdpdGhEb2N1bWVudExv
YWRlcihsb2FkZXIucHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3
RG9jdW1lbnRMb2FkZXIpCkBAIC0xNTU0LDE0ICsxNTU0LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAg
Ly8gV2Ugc2hvdWxkIGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGluIHRoaXMgY2FzZS4K
ICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAot
ICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1l
bnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJs
KCkpKTsKLSAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKCpsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0
YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAotICAgIHNldFBvbGljeURv
Y3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIo
bG9hZGVyLnB0cigpKTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGlu
Zyk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5nZXQoKSwgRnJhbWVMb2Fk
VHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CisgICAg
bG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKQEAgLTE1ODIsOCArMTU4Miw4IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IGRvY3VtZW50IGxvYWRlciBmb3IgdGhlIHJlbG9hZCwgdGhpcyB3aWxsIGJl
Y29tZSBtX2RvY3VtZW50TG9hZGVyIGV2ZW50dWFsbHksCiAgICAgLy8gYnV0IGZpcnN0IGl0IGhh
cyB0byBiZSB0aGUgInBvbGljeSIgZG9jdW1lbnQgbG9hZGVyLCBhbmQgdGhlbiB0aGUgInByb3Zp
c2lvbmFsIiBkb2N1bWVudCBsb2FkZXIuCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVs
dFN1YnN0aXR1dGVEYXRhRm9yVVJMKGluaXRpYWxSZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBwbHlT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcigqbG9hZGVyLCBt
X2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUo
KSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1
bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGlu
aXRpYWxSZXF1ZXN0LnVybCgpKSk7CisgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9OZXdEb2N1bWVudExvYWRlcihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIGxvYWRl
ci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5n
KCkpOwogICAgIAotICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBlbmRU
b0VuZFJlbG9hZCA/IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gOiBGcmFtZUxvYWRU
eXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKKyAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBB
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9u
YWxJdGVtUG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBjMTNhMTk2MWY0MmNiODdkODBjMDVmZjMxYmU0Y2JiNTRmZTRhNTYyLi5jOWRmZjIyYjk3
ZjRmYmMzZmEwNjRhOTUzZWIwNTdlYzBhODM5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVy
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYsIGNvbnN0IFVSTCYpID0gMDsKIApAQCAtMjcxLDggKzI3MSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxv
d3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0
ZVBsdWdpbihXaWRnZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkwNzEzMTBiZTA2MDViMTgx
OWQyZjYzY2I4NjQ1ODcyODY5NDc3NjYuLjFhZTNmYmNhMTNjZGFkOGEwYzU4YjMyYjJlM2VjMjJl
MDY1YmFiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+UmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSog
ZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJj
ZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlm
IChsb2FkZXIpCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYQog
ICAgIGlmICghbG9hZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gbG9hZGVyOwogfQogCi1QYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChG
cmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQo
RnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUGFzc1JlZlB0cjxOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6
OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0KTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVh
dGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSk7CiAgICAgcmV0dXJuIGxvYWRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA5ZmI5ZmI0YTc1MDU5
MmQzYzI5OGNlYWQ4NjQzN2UwYzIyNGM4NTQzLi5iMDVkYTA0NDlhYmY3MTMxNTgzYWUyMDFhZTA0
M2E4YjhlZWQ4NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5oCkBAIC01MSw4ICs1MSw4IEBAIGNsYXNzIFJlc291cmNlTG9hZFNjaGVkdWxlciB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxl
ciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZy
YW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChG
cmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkZXIqLCBib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJM
JiByZWRpcmVjdFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAwODA4MzE2NzA3NTI4NGNhNDQ0Y2U1NDMxNTI5ZWEwMzY3NzI0ZWFkLi4wM2Yw
NTg4NTNkZmNjNWJiMTdjZjk1MmQ4ZmYyNTQxMWRlYTExMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgU3VicmVzb3Vy
Y2VMb2FkZXI6On5TdWJyZXNvdXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUs
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihmcmFtZSwg
cmVzb3VyY2UsIG9wdGlvbnMpKSk7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA4LDcgKzEwOCw3
IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvCiAjZW5kaWYKICAgICBpZiAoIXN1YmxvYWRlci0+
aW5pdChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN1Ymxv
YWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1YmxvYWRlcjsKIH0KICAgICAKICNpZiBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4
IGRmMDQzMmFkY2ExNGI5OGI0NDAxYmFiNGIyMmZmODUwOWZmNWUzOWEuLmEwODkwMWI1NTVkODRl
YTQ2YzQ1ZWU2ZTk4OGU1YzRmYjhlM2RjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IAogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIg
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hl
ZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJik7CiAKICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKaW5kZXggNDRlMjMyNjgyMjY1NjU2NWI2YmNlZmNiNTRlNjFjNmM4ZjQ5NTAz
OS4uZDJiZmM2NTNjYmZlYzEzMDE1NDY0MjAwNjdlYWE0MDg4MDk1YWVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcApAQCAtNTQ4LDEzICs1NDgsMTMgQEAgYm9vbCBDaHJvbWU6Omhhc09wZW5lZFBv
cHVwKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQuaGFzT3BlbmVkUG9wdXAoKTsKIH0KIAot
UGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZTo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgbm90aWZ5UG9wdXBP
cGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZVBvcHVwTWVudShj
bGllbnQpOwogfQogCi1QYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lOjpjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CitSZWZQdHI8U2Vh
cmNoUG9wdXBNZW51PiBDaHJvbWU6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkgY29uc3QKIHsKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsK
ICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCAyMjI1MTg0YzhiZjViMDRkZmMwMDgwZGY5Y2E5N2Q0Mjk0N2M2OGI5
Li5jMGJkODU4ODA3ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKQEAgLTE3Myw4ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwogICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZv
bGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwogICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBj
b25zdDsKLSAgICBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCopIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisgICAgUmVmUHRyPFBvcHVw
TWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFJlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIGNvbWUg
dXAgd2l0aCBhIGJldHRlciBuYW1lIGZvciB0aGlzIHNldHRlcj8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDQ3ODZlYzgwNWU1OWI4ODRhNjA3MzdmOTA0YTI4MDRhMGFkY2NkZDgu
LjRmODE0M2QyYjFmZTFjZjMzOWM0OGY2ZTY3NzMxMjgyMDE4ZTQwOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzc1LDggKzM3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpID0g
MDsKICAgICAvLyBDaGVja3MgaWYgdGhlcmUgaXMgYW4gb3BlbmVkIHBvcHVwLCBjYWxsZWQgYnkg
UmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpLgogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQ
b3B1cCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVh
dGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVD
bGllbnQqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCop
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24p
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA3OTI3YTQ5
YjQzODUzZGNjMTMxZTdiNzU2NzgyYTQwMjc0ZmIzNTQ4Li4wNzZkMDFiZTk0MDVlMWMwNDE1ODkw
NTk3OWFlNjRkZjEzY2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIAogY2xhc3MgVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwg
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50
IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAyZTc2ZDdjZGQw
ZTE4OWFlZGZmNjhiMTEyOWZkMWE3ODIzYThiYTZjLi4wYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBm
N2ZlN2EyZTI2M2FjYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNDIsNyArMTQy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4
dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSk7CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50
ZXh0dXJlKCkgOiAwOyB9CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJl
dHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9CiAg
ICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5w
b3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBi
b29sIGlzQW5jZXN0b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAppbmRleCBiMzNiYmI2MjkzMDA1ZWZmNmFmMzc2YzQx
NDE4ZWRhYzU1MDhhMTBhLi5lOTdmY2Q4OWMyYzgxYmZmMTc4ZWE5YjVjNGZlM2U4NjYwNGM0MTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCkKICAgICAgICAgbV9ncmFwaGljc1N1cmZh
Y2UtPnN3YXBCdWZmZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAorUmVmUHRyPEJpdG1h
cFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBhbiBlbXB0eSB0
ZXh0dXJlLCB3ZSBzaG91bGQgd3JhcCB0aGUgdGV4dHVyZSBjb250ZW50cyBpbnRvIGEgQml0bWFw
VGV4dHVyZS4KICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gZW1wdHlUZXh0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCAzMWQxODE5
MmNkM2VmMGFiNDY4NjgxY2JmZTVhZGZlOTY4MzUzOGJiLi4yMjRiODA2MDUyMDg1ZTdlMzYyOTlm
ZGQ0OWU2ZDAyZDZjYTcwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KICAg
ICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwog
ICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oCmluZGV4IDY0OGU3MWYwMGEwOWFhZjdiYmZlMzkyODBlYzBlYTc3ZWIxNDg2ZGYuLjdlMjIx
MmU1MjVmNDJmNTVkZWE4MTdhZWEwOWJkOTUyNWRhMzRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKIGNsYXNzIFRleHR1
cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgaW5saW5lIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9
CiAgICAgaW5saW5lIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAg
ICAgaW5saW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4
dHVyZSA9IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGQzNTcxMGE2OTI4MWE4MjA2MTZkZTMxMjEzM2M0
ZDNjN2ZmOTE3ZTguLjM2MjVjMTQ4NjQzMWQ0NDVhMmE5OTEzMjBlZjUxMDFmNDVmZTE2ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgdGlsZS51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVD
b250ZW50c0ZsYWcpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHRpbGUgOiBtX3RpbGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHRl
eHR1cmUgPSB0aWxlLnRleHR1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaAppbmRleCAyZjc5MmRjZjk0ODQ4ZDRiOGFiYjBhMjlmMTBkODMxODRlMzBm
NTlkLi40ZjNjY2U4OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVy
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRl
eHR1cmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50
Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlLmgKaW5kZXggMDljYTNkZTA0YmVjZDY1NzliYTI1NWZiYTFlMzMyNmFjMTFhNWJiYi4uYmRl
OTVmNTE4MDc3OWFmYTQ4MTllOTNiMzZmOTA1NTY4OWVlNDBlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3MgU3RvcmFn
ZUFyZWE7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFn
ZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7
IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFn
ZSkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDRkYTRkMTdmOGFlNTQ4MWYz
MDlmMzA3ZmMwYjk3ZTkxN2ZmNDNlNC4uNmFhMGYzMzE2OTlmZDAyOWUxMGJmYTczYTUxYWJkNTk2
ZWE3OTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5h
bWVzcGFjZUltcGwoKQogICAgICAgICBjbG9zZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwpAQCAtOTYs
MTAgKzk2LDEwIEBAIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNvcHkoUGFnZSopCiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1f
c3RvcmFnZUFyZWFNYXAuZW5kKCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3Ig
aSA9IG1fc3RvcmFnZUFyZWFNYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKICAgICAgICAgbmV3
TmFtZXNwYWNlLT5tX3N0b3JhZ2VBcmVhTWFwLnNldChpLT5rZXksIGktPnZhbHVlLT5jb3B5KCkp
OwotICAgIHJldHVybiBuZXdOYW1lc3BhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdOYW1l
c3BhY2U7CiB9CiAKLVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCitSZWZQ
dHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CkBAIC0xMDcsMTEgKzEwNywxMSBAQCBQ
YXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEo
UGFzc1JlZlB0cjxTZWN1cml0eU9yaQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gcHJwT3JpZ2luOwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwog
ICAgIGlmICgoc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAg
ICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHN0b3Jh
Z2VBcmVhOwogCiAgICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0
b3JhZ2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIsIG1fcXVvdGEpOwogICAgIG1fc3RvcmFn
ZUFyZWFNYXAuc2V0KG9yaWdpbi5yZWxlYXNlKCksIHN0b3JhZ2VBcmVhKTsKLSAgICByZXR1cm4g
c3RvcmFnZUFyZWEucmVsZWFzZSgpOworICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIH0KIAogdm9p
ZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCA1MjU5OTcxYzVlYzQwNjk3YmE3Y2ZiOWM0ZDkw
YTRjNmFjNmEyMmY3Li43MGM2YjU3MzE0ZTdjYmEzOWViMTlhM2M3OGE4NzFhN2NkOGJjNDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcs
OCArNTcsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4pICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pICBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2Uq
IG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBT
dG9yYWdlQXJlYU1hcCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAxYjU5MzVkYTlj
M2ZkYTM3MzIyMDE4MGZkZjBjMTY0NjQ2MTdkMjc3Li5iZDk0Y2U3NWUxN2VkOTBjMTMxMzRlMzlk
ZWVhZmIzNmJmNzI2NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtNzksOCArNzksOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51
V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51
PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2ViQXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoV2ViQ29yZTo6RWxlbWVu
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IDQ2Zjg3ZDhjYmMwMGZhMTExNmY0NzY2ZGRk
OWMxNDFlNWE0ZGFlNmUuLmI5Y2YxMzk3ODRlNmY1MjBlNGVjYTg2OWQ0YjJiNDlmM2ZkYzNkODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MubW0KQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
SU9TOjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNo
cm9tZUNsaWVudElPUzo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50
SU9TOjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnRJ
T1M6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVu
dElPUzo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51SU9T
KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAppbmRleCA1ZTNiMmRjYmNhZWE5NWNmZWFhZmI4ZTNiNmJmZGZiMzkz
NTVkYWJiLi5kNzU1ZmM3YzE5NmFjZDc4YmM2Y2JjYWY3NWIyYzZjNjZmNWI1ODQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMTg5LDggKzE4OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdy
aXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2Vs
ZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRs
ZXJzQ2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDIwZjZkNzI4MjQ0Njg2
ZmIzZDI2NWZhN2FkMTU1NzczNzBlNWZkZTYuLjFiOWNmOWMzYTdhMjYyNTIzMGU0MjMzZGMwNzkz
NmUwOTk4MDFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTg0Miw3ICs4NDIsNyBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRyPFdlYkNv
cmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudU1hYyhjbGllbnQpKTsKQEAgLTg1MSw3ICs4
NTEsNyBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9w
dXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogewogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVNYWMo
Y2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3Y2YxNThmOTZiNjM4YjcyOTQwMjY0MDllMTk3
MmUyNDU2MGJiMGQ3Li5jZDFmMjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2FmZjQ1MDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTE5MiwxNCArMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIG92ZXJyaWRlIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQqLAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRN
TEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0MWQwMTljNWViYjA3
YmZmYmU0Y2RkZjc2OGI4NzU0YTM5MjYzNjczLi4xMTNmYTgwNjdjNjE4YTQ4ODhhYWNhMjI5MzQx
NjRhZTZlOGE0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMyMiwxNSArMTMyMiwxNSBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRM
b2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlciA9IFdlYkRv
Y3VtZW50TG9hZGVyTWFjOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIFJl
ZjxXZWJEb2N1bWVudExvYWRlck1hYz4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXJNYWM6OmNy
ZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBXZWJEYXRhU291cmNlICpkYXRh
U291cmNlID0gW1tXZWJEYXRhU291cmNlIGFsbG9jXSBfaW5pdFdpdGhEb2N1bWVudExvYWRlcjps
b2FkZXIuZ2V0KCldOworICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbW1dlYkRhdGFT
b3VyY2UgYWxsb2NdIF9pbml0V2l0aERvY3VtZW50TG9hZGVyOmxvYWRlci5wdHIoKV07CiAgICAg
bG9hZGVyLT5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UsIGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSkpOwogICAgIFtkYXRhU291cmNlIHJlbGVhc2VdOwogCi0gICAgcmV0dXJuIGxvYWRlci5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShsb2FkZXIpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRs
ZSwgY29uc3QgVVJMJiB1cmwpCkBAIC0xNjA4LDcgKzE2MDgsNyBAQCBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Q
YXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ckVsZW1lbnQsCitSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTE2MjcsMTkgKzE2MjcsMTkgQEAgUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5
IGhhdmUgcnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHRoYXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBw
YWdlIGFscmVhZHkuCiAgICAgaWYgKCFyZXN1bHQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogIAogICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSkt
PmxvYWRlcigpLmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCByZXN1bHQuZ2V0
KCkpOwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3Zl
ZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KICAgICBpZiAoIXJlc3VsdC0+dHJlZSgpLnBhcmVudCgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcykKQEAgLTE5MDcsNyArMTkwNyw3IEBAIHByaXZhdGU6CiAK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotUGFzc1JlZlB0cjxXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6
ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLAorUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBz
aXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsCiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgUGFz
c1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgSFRNTFAKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRG9jdW1lbnRMb2FkZXJNYWMuaAppbmRleCBiMmNjMzc1OGY3YjMwNzZm
YWVjNTQ4MzM1N2I3MzkzYTBlYTFkYjMyLi5lODAzMTRiMmEwODk0ODRhNGEyZTQ5ZTYwOTc0ZmU2
MDk3YjFmNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRvY3Vt
ZW50TG9hZGVyTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEb2N1bWVu
dExvYWRlck1hYy5oCkBAIC0zOSw5ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViRG9jdW1lbnRMb2FkZXJNYWMgOiBwdWJsaWMgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkRvY3VtZW50TG9hZGVyTWFjPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YSYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPFdlYkRvY3VtZW50TG9h
ZGVyTWFjPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViRG9jdW1lbnRMb2FkZXJNYWMocmVxdWVzdCwgZGF0YSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEb2N1bWVudExvYWRlck1hYyhyZXF1ZXN0LCBk
YXRhKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXREYXRhU291cmNlKFdlYkRhdGFTb3VyY2UgKiwg
V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDZmOGU1ZGM0N2Y4ZThkMDgxZjQ3ODRlOTg0MmQ0OTY5
MWNjNWNlNy4uMTg5MDZkZjA0Njk5YWJiNzdkNDI4NGExZjg5YmM4YTlmN2QxMWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC03ODAsMTIgKzc4MCwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6aGFzT3BlbmVk
UG9wdXAoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxQb3B1cE1l
bnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSBjb25zdAorUmVmUHRyPFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2VhcmNoUG9w
dXBNZW51PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkgY29uc3QKK1JlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51V2luKGNsaWVudCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCAyNTFmODYyZjQzYjgwZDgyZjI3YWQ4ZTgyMTMxOTBiZGEwMzc1ZjhmLi5m
NjNhY2VmYWQzMWM3MDI2OTc4M2MwNTdkOTQyYmFmMWJjYWNiZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTUxLDgg
KzE1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJl
Y3Rpb25Jc05hdHVyYWwoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZv
bGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQ
b3B1cCgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wg
d2l0aEtleWJvYXJkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwY2JkMTkzZThmZDBmZGFkNjU3
NGYzZDVmNGIxODJkMWRhMWZiYTg5Li4yNzMyNWJhODE5MWNjMjFmMmEzNGJjM2I0NmFkMDk0YWZh
NzM2ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05NDksMTQgKzk0OSwxNCBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8
RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9
IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAg
IFJlZjxXZWJEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0
ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKICAgICBDT01QdHI8V2ViRGF0YVNvdXJjZT4g
ZGF0YVNvdXJjZShBZG9wdENPTSwgV2ViRGF0YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UobG9hZGVy
LmdldCgpKSk7CiAKICAgICBsb2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNvdXJjZS5nZXQoKSk7
Ci0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShsb2Fk
ZXIpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA4N2I2ZDUxNmFjMzlhOWEwMmVhYzVlN2I1MWVhNzgxYzY2NDMyMTk2Li5jMzhmZjJmYjFhMzQy
M2E3MTU0OWNmODNlMWViZmNjZTQ3MGRlYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1MSw3ICsx
NTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKKyAgICB2
aXJ0dWFsIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJik7CkBAIC0xODAsOSArMTgwLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LAorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50KiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29s
IGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFs
bHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpX
aWRnZXQqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVn
aW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IDRj
MzEwM2Q1ZTIwNzc3NjFhZTdiYzNkYjdiOGYxODY0NDNkNTU1ZTMuLjYxNjUzY2FjMTc4ZDM0ZmFh
NDY5ZmYxMDZlNTA1NGY3ZDc3OTAzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgRGF0
YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKIH0KIAotUGFz
c1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKK1JlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gRGF0YWJhc2VQcm9jZXNzOjpnZXRPckNy
ZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faWRiRGF0YWJhc2VzLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIFBhc3NSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShjb25zCiAKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IGRhdGFiYXNlID0gVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZShpZGVudGlmaWVyKTsKICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gZGF0YWJhc2UuZ2V0KCk7Ci0gICAgcmV0dXJuIGRhdGFiYXNlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gZGF0YWJhc2U7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpyZW1v
dmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5k
ZXggNTlhNjE4YmU0MDU5NWMyOGMyMmJkYjJlOWNhMjE4MTc5NmQyM2M2OS4uNDdjNjkyNTg2Y2Zm
OWQzMGU5Y2Q3MTg2MzQ0Y2I5MzdmMGZlZjY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKLSAgICBQYXNzUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1
ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXImKTsKICAgICB2b2lkIHJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlE
QkRhdGFiYXNlJik7CiAKICAgICB2b2lkIGVuc3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0
aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA0YTlmNDY3ZTg3OGRlODFj
NjYxYmRlZDM1ZDc2MTY2MzA2MTFjNDdjLi5hNTZkOTI1MDNhOGU5MGU5OTkyY2Y3NzBhMjZlYzIy
MzJhMjRmN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC05Nyw5ICs5Nyw5IEBAIHZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpzZXRJbml0aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2NlCiAgICAgbV9pbml0aWFsaXphdGlvblJlcGx5ID0gcmVwbHk7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5
ZWRSZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBseSgp
CitSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRl
bGF5ZWRSZXBseT4gUGx1Z2luQ29udHJvbGxlclByb3h5Ojp0YWtlSW5pdGlhbGl6YXRpb25SZXBs
eSgpCiB7Ci0gICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1faW5pdGlhbGl6YXRpb25SZXBseTsKIH0KIAogYm9vbCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OmluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlv
blBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5ZWVkMmU3MTE4YzcxZjg3ZDM2ZTlmZDJlNmZiMDQ4
MjhjNzNhNzdjLi4yZTMzM2Y0ZmM3YTBkYjg5MjM4Mjk1M2I0ODIwMjIzMWY1OGUyYWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbml0aWFsaXppbmco
KSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6aW5nOyB9CiAgICAgCiAgICAgdm9pZCBzZXRJ
bml0aWFsaXphdGlvblJlcGx5KFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4pOwotICAgIFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gdGFr
ZUluaXRpYWxpemF0aW9uUmVwbHkoKTsKKyAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3ND
b25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OkRlbGF5ZWRSZXBseT4gdGFrZUluaXRpYWxpemF0aW9u
UmVwbHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UGFpbnRUaW1lcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGM2NmQyOGI3NTM5NzRhMDU3
NDBjYjZhZjY4ZTJjNDg0ODFkOTNjMzIuLjUxZGIwOGNlMzYwYmY4YWNmYjYwYTNlYmM4MDA4ZTBm
MmE5NDAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1
aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKICAgICBpdC0+dmFsdWUuc2V0
QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKIH0K
IAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4
dHVyZSgpIGNvbnN0CitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnRleHR1cmUoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFs
dWVzKCkpIHsKICAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0aWxlLnRl
eHR1cmUoKTsKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZTsKICAgICB9CiAKLSAgICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigp
OworICAgIHJldHVybiBSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKIH0KIAogdm9pZCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBkOTAzNDlkNjNhNWY4YjQ2ZjY2NmNl
YzYyMTQ2YjYyNWMwNDNjM2I0Li41ZGFmYTAxMTI4N2U5YWNhNDI3NDQyYjNlZDY3YzdhZDkzYzVk
YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTYxLDkgKzYx
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVGlsZXMoKTsKICAgICB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGls
ZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsg
fQorICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBj
b21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IDZiOGQxMWRhNzI3ZTBhZDU0
NWM5ZWUzYzVmNmY3NDRiOWUwODRhZWEuLjBkZDMwNjRlZTNiODkzZjViOGYwMmU4ZjNkMjA4MDMx
MDVjZTZlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtNjks
NyArNjksNyBAQCBib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoSVBD
OjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhbmRsZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBm
bGFncykKK1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Mg
ZmxhZ3MpCiB7CiAgICAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKQEAgLTc5LDExICs3OSwxMSBAQCBQYXNzUmVmUHRyPFdl
YkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgcwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgc3VyZmFjZSA9IGNyZWF0ZShz
aXplLCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgKGZsYWdz
ICYgU3VwcG9ydHNBbHBoYSkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBTaGFy
ZWFibGVCaXRtYXA6Ok5vRmxhZ3MpKTsKIAotICAgIHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotUGFz
c1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpG
bGFncyBmbGFncykKK1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKIHsKICAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1
cmZhY2VGbGFncyA9CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2FyZVdy
aXRlCkBAIC05Nyw3ICs5Nyw3IEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0CiAgICAgLy8gSW4g
dGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxs
aW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFwLgogICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+
IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwog
ICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQVNTRVJUKHN1cmZhY2UpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlLnJlbGVhc2UoKSkpOwpAQCAt
MTQ2LDcgKzE0Niw3IEBAIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6fldlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKK1JlZlB0cjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhh
bmRsZSYgaGFuZGxlKQogewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGlmIChoYW5k
bGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKQEAgLTE2MSw3ICsxNjEsNyBA
QCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYQogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKTsK
ICAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywg
Yml0bWFwLnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmlu
ZGV4IDdkYzE2ZjJjMDQzYmZiNWZjNGQzOTIzZTMzMWVkNWFjMWY2MzQzZmEuLjhhMThmNjA3Njk2
YmZhMGI3MGNkYTJjMGRiNzg0Nzk2YWU0ODY2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oCkBAIC02MSwxMCArNjEsMTAgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBD
cmVhdGUgYSBuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEg
R3JhcGhpY3NTdXJmYWNlIG9yIGEgU2hhcmVhYmxlQml0bWFwIGFzIGJhY2tpbmcuCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBD
cmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOworICAg
IHN0YXRpYyBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgSGFuZGxl
Jik7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFu
ZGxlJik7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCiAgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKICAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFj
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgRmxhZ3MpOwogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZl
cmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCiAgICAgc3RhdGljIFJlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IGU0NTg4NmE1ZGJiYjBm
NTEyN2Q1MzIwZmE5M2FjNzM4MTc2ZjM3ZjYuLjZlOTViMGZlYTZlZDQ2MGFkNmMzZDA2MzI1Yzgx
ZmYyNTk4MTk1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSopIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgQVBJOjpPYmplY3Qq
KSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXko
V2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBS
ZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmgKaW5kZXggZDAzOGJmMWYxMDUxZjlmOTRhN2U2NzM5NzFlYjY1MGJmNjhlZGU4OC4u
NDEyNTNjNmQxNzdhNWZhYzE0YmZhMDVkNDM0NGIxMmI2MzVlNjUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3Qg
YmUgcGFydCBvZiB0aGlzIGNsaWVudC4KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0
YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHV0aSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IDRhM2UzYTk0N2ZhZGJhZDlkNGJiNjBjNjYxM2Q1Yzc5MDA2ZmM2MWUuLjhiNmI4OTNmYTE5MjQx
MGIzOGEzOWEyMTAwNGY4OWU0ZTM4NzAzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCkBAIC0xMTUwLDcgKzExNTAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqCiAgICAgICAgICAgICAgICAgbV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KHRvQVBJKCZwYWdlKSwgdG9BUEkoaXRlbSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxB
UEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IHBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY2xpZW50KCkuY29weVdlYkNyeXB0b01hc3Rl
cktleSgmcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSk7CiAgICAgICAgIH0KQEAgLTE5MzEs
NyArMTkzMSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICBtX2NsaWVu
dC53ZWJQcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAg
dmlydHVhbCBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5
JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNv
cHlXZWJDcnlwdG9NYXN0ZXJLZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggNjBkOGEwZjU2Zjk4MDBmNzUzNTAyNTg5MjMwZGUzNzBjZDljMmFlYy4uNWMxNmJm
ODJkNWFkMDZhNGZiYTJjNzEwOWVlMzMzOWE3NTBkNWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjA2LDE3ICsy
MDYsMTcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2
ZW50Lm5hdGl2ZUV2ZW50KCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQor
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94
eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KiBwYWdlKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICBy
ZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQog
ewogICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSkKICAgICAgICAgcmV0
dXJuIFdlYktpdENvbG9yQ2hvb3Nlcjo6Y3JlYXRlKCpwYWdlLCBjb2xvciwgcmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRl
eCBiYzViNjM1YzFjOWI0YTlhMDUxZTU1MDFjZDBhMzE0ZjM2ODI0MDBmLi4xY2JmMzQ4NWVlMTNm
ZDFjMzBmNzhmNDQ0Njc5ZDlkY2VjNmU2YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTgyLDEwICs4MiwxMCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVBy
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2Vi
UGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4
dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCmluZGV4
IDQ5Y2UxM2Q1NzY5YWIzNDQ0ZjIzM2NjODZkYTdhNjgxM2Q0ZGI1MzYuLmVhYWExZjcwYzZkODVk
NTQ2OTc0YjdiOTA2YTQwNmE2NGQ4ZmUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKaW5kZXggMjA1
NjRmNzU2N2M5MTE2YWQ2MGEwY2M4OTQ3OTY4MTRjOTY0NjBjMy4uMjhiZWJhNmU4YzBjODY3MWY2
OTkxYjFlN2EzMjg0ZGViYTNjMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm90ZWN0aW9uU3BhY2UuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9D
b3JyZWN0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvQ29ycmVj
dGlvbkNhbGxiYWNrLmgKaW5kZXggODc4NjBiZDBjNzAxZTU3ZGM0MmM4NWFiYzg5ODdhMjI5Yzdi
OWY0My4uNzUyZTRjYzU4MTA5MzJlNjAwYzFhZTMwZTRhYjIwMTRjNGZhZjg5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CmluZGV4IGQ1NTI2YTE1NjRlZDg0ZmY5MjgyNWIzOGQ1NDMwZjE3NjdlMWI1MmEuLmRiZDg5NDM5
MjUyNGIzODg2ZDU5NTIzYThkYjUzMGI3NzQ3ZDczMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UoV2ViUGFnZVByb3h5JiwgV2ViUHJvdGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UGFnZVByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJL
ZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6
RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA2MGFkYmQ0YjNjYzc3MjY0ZGVm
ZmU1ZTdhZTNlMzIzYjIzOTUxZjU2Li42NGQwNzM1MzA3MzJmZDQ3Y2E4NWY4YTI3NTA1NTNiYjMy
ODVmMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYQog
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaDptX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXddOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKQorUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKQogewogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNy
eXB0b01hc3RlcktleUZvcldlYlZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmNwcAppbmRleCA1OTliNjMzODAyOTVhYzkyM2QyMTFlN2JjY2I5YjNiMzk0ZTJkY2FiLi5i
NmVmNjM5NjU0Zjc3NzMwYmQxMTJjNTYxNTE2YTE3ZmU4MTNlMGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNw
cApAQCAtNDMwLDIzICs0MzAsMjMgQEAgdm9pZCBXZWJWaWV3Ojpkb25lV2l0aFRvdWNoRXZlbnQo
Y29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnQKIH0KICNlbmRp
ZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3OjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKQorUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3OjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCmluZGV4IDJm
Y2Q2NDBhZTk4OGVjNDc2MzcwMGE4N2RhYjRjYzAwMzk0NzliZTkuLmQ0NTM3MjQ3YWI5MzdkMWI1
ZjVmOGMyZGY4ZDY3MGRhNWMwYzlkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFn
ZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNr
ZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCAwZjhkMjQwNDdlNmQ1MThlZjk5MDI0NmFmOGY5MzZjZjQx
NTlhYzM4Li41ZGMzZTUwZjFiNGE1NjQxZWE2MzYxZjdhOTg1ZDIxNWY5MzM5NmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTIxMCwxMSArMjEwLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopID0gMDsKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
aXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWUgPSBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDliNjA5ZDBjNTI0NmNkYTQxMzVkM2Y2
NDE0YmVmYzFlNTViMzhmMTguLmJkY2U3Y2Q4ZTIzODYzNmQ1MzhlZTgxY2RkMGI3MmViNDViYTkw
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTczMCw3ICs3
MzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBt
YWtlRmlyc3RSZXNwb25kZXIoKTsKIAogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCmluZGV4IDNkY2Zk
ZGMwNzg4NWZmMjQxMWFjODI5MjJlZmI4MTJmNjc3MGQzMjAuLmI1NTcwNzhiNjZhODhiNjg0M2Iw
N2U4MmU0YzE1NzkyYmQwYjhjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3RWZsLmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHZvaWQgV2ViVmlld0VmbDo6cGFpbnRU
b0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgc2NlbmUtPnBhaW50
VG9HcmFwaGljc0NvbnRleHQoJmNvbnRleHQsIG1fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yKCksIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCkpOwogfQogCi1QYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXdFZmw6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmw6OmNyZWF0ZShwYWdlKTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBXZWJWaWV3RWZsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94
eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1f
ZXdrVmlldywgcGFnZSk7CiB9CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJWaWV3RWZsOjpp
bml0aWFsaXplQ29sb3JQaWNrZXJDbGllbnQoY29uc3QgV0tDb2xvclBpY2tlckNsaWVudEJhc2Uq
IGNsaWUKICAgICBtX2NvbG9yUGlja2VyQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0VmbDo6Y3JlYXRlQ29sb3JQaWNrZXIo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKQorUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3RWZsOjpjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBj
b2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgcmV0dXJuIFdlYkNvbG9yUGlj
a2VyRWZsOjpjcmVhdGUodGhpcywgcGFnZSwgY29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCBlZjk5MTE4NDZhMGQ5MTZhYWM0YWE3MTkzN2Jm
MDk4ODE2Zjk3Y2NjLi5hMGNhZjEwM2M1ZmJiMzJlNWJkZjFmY2IzNjA0NTAyYTFhYTBlMTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplQ29sb3JQaWNrZXJDbGllbnQoY29uc3Qg
V0tDb2xvclBpY2tlckNsaWVudEJhc2UqKTsKIAogICAgIFdlYkNvbG9yUGlja2VyQ2xpZW50JiBj
b2xvclBpY2tlckNsaWVudCgpIHsgcmV0dXJuIG1fY29sb3JQaWNrZXJDbGllbnQ7IH0KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xv
clBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRWaWV3QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CkBAIC02NiwxMiArNjYsMTIgQEAgcHJp
dmF0ZToKICAgICBXZWJWaWV3RWZsKFdlYlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKik7CiAK
ICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKLSAg
ICBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRl
VGV4dElucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVz
dChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA0ODQyMTI3MDhkMzA3YmExNzQz
MjYxNzNlNTVhM2MwZDc2ZDRlMGRmLi5jYzQwYjU2Zjc5NzZjODc3OGJlMDI4NjM5NWI4OTYyZTFl
MjFkZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC05Nyw4ICs5Nyw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29y
ZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3Nh
bEFuaW1hdGlvbiA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZh
ZGVPdXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0
aW9uUHJvZ3Jlc3MoZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMDMzN2YzZjc5ZDVkODlmNWM0ZTIy
YjI3OWJmY2Q3ZWQzNmI0ZjEyMy4uYTA4MTZjNDVjYTE2ZjgwMDEyMzZkNGYxZjBmMzE3MTJkYzg2
YTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC00NDEsMTYgKzQ0MSwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25l
V2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgbmF0aXZlV2VidG91Ywog
fQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5
KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNh
dG9yKFJlZjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yLCBUZXh0SW5kaWNhdG9yTGlmZXRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IGZkMjI5MWE1NTYxNWUyZTA2YzNlYzJlOWQyMTk2OTRiZjVlNDhkZTIuLjdjNTIyYzYx
ZmMzYzNhZDgzZWJiNDg1MzJmMjMzMTk4YTY2MWY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMDcsMTAgKzEwNywxMCBAQCBT
dHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6
OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGMxZjZmYzE4ZTM1NDBh
OTM2M2JmYWY2MzhkM2QxZTg5NGYyNGFhMzcuLmFiZTM5NGI3NmY0YmRiODdkODU1Njg1Njk5MzQz
MmVjYzUxMWJiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKQEAgLTEyMCwxMSArMTIwLDExIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3
YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4g
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
aXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNh
dG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxp
ZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0K
aW5kZXggZjFmNDI0N2NkZTBhZmNlMzgzMjI4MGI1YmNkYzMzMDAyZmFlMTg3Ni4uODFkMGIxYjAw
NDZjNDVmYWRkMzkxNzVhMGRjYzc4ZTBiMDRhZjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC00ODcsMTggKzQ4NywxOCBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmIGV2ZW50LCBib29sCiAgICAgW21fd2tWaWV3IF9kb25lV2l0aEtleUV2ZW50OmV2ZW50
Lm5hdGl2ZUV2ZW50KCkgZXZlbnRXYXNIYW5kbGVkOmV2ZW50V2FzSGFuZGxlZF07CiB9CiAKLVBh
c3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7
CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUobV93a1ZpZXcsIHBhZ2Up
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNy
ZWF0ZShtX3drVmlldywgcGFnZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
LVBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQorUmVmUHRyPFdlYkNvbG9yUGlja2Vy
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCkKIHsKICAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZShwYWdlLCBp
bml0aWFsQ29sb3IsIHJlY3QsIHdrVmlldygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNGMyMjMxYjY5ZTU1YzRiNDk4ZjA4
YzRhMmZjOTVlYjcwZGQ1OTZhMi4uYjI5MjhjZjE4Y2Y4Y2JiNWEzNzJmZThjNjhkNjdmOTVlZWRh
ZTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KQEAgLTM2OCwxNyArMzY4LDE3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFNoYXJlZE1lbW9yeTo6
SGFuZGxlIGhhbmRsZTsKICAgICB1aW50NjRfdCBzaXplID0gMDsKICAgICBjb25zdCBhdXRvIG1l
c3NhZ2VUaW1lb3V0ID0gc3RkOjpjaHJvbm86OnNlY29uZHMoMjApOwogICAgIHByb2Nlc3MoKS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
cGFzdGVib2FyZFR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
OjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOwogICAgIGlm
IChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCmluZGV4IDFlZDc4ZDM0NWQ0ZTc0MmQ3OTg2MDI1YTZmNDM2N2FmMzhi
ZmRlNGMuLmFhMjMyNGNlMWJhMDc4ZGFhMDMwMmFmNDEwMTVjYTRmOWM5YTg3NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC02NywyMCArNjcsMjAgQEAgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjp+V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1
YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCitSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJl
cXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIHNjaGVkdWxlTG9hZChs
b2FkZXIuZ2V0KCksIHJlc291cmNlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgp
OworICAgIHJldHVybiBsb2FkZXI7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1M
b2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorUmVmUHRyPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luU3Ry
ZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBSZWZQdHI8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKICAg
ICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgMCwgZnJhbWUtPmRvY3VtZW50KCktPnJl
ZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKLSAgICByZXR1cm4gbG9h
ZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbG9hZGVyOwogfQogCiBzdGF0aWMgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGltZShDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggMmU4MTc5N2I1Yzk0OGU5OTczMTNh
NjZlY2JhYzM4NmI1OWU2ZmI5NS4uNzY0ZTFhYThlNjQxNGEzMWZhMTY2MmQxNjY2MGI2MTY3MDE2
YmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6
CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAgICAgdmlydHVhbCB+V2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpGcmFt
ZSosIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyKiwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApp
bmRleCBkM2RjMjQ3ZTQ4Y2Q2MTg3ZDY5MmU2ZTQxYzQyZTZhYTdhOTJjZWFmLi4zOWU5YjNkNDll
ZjZiZDFiMzRmMDgxMzEwNDBjYjQ0OTVlMDllY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKQEAgLTExMiwxMCArMTEyLDEwIEBAIE5ldHNjYXBlUGx1Z2luOjp+TmV0c2NhcGVQbHVnaW4o
KQogICAgIG1fcGx1Z2luTW9kdWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAoTlBQIG5wcCkKK1Jl
ZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAoTlBQIG5wcCkKIHsK
ICAgICBpZiAoIW5wcCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5ldHNjYXBlUGx1Z2luKj4obnBwLT5uZGF0YSk7
CiB9CkBAIC03MDksMTAgKzcwOSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBwbGF0
Zm9ybVBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQorUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKIHsKICAgICBpZiAoIXN1cHBvcnRzU25hcHNo
b3R0aW5nKCkgfHwgbV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKIApAQCAt
NzI4LDcgKzcyOCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QoKQogCiAgICAgcGxhdGZvcm1QYWludChjb250ZXh0LmdldCgpLCBJbnRSZWN0
KEludFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOwogCi0gICAgcmV0dXJuIGJpdG1hcC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbjo6
aXNUcmFuc3BhcmVudCgpCkBAIC0xMDY0LDkgKzEwNjQsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2lu
OjpzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gTmV0c2NhcGVQbHVnaW46OmxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gTmV0c2NhcGVQ
bHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBJbnRQb2ludCBOZXRzY2FwZVBsdWdpbjo6Y29udmVydFRvUm9v
dFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50SW5QbHVnaW5Db29yZGluYXRlcykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKaW5kZXggOGIzMjgzYzk3OTNlYTRmMDRiMDIzMWY5NTc3MGQwYjg2
ZmZlMzVmMy4uZDg4YjZmZDdmZGQ1YmY5ZDVjNWY5ODQ5ZTI2YzI4N2E3MjBmOGVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGNyZWF0ZShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9k
dWxlPik7CiAgICAgdmlydHVhbCB+TmV0c2NhcGVQbHVnaW4oKTsKIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9tTlBQKE5QUCk7CisgICAgc3RhdGljIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOwogCiAgICAgLy8gSW4tcHJvY2VzcyBOZXRzY2Fw
ZVBsdWdpbnMgZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uCiAgICAg
dmlydHVhbCBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtMjY0LDcg
KzI2NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gY29udmVydGVkIChpZiB0aGUgdHJhbnNmb3JtYXRp
b24gbWF0cml4IGlzbid0IGludmVydGlibGUpLgogICAgIGJvb2wgY29udmVydEZyb21Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIFdl
YkNvcmU6OkludFBvaW50JiBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNWQ2NWE2NjZlYTkxNDQ2NDUy
ZTMxYjZhYzE0ZDgzOTI4MzBhYzIxOC4uMzBjNzkwZjEzNGE2NzlhYmJiOGQ3MGIzNGViZjg4Yzk5
NGJhZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBw
bHVnaW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNXaGVlbEV2
ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkg
b3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1W
YWx1ZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
U2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggOTg0NzAxOGYzYzY2
NTc2NDY1MWE0OWVmODhhZTk0M2IwODhkZjM4YS4uOTMyNDk0ODI1MmI3MGM4NmE1MTM4YzJkOTNj
MDU1N2VhMGU5MDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgUERGUGx1Z2lu
OjpwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0
UmVmIGNvbnRlCiAgICAgc2Nyb2xsYmFyLT5wYWludCgmZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxi
YXItPmZyYW1lUmVjdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBs
dWdpbjo6c25hcHNob3QoKQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFw
c2hvdCgpCiB7CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBE
RlBsdWdpbjo6c25hcHNob3QoKQogCiAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNuYXBzaG90
SW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpXTsKIAotICAgIHJldHVybiBiaXRt
YXAucmVsZWFzZSgpOworICAgIHJldHVybiBiaXRtYXA7CiB9CiAKIFBsYXRmb3JtTGF5ZXIqIFBE
RlBsdWdpbjo6cGx1Z2luTGF5ZXIoKQpAQCAtMTYzNSwxMiArMTYzNSwxMiBAQCB2b2lkIFBERlBs
dWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxiYXJz
KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0YSgpOwogCiAg
ICAgaWYgKCFwZGZEYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKHBkZkRhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGExNGU5OGFh
MjlhZDJhZWM5YjY5NjAzZTFjMWM5MDY4MjIyZDdhMTMuLjYyYWI4NDdjNmJlYzQ5NGE5YmI0M2Qy
MjljOTFmN2Q5OWQzNTY5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWct
aW4gdG8gZHJhdyBpdHNlbGYgaW50byBhIGJpdG1hcCwgYW5kIHJldHVybiB0aGF0LgotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSA9IDA7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAvLyBJZiBhIHBsdWctaW4gaXMgdXNpbmcgdGhlIENvcmUgQW5pbWF0
aW9uIGRyYXdpbmcgbW9kZWwsIHRoaXMgcmV0dXJucyBpdHMgcGx1Zy1pbiBsYXllci4KQEAgLTI4
Myw3ICsyODMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzQXV0
b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCAxZWMx
NmJlMTcxYTU1ZGJlYTMyNDM0ZDBiMGU0OGQ3MjM3ZjYxMzVmLi4xM2NhNTQzMjU4Zjc2NTI3ODYx
YjBkYTMzNDM5ZWQ2ZWZlYTBlZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTIzOCwxNiArMjM4LDE2IEBAIGJvb2wgUGx1
Z2luUHJveHk6OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNTdXBw
b3J0ZWQ7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94eTo6c25h
cHNob3QoKQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkK
IHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBzbmFwc2hvdFN0b3JlSGFuZGxlOwogICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpTbmFwc2hvdCgpLCBNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5
OjpTbmFwc2hvdDo6UmVwbHkoc25hcHNob3RTdG9yZUhhbmRsZSksIG1fcGx1Z2luSW5zdGFuY2VJ
RCk7CiAKICAgICBpZiAoc25hcHNob3RTdG9yZUhhbmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0
b3JlSGFuZGxlKTsKLSAgICByZXR1cm4gc25hcHNob3RCdWZmZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBzbmFwc2hvdEJ1ZmZlcjsKIH0KIAogYm9vbCBQbHVnaW5Qcm94eTo6aXNUcmFuc3BhcmVu
dCgpCkBAIC03MTYsOSArNzE2LDkgQEAgSW50UG9pbnQgUGx1Z2luUHJveHk6OmNvbnZlcnRUb1Jv
b3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKICAgICByZXR1cm4gbV9wbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFBsdWdpblByb3h5OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBsdWdpblByb3h5OjpsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaAppbmRleCA4OTA0MWMwNDk4YzYzZTZmODgyOWM1NTViNDkyMzRmMGVj
MDZiNWZiLi5lMmY5OGFkN2VjY2NlY2UyOWQ0ODgwOTc5MmEwODMxMDhhN2FiNzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNzks
NyArNzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJy
aWRlOwogI2VuZGlmCkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgU3RyaW5nIGdldFNlbGVjdGlvblN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBhYThmNDMxNjljODVm
NTc0NTczZWE3YjRiZTYyNTgzMzE3ODg3NTNmLi4zNTc3OGY4MjE1YTk2YTA1NGVlN2Q3ZGU4ODdj
MTRmYmQ3Y2RmYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VB
cmVhTWFwJiBtYXApCiAgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKCZtYXAuc2VjdXJpdHlP
cmlnaW4oKSk7CiB9CiAKLVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
bikKK1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVh
KFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogewogICAgIFJlZlB0
cjxTdG9yYWdlQXJlYU1hcD4gbWFwOwogCkBAIC04Niw3ICs4Niw3IEBAIFBhc3NSZWZQdHI8U3Rv
cmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpCiAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFdURjo6bW92ZSht
YXApKTsKIH0KIAotUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQorUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3Rv
cmFnZU5hbWVzcGFjZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCA2YzUxNjc0YzcxYTIwMGNj
ZTQ3OGY3YmMwOTQyZGY3ZTkzOGJkMTlhLi4zNzgxNzE3M2UyNDg1Yjg2NmE4YWYzMjkzNzU1MWM3
N2QyNmQ4MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFn
ZSopIG92ZXJyaWRlOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdl
VHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGZkMGE5OGU4NDc1OTRjMzQyMDdhMjg1
YmI2ZWMzMDU3ZmQ1ODM0OTUuLjQ1MjA2MjAwM2ZkYWY2ZDg2MjE4ODAyMmE3NWZmMWRkYmU4MTgw
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTg1LDEyICsx
ODUsMTIgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5
SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJiBwYWdlU3RhdGUpCitS
ZWY8SGlzdG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJiBwYWdlU3RhdGUp
CiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpj
cmVhdGUocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLnVybFN0cmluZywgcGFnZVN0YXRlLnRpdGxl
KTsKLSAgICBhcHBseUZyYW1lU3RhdGUoKmhpc3RvcnlJdGVtLCBwYWdlU3RhdGUubWFpbkZyYW1l
U3RhdGUpOworICAgIFJlZjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6
Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0ZS50aXRs
ZSk7CisgICAgYXBwbHlGcmFtZVN0YXRlKGhpc3RvcnlJdGVtLCBwYWdlU3RhdGUubWFpbkZyYW1l
U3RhdGUpOwogCi0gICAgcmV0dXJuIGhpc3RvcnlJdGVtLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
aGlzdG9yeUl0ZW07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uaAppbmRleCBlNDE1NDE1ZTE0ZTZmMzRkMmYwZWJiNTFjZTY2OGIzNDQw
ODNkMDU4Li5iZWU5ZDIyOGNhNzM5YTVhOGY2NjUwY2FmY2Y3YmVmMGRiY2Q0ZGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHN0cnVjdCBQYWdlU3RhdGU7CiAKIFBhZ2VTdGF0ZSB0b1BhZ2VTdGF0ZShjb25z
dCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRl
bT4gdG9IaXN0b3J5SXRlbShjb25zdCBQYWdlU3RhdGUmKTsKK1JlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4gdG9IaXN0b3J5SXRlbShjb25zdCBQYWdlU3RhdGUmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxNTUwYTMzZWE0NGRjZWI4ZTZh
OTcxYjE4NjkxMWEwYmU2MTU2Nzc3Li45MzlkY2NjY2FhNGJmOTE4ZTc5NmY2YzU1NWE0YmIzMGQ5
OGQ0NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04MzQsMTIgKzgzNCwxMiBAQCBi
b29sIFdlYkNocm9tZUNsaWVudDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFdlYlBvcHVwTWVudTo6Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNo
UG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAorUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IGUyMDgxYjk3NzRjMWI0NzI5YjQxMmQzZDJkNWNmNTA0Mjc0
ZGQwOTcuLjE2NTNkZmMxMDA2ZmU0ZTk4MzI4NjYyMDlhYzAwMmI4Yzg3ZGUyY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjAzLDggKzIwMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVh
dGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGJlNmU5YjBlYWQ4OTkyM2FiNzhkYjMwOGEyYjQ4
YWM2Njk3MTQ4ZjcuLjU0MGRkZTk1NmY5OGQ4MDlkNGYxNjhiMmMzOTQ3ZmFmZjc0OWIwOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEp
CitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5jcmVh
dGVEb2N1bWVudExvYWRlcigqbV9mcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKTsKIH0KQEAgLTEzNzUsNyArMTM3NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciAqZG9j
CiAgICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50
TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lk
dGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKQEAgLTEzODQsMjUgKzEzODQsMjUgQEAgUGFzc1JlZlB0cjxGcmFtZT4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcKIAogICAgIEZyYW1lKiBjb3JlU3ViZnJhbWUgPSBzdWJmcmFtZS0+Y29yZUZyYW1lKCk7
CiAgICAgaWYgKCFjb3JlU3ViZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUg
cnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHRoYXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFs
cmVhZHkuCiAgICAgaWYgKCFjb3JlU3ViZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlU3ViZnJhbWUp
OwogCiAgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3ZlZCBp
dCBmcm9tIHRoZSBkb2N1bWVudC4KICAgICBpZiAoIXN1YmZyYW1lLT5jb3JlRnJhbWUoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChzdWJm
cmFtZS0+Y29yZUZyYW1lKCkgPT0gY29yZVN1YmZyYW1lKTsKICAgICBpZiAoIWNvcmVTdWJmcmFt
ZS0+dHJlZSgpLnBhcmVudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gY29yZVN1YmZyYW1lOwogfQogCi1QYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1JlZlB0cjxXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhU
TUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgQVNT
RVJUKHBhcmFtTmFtZXMuc2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7CiAgICAgQVNTRVJU
KG1fZnJhbWUtPnBhZ2UoKSk7CkBAIC0xNDIxLDEyICsxNDIxLDEyIEBAIFBhc3NSZWZQdHI8V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBI
VE1MUGx1Z0luCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUmVmUHRyPFBs
dWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1
Z2luRWxlbWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7CiAgICAgaWYgKCFw
bHVnaW4pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHJldHVybiBQbHVnaW5WaWV3OjpjcmVhdGUocGx1Z2luRWxlbWVudCwgcGx1Z2luLnJlbGVhc2Uo
KSwgcGFyYW1ldGVycyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5FbGVtZW50KTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggM2NiMTVlOTQ5NDgxNmY1MThmZTY2NTA3MGIzMjRi
NmZlNTQ4NzdjNS4uNTkwZjk3MTAzZjU5ZjA2OGRjZDI5YjMyNzQ5OTA1ODhlNjlmNWQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwogICAgIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7CkBAIC0xODUsMTAgKzE4NSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjYW5D
YWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCog
cGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxMjAyNzE5MTg3Mjk5MWY5ZjIwYzQ4MGRlY2U2
ZWVkMjdiYTVkYzMxLi43OTY5YmEyOWRkNmY2MWE5YjI5NmIxN2JlNDNlZDM2OTRlZDljMjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0y
NDEsMTQgKzI0MSwxNCBAQCBwcml2YXRlOgogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RG
OjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAK
LVBhc3NSZWZQdHI8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK1JlZjxXZWJQYWdlPiBX
ZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFJlZlB0cjxXZWJQYWdlPiBwYWdlID0gYWRvcHRS
ZWYobmV3IFdlYlBhZ2UocGFnZUlELCBwYXJhbWV0ZXJzKSk7CisgICAgUmVmPFdlYlBhZ2U+IHBh
Z2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBwYXJhbWV0ZXJzKSk7CiAKICAgICBp
ZiAocGFnZS0+cGFnZUdyb3VwKCktPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSAmJiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UuZ2V0KCkp
OworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRD
cmVhdGVQYWdlKHBhZ2UucHRyKCkpOwogCi0gICAgcmV0dXJuIHBhZ2UucmVsZWFzZSgpOworICAg
IHJldHVybiBwYWdlOwogfQogCiBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTQ5MDgsMTYgKzQ5
MDgsMTYgQEAgdm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRp
b25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCktPnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCitSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURv
Y3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgUmVmUHRyPFdl
YkRvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVh
dGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4g
ZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKTsKIAogICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgJiYgZnJhbWUuaXNN
YWluRnJhbWUoKSkgewogICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2aWdhdGlvbklEKG1f
cGVuZGluZ05hdmlnYXRpb25JRCk7CiAgICAgICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IDA7
CiAgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gV1RGOjptb3ZlKGRvY3VtZW50TG9hZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZy
YW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGM3YTQwMDQ4NzEwZDg5YjFkZDU4NjAwODA0ZjViODZiYTkxYTQzYTQuLjA1ZWVkOGI3
YzNjYzQyMTljMDQ1ODcxNGE2YmI5OTIzN2Y4NDIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNzIFdlYlRv
dWNoRXZlbnQ7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+V2Vi
UGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmKTsKQEAgLTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpP
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAgICAgdm9pZCBzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpT
Y3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAotICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0
ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0
ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUm
KTsKIAogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2
b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50KTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBsb29rdXBUZXh0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0
UG9pbnQsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9u
RGlkVXBkYXRlKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2
b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOGY5ODY2ZDYzZmZl
Y2IwZTgyOTk2ZDg3NzEzYWU2NDQzNjc5OGJjMS4uYTQwYzgyZDk2NTkwNjFhMTZlZGUwYjEzY2Iy
NDVmZWIwNWFlNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBXZWJQYWdl
OjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBsb2NhdGkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0KGltbWVkaWF0ZUFjdGlvblJlc3VsdCwgaW1tZWRpYXRlQWN0
aW9uSGl0VGVzdFByZXZlbnRzRGVmYXVsdCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0
aW9uKEZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgTlNEaWN0aW9uYXJ5ICoq
b3B0aW9ucykKK1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9j
YXRpb24oRmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzLCBOU0RpY3Rpb25hcnkg
KipvcHRpb25zKQogewogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCk7CiAgICAgaWYgKCFtYWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygp
LT5yZW5kZXJWaWV3KCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>