<?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>91734</bug_id>
          
          <creation_ts>2012-07-19 04:55:16 -0700</creation_ts>
          <short_desc>Web Inspector: native memory instrumentation: cover MemoryCache with MemoryInstrumentation</short_desc>
          <delta_ts>2012-08-06 02:12:22 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>673395</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-19 04:55:16 -0700</bug_when>
    <thetext>Old version of native memory instrumentation doesn&apos;t remember the cached objects.
As the result it could count the same objects two times.
The first time via MemoryCache&apos;s size and the second time via DOM traversing.

The new version just traverses through MemoryCache the same way as through DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673399</commentid>
    <comment_count>1</comment_count>
      <attachid>153231</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-19 05:03:11 -0700</bug_when>
    <thetext>Created attachment 153231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673404</commentid>
    <comment_count>2</comment_count>
      <attachid>153231</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-19 05:16:32 -0700</bug_when>
    <thetext>Comment on attachment 153231
Patch

Attachment 153231 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13276886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673429</commentid>
    <comment_count>3</comment_count>
      <attachid>153231</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-19 06:09:12 -0700</bug_when>
    <thetext>Comment on attachment 153231
Patch

Attachment 153231 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13282886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673436</commentid>
    <comment_count>4</comment_count>
      <attachid>153231</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-19 06:22:54 -0700</bug_when>
    <thetext>Comment on attachment 153231
Patch

Attachment 153231 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13279935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673444</commentid>
    <comment_count>5</comment_count>
      <attachid>153245</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-19 06:40:29 -0700</bug_when>
    <thetext>Created attachment 153245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673461</commentid>
    <comment_count>6</comment_count>
      <attachid>153245</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-19 06:57:51 -0700</bug_when>
    <thetext>Comment on attachment 153245
Patch

Attachment 153245 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13278891</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673463</commentid>
    <comment_count>7</comment_count>
      <attachid>153245</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-19 06:58:45 -0700</bug_when>
    <thetext>Comment on attachment 153245
Patch

Attachment 153245 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13284877</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673469</commentid>
    <comment_count>8</comment_count>
      <attachid>153245</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-19 07:13:10 -0700</bug_when>
    <thetext>Comment on attachment 153245
Patch

Attachment 153245 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13271957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673470</commentid>
    <comment_count>9</comment_count>
      <attachid>153245</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-19 07:14:22 -0700</bug_when>
    <thetext>Comment on attachment 153245
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Old version of native memory instrumentation doesn&apos;t remember the objects in MemoryCache.

mark the memory cache objects as visited.

&gt; Source/WebCore/ChangeLog:10
&gt; +        As the result MI could count the same objects two times.

As a result ... multiple time

&gt; Source/WebCore/ChangeLog:11
&gt; +        The first time via MemoryCache&apos;s size and the second time via DOM traversing.

nuke

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:482
&gt; +    PassRefPtr&lt;InspectorMemoryBlock&gt; dumpCacheStatistics() const

buildObjectForMemoryCache

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:489
&gt; +        addMemoryBlockFor(children.get(), m_totalSizes[MemoryInstrumentation::MemoryCacheStructures], MemoryBlockName::memoryCacheStructures);

It sounds like it could be implemented more efficiently.

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:504
&gt; +    PassRefPtr&lt;InspectorMemoryBlock&gt; dumpDOMStatistics() const

buildObjectForDOM

&gt; Source/WebCore/loader/cache/CachedResource.cpp:798
&gt; +    info.addInstrumentedHashSet(m_handlesToRevalidate);

How do we make sure that whoever adds a member counts it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673488</commentid>
    <comment_count>10</comment_count>
      <attachid>153256</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-19 07:25:26 -0700</bug_when>
    <thetext>Created attachment 153256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673724</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-19 11:27:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 153245 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153245&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Old version of native memory instrumentation doesn&apos;t remember the objects in MemoryCache.
&gt; 
&gt; mark the memory cache objects as visited.

done

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        As the result MI could count the same objects two times.
&gt; 
&gt; As a result ... multiple time

done

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        The first time via MemoryCache&apos;s size and the second time via DOM traversing.
&gt; 
&gt; nuke

done

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:482
&gt; &gt; +    PassRefPtr&lt;InspectorMemoryBlock&gt; dumpCacheStatistics() const
&gt; 
&gt; buildObjectForMemoryCache

done

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:489
&gt; &gt; +        addMemoryBlockFor(children.get(), m_totalSizes[MemoryInstrumentation::MemoryCacheStructures], MemoryBlockName::memoryCacheStructures);
&gt; 
&gt; It sounds like it could be implemented more efficiently.

I&apos;ll do this in a separate patch

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:504
&gt; &gt; +    PassRefPtr&lt;InspectorMemoryBlock&gt; dumpDOMStatistics() const
&gt; 
&gt; buildObjectForDOM

done

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResource.cpp:798
&gt; &gt; +    info.addInstrumentedHashSet(m_handlesToRevalidate);
&gt; 
&gt; How do we make sure that whoever adds a member counts it here?

Now when API stable I&apos;ll do runtime guards.
Unfortunately I found no way to implement the compile time guards without a significant code overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674345</commentid>
    <comment_count>12</comment_count>
      <attachid>153256</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-20 02:02:42 -0700</bug_when>
    <thetext>Comment on attachment 153256
Patch

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

&gt; Source/WebCore/loader/cache/CachedResource.cpp:783
&gt; +    MemoryClassInfo&lt;CachedResource&gt; info(memoryObjectInfo, this, MemoryInstrumentation::CachedResource);

Lets make sure there is a way to maintain this code consistently. What if someone adds a field? How do we make sure we update this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678133</commentid>
    <comment_count>13</comment_count>
      <attachid>153256</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-25 09:12:25 -0700</bug_when>
    <thetext>Comment on attachment 153256
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:214
&gt; +    template &lt;typename M&gt; void addInstrumentedMember(const M&amp; member, MemoryInstrumentation::ObjectType objectType = MemoryInstrumentation::Other) { m_memoryInstrumentation-&gt;addInstrumentedMember(member, objectType); }

For members that don&apos;t know their type it should be inherited from the owner, otherwise it is Other so no need to pass objectType explicitly to this method as it is the same as m_objectType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685157</commentid>
    <comment_count>14</comment_count>
      <attachid>156023</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-02 02:55:42 -0700</bug_when>
    <thetext>Created attachment 156023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685170</commentid>
    <comment_count>15</comment_count>
      <attachid>156023</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 03:17:21 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13411821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685171</commentid>
    <comment_count>16</comment_count>
      <attachid>156023</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-02 03:17:43 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13425167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685181</commentid>
    <comment_count>17</comment_count>
      <attachid>156023</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-02 03:35:25 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13425170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685187</commentid>
    <comment_count>18</comment_count>
      <attachid>156023</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-02 03:46:21 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13411832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685198</commentid>
    <comment_count>19</comment_count>
      <attachid>156023</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-02 03:55:05 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13411837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685200</commentid>
    <comment_count>20</comment_count>
      <attachid>156023</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-02 03:59:23 -0700</bug_when>
    <thetext>Comment on attachment 156023
Patch

Attachment 156023 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13411836</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686430</commentid>
    <comment_count>21</comment_count>
      <attachid>156290</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 01:50:30 -0700</bug_when>
    <thetext>Created attachment 156290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686588</commentid>
    <comment_count>22</comment_count>
      <attachid>156290</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-03 05:20:17 -0700</bug_when>
    <thetext>Comment on attachment 156290
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:485
&gt; +        for (int i = MemoryInstrumentation::MemoryCacheStructures; i &lt; MemoryInstrumentation::LastTypeEntry; ++i)

Can you put a compile time check here that LastTypeEntry == last memory cache type + 1?

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:537
&gt; +static void domTreeInfo(Page* page, VisitedObjects&amp; visitedObjects, TypeBuilder::Array&lt;InspectorMemoryBlock&gt;* children, InspectorDataCounter* inspectorData)

domTreeInfo -&gt; collectDomTreeInfo ?

&gt; Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp:201
&gt; +    if (m_parsedStyleSheetCache)

It should be info.addInstrumentedMember(m_parsedStyleSheetCache) as StyleSheetContents is already instrumented.

&gt; Source/WebCore/loader/cache/CachedFont.cpp:215
&gt; +    info.addMember(m_externalSVGDocument);

addInstrumentedMember ?

&gt; Source/WebCore/loader/cache/CachedImage.cpp:474
&gt; +    info.addRawBuffer(m_image.get(), decodedSize());

I think you misuse addRawBuffer here. I&apos;d expect the method to be used only for the blocks of memory that are not described by a particular class which could be instrumented. In this case I&apos;d rather add memory reporting to Image. We would benefit from it in other places(e.g. CSS instrumentation).

&gt; Source/WebCore/loader/cache/CachedResource.cpp:824
&gt; +        info.addRawBuffer(m_purgeableData.get(), m_purgeableData-&gt;size());

Again why not instrument PurgeableBuffer in a regular way?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:884
&gt; +    info.addInstrumentedHashMap(m_documentResources);

What about other containers in this class: m_validatedURLs, m_preloads and m_pendingPreloads?

&gt; Source/WebCore/loader/cache/MemoryCache.cpp:726
&gt; +    }

m_allResources and m_liveDecodedResources should also be accounted here.

&gt; Source/WebCore/platform/PurgeableBuffer.h:-34
&gt; -    

Revert this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686798</commentid>
    <comment_count>23</comment_count>
      <attachid>156392</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 08:56:33 -0700</bug_when>
    <thetext>Created attachment 156392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686804</commentid>
    <comment_count>24</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 08:59:49 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 156290 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156290&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:485
&gt; &gt; +        for (int i = MemoryInstrumentation::MemoryCacheStructures; i &lt; MemoryInstrumentation::LastTypeEntry; ++i)
&gt; 
&gt; Can you put a compile time check here that LastTypeEntry == last memory cache type + 1?

done.

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:537
&gt; &gt; +static void domTreeInfo(Page* page, VisitedObjects&amp; visitedObjects, TypeBuilder::Array&lt;InspectorMemoryBlock&gt;* children, InspectorDataCounter* inspectorData)
&gt; 
&gt; domTreeInfo -&gt; collectDomTreeInfo ?

done


&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp:201
&gt; &gt; +    if (m_parsedStyleSheetCache)
&gt; 
&gt; It should be info.addInstrumentedMember(m_parsedStyleSheetCache) as StyleSheetContents is already instrumented.

done


&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedFont.cpp:215
&gt; &gt; +    info.addMember(m_externalSVGDocument);
&gt; 
&gt; addInstrumentedMember ?

done


&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:474
&gt; &gt; +    info.addRawBuffer(m_image.get(), decodedSize());
&gt; 
&gt; I think you misuse addRawBuffer here. I&apos;d expect the method to be used only for the blocks of memory that are not described by a particular class which could be instrumented. In this case I&apos;d rather add memory reporting to Image. We would benefit from it in other places(e.g. CSS instrumentation).

The patch is quite big already. I&apos;d do this in a separate patch.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResource.cpp:824
&gt; &gt; +        info.addRawBuffer(m_purgeableData.get(), m_purgeableData-&gt;size());
&gt; 
&gt; Again why not instrument PurgeableBuffer in a regular way?

It has different implementations for different platforms and there is no common cpp file.
It&apos;d be not good to put the instrumentation into header.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:884
&gt; &gt; +    info.addInstrumentedHashMap(m_documentResources);
&gt; 
&gt; What about other containers in this class: m_validatedURLs, m_preloads and m_pendingPreloads?

done

&gt; 
&gt; &gt; Source/WebCore/loader/cache/MemoryCache.cpp:726
&gt; &gt; +    }
&gt; 
&gt; m_allResources and m_liveDecodedResources should also be accounted here.

done

&gt; 
&gt; &gt; Source/WebCore/platform/PurgeableBuffer.h:-34
&gt; &gt; -    
&gt; 
&gt; Revert this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686853</commentid>
    <comment_count>25</comment_count>
      <attachid>156392</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-03 09:48:04 -0700</bug_when>
    <thetext>Comment on attachment 156392
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:108
&gt; +    template &lt;typename HashMapType&gt; void addInstrumentedHashMap(const HashMapType&amp;, ObjectType, bool contentOnly = false);

Should we break this down into 
addHashMap
addInstrumentedValues
addInstrumentedKeys

&gt; Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp:201
&gt; +    if (m_parsedStyleSheetCache)

info.addInstrumentedMember(m_parsedStyleSheetCache)

&gt; Source/WebCore/loader/cache/CachedFont.cpp:213
&gt; +    info.visitBaseClass&lt;CachedResource&gt;(this);

You&apos;re removing this method in another patch so would be nice to fix this.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:886
&gt; +    info.addListHashSet(*m_preloads.get());

Just *m_preloads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686919</commentid>
    <comment_count>26</comment_count>
      <attachid>156411</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 10:30:09 -0700</bug_when>
    <thetext>Created attachment 156411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686927</commentid>
    <comment_count>27</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 10:36:06 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 156392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:108
&gt; &gt; +    template &lt;typename HashMapType&gt; void addInstrumentedHashMap(const HashMapType&amp;, ObjectType, bool contentOnly = false);
&gt; 
&gt; Should we break this down into 
&gt; addHashMap
&gt; addInstrumentedValues
&gt; addInstrumentedKeys

It wouldn&apos;t be simple task because we have to many different instrumentation methods. addInstrumented* + addString.
I hope to implement single instrumentation method next week.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp:201
&gt; &gt; +    if (m_parsedStyleSheetCache)
&gt; 
&gt; info.addInstrumentedMember(m_parsedStyleSheetCache)

done


&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedFont.cpp:213
&gt; &gt; +    info.visitBaseClass&lt;CachedResource&gt;(this);
&gt; 
&gt; You&apos;re removing this method in another patch so would be nice to fix this.

done

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:886
&gt; &gt; +    info.addListHashSet(*m_preloads.get());
&gt; 
&gt; Just *m_preloads

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687789</commentid>
    <comment_count>28</comment_count>
      <attachid>156411</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-05 23:24:17 -0700</bug_when>
    <thetext>Comment on attachment 156411
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:299
&gt; +void MemoryInstrumentation::addInstrumentedHashMap(const HashMapType&amp; hashMap, ObjectType ownerObjectType, bool contentOnly)

I thought we agreed not to add this method until we come up with a good solution for a all possible cases(instrumented keys only, values only or both). Did you change your mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687844</commentid>
    <comment_count>29</comment_count>
      <attachid>156615</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 01:12:32 -0700</bug_when>
    <thetext>Created attachment 156615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687878</commentid>
    <comment_count>30</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 02:06:17 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 156411 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156411&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:299
&gt; &gt; +void MemoryInstrumentation::addInstrumentedHashMap(const HashMapType&amp; hashMap, ObjectType ownerObjectType, bool contentOnly)
&gt; 
&gt; I thought we agreed not to add this method until we come up with a good solution for a all possible cases(instrumented keys only, values only or both). Did you change your mind?

the method has been removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687882</commentid>
    <comment_count>31</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 02:12:22 -0700</bug_when>
    <thetext>Committed r124744: &lt;http://trac.webkit.org/changeset/124744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153231</attachid>
            <date>2012-07-19 05:03:11 -0700</date>
            <delta_ts>2012-07-19 06:40:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120719160309.patch</filename>
            <type>text/plain</type>
            <size>47406</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYjBkM2JjYTFjOWYy
NDA1MTUxZGU2NGNkOWU4ZjA2YmJmMGM3MS4uZmI4OTlmNDRlNTFkYTZlODhhNDNjYzllNWIyNzM4
N2U4OTY0MWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMi0wNy0xOSAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgcmVtZW1iZXIgdGhlIG9iamVjdHMgaW4gTWVtb3J5Q2FjaGUuCisgICAgICAg
IEl0IGp1c3QgdXNlcyB0aGUgdG90YWwgc2l6ZSBvZiBNZW1vcnlDYWNoZS4KKyAgICAgICAgQXMg
dGhlIHJlc3VsdCBNSSBjb3VsZCBjb3VudCB0aGUgc2FtZSBvYmplY3RzIHR3byB0aW1lcy4KKyAg
ICAgICAgVGhlIGZpcnN0IHRpbWUgdmlhIE1lbW9yeUNhY2hlJ3Mgc2l6ZSBhbmQgdGhlIHNlY29u
ZCB0aW1lIHZpYSBET00gdHJhdmVyc2luZy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3Qg
dHJhdmVyc2VzIHRocm91Z2ggTWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9N
LgorICAgICAgICBBbHNvIG5vdCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNv
dW50ZWQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFk
ZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE1lbWJlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpjYWxjdWxhdGVDb250YWluZXJTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZEhhc2hNYXApOgorICAgICAg
ICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6
b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5
RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAoQ2FjaGVkRm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRS
YXdSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNl
TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oOgorICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hl
ZFNjcmlwdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRY
U0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlD
YWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDctMTkgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtSZWZhY3Rvcmlu
Z10gVXNlIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSB0byB0YWtlIHVzZXIgYWdlbnQgc2hhZG93IHJv
b3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhZmE3MzJmYTEwMjVhYTA0MTY4NDEwMDAz
NTEyOTIxM2E4NmQ0NWJmLi5hNDJkN2ZlZmRhYTcxNmY1OGNjZTdlYjg5ODJlZmY1Mjg0OGJlODMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYwODAsNiArNjA4MCw4IEBAIHZvaWQgRG9j
dW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPERvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBpbmZvLnZpc2l0
QmFzZUNsYXNzPENvbnRhaW5lck5vZGU+KHRoaXMpOwogICAgIGluZm8uYWRkVmVjdG9yKG1fY3Vz
dG9tRm9udHMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZnJhbWUpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAg
IGluZm8uYWRkU3RyaW5nKG1fZG9jdW1lbnRVUkkpOwogICAgIGluZm8uYWRkU3RyaW5nKG1fYmFz
ZVRhcmdldCk7CiAgICAgaWYgKG1fcGFnZUdyb3VwVXNlclNoZWV0cykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAxMTRmOTZlNjlkNzQwZTY2OTA5ZDI0
NjM1NTAyNTgxODQ1ZTU2MTQwLi5mZmM3MjE3ZTk1ZDBmYjFmMWNlMzc0MDUwNjEwZTUyYTc0ZGIy
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC01
MiwxMiArNTIsMjEgQEAgcHVibGljOgogICAgICAgICBDU1MsCiAgICAgICAgIEJpbmRpbmcsCiAg
ICAgICAgIExvYWRlciwKKyAgICAgICAgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZSwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VDU1MsCisgICAgICAgIENhY2hl
ZFJlc291cmNlRm9udCwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VJbWFnZSwKKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VTY3JpcHQsCisgICAgICAgIENhY2hlZFJlc291cmNlU1ZHLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZVNoYWRlciwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VYU0wsCiAgICAgICAg
IExhc3RUeXBlRW50cnkKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb2Jq
ZWN0VHlwZSA9IE90aGVyKQogICAgIHsKLSAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0
cnVtZW50ZWRNZW1iZXIodGhpcywgdCk7CisgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5z
dHJ1bWVudGVkTWVtYmVyKHRoaXMsIHQsIG9iamVjdFR5cGUpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE1lbWJlcihjb25zdCBUJiB0LCBPYmplY3RUeXBlIG9i
amVjdFR5cGUpCkBAIC02Niw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlw
ZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3Qg
SGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3Qg
SGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZh
bHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExp
c3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVu
dE9ubHkgPSBmYWxzZSk7CkBAIC04NSwxOSArOTYsMTkgQEAgcHJvdGVjdGVkOgogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQg
YnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3Ry
dW1lbnRlZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29u
c3QgVCYgdCkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoJnQs
IGJ5UmVmZXJlbmNlKTsgfQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1i
ZXIoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRh
dGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCgmdCwgb2JqZWN0VHlwZSwgYnlSZWZlcmVu
Y2UpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RUeXBlIG9iamVjdFR5cGUpIHsgaW5zdHJ1bWVudGF0aW9uLT5hZGRNZW1iZXJJbXBsKCZ0
LCBvYmplY3RUeXBlLCBieVJlZmVyZW5jZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2lu
dGVyIGltcGxlbWVudGF0aW9uLgotICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRN
ZW1iZXIoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNv
bnN0JiB0KSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCh0LCBi
eVBvaW50ZXIpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihN
ZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCh0LCBvYmplY3RUeXBlLCBieVBvaW50
ZXIpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkTWVtYmVy
SW1wbCh0LCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgVCogY29u
c3QmLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRNZW1iZXJJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUeXBlIG93bmluZ1R5cGUpIHsgYWRkSW5zdHJ1bWVudGVk
TWVtYmVySW1wbChvYmplY3QtPmdldCgpLCBvd25pbmdUeXBlKTsgfQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgUmVmUHRyPFQ+
KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5n
VHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG93bmluZ1R5
cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVt
YmVySW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlw
ZSwgT3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWVtYmVySW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9i
amVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBSZWZQdHI8VD4q
IGNvbnN0JiBvYmplY3QsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RU
eXBlLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJ
bnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIG93bmluZ1R5
cGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZE1lbWJlcklt
cGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdU
eXBlIG93bmluZ1R5cGUpCkBAIC0xMTcsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotICAgIHNpemVfdCBjYWxjdWxhdGVD
b250YWluZXJTaXplKGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpCisgICAgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29udGFp
bmVyJiBjb250YWluZXIsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAoY29udGVudE9ubHkgPyAwIDogc2l6ZW9mKGNvbnRhaW5lcikpICsgY29u
dGFpbmVyLmNhcGFjaXR5KCkgKiBzaXplb2YodHlwZW5hbWUgQ29udGFpbmVyOjpWYWx1ZVR5cGUp
OwogICAgIH0KQEAgLTE0MywxMSArMTU0LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lbW9yeU9i
amVjdEluZm8gewogcHVibGljOgotICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90
aGVyKQogICAgICAgICA6IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1lbnRh
dGlvbikKLSAgICAgICAgLCBtX29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhl
cikKKyAgICAgICAgLCBtX29iamVjdFR5cGUob2JqZWN0VHlwZSkKICAgICAgICAgLCBtX29iamVj
dFNpemUoMCkKLSAgICAgeyB9CisgICAgeyB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0VHlwZTsgfQog
ICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CkBA
IC0xNTksMTAgKzE3MCwxMCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RUeXBlIG9iamVjdFR5cGUpCiAgICAgewotICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7Ci0gICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNp
emVvZihUKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0VHlwZSA9PSBNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok90aGVyKQorICAgICAgICAgICAgbV9vYmplY3RUeXBlID0gb2JqZWN0VHlwZTsKKyAgICAg
ICAgaWYgKCFtX29iamVjdFNpemUpCisgICAgICAgICAgICBtX29iamVjdFNpemUgPSBzaXplb2Yo
VCk7CiAgICAgfQogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1l
bnRhdGlvbjsKQEAgLTE3NiwxOCArMTg3LDE3IEBAIHRlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRNZW1iZXJJbXBsPFN0cmluZz4oY29uc3QgU3RyaW5nKiBjb25zCiAK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAoIW9iamVjdCB8
fCB2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAob3duaW5nVHlwZSA9
PSBieVJlZmVyZW5jZSkgewotICAgICAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdElu
Zm8odGhpcyk7CisgICAgICAgIE1lbW9yeU9iamVjdEluZm8gbWVtb3J5T2JqZWN0SW5mbyh0aGlz
LCBvYmplY3RUeXBlKTsKICAgICAgICAgb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgmbWVtb3J5
T2JqZWN0SW5mbyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRl
cihhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxUPihvYmplY3QpKSk7CiB9CiAKLQog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBNZW1vcnlDbGFzc0luZm8gewogcHVibGljOgpA
QCAtMjAxLDEyICsyMTEsMTUgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
IHZvaWQgdmlzaXRCYXNlQ2xhc3MoY29uc3QgUCogcHRyKSB7IHB0ci0+UDo6cmVwb3J0TWVtb3J5
VXNhZ2UobV9tZW1vcnlPYmplY3RJbmZvKTsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUlu
c3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1lbWJlcik7IH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXIoY29uc3QgTSYgbWVt
YmVyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSA9IE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6T3RoZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZElu
c3RydW1lbnRlZE1lbWJlcihtZW1iZXIsIG9iamVjdFR5cGUpOyB9CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE0+IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbi0+YWRkTWVtYmVyKG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1h
cFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1f
b2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRIYXNoTWFwKG1hcCwgbV9vYmpl
Y3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2
b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaFNldChj
b25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0
cnVtZW50ZWRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBM
aXN0SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTGlzdEhh
c2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFZlY3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkVmVjdG9yKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0
cnVlKTsgfQogICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIs
IHNpemVfdCBzaXplKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVm
ZmVyLCBtX29iamVjdFR5cGUsIHNpemUpOyB9CkBAIC0yMTQsNiArMjI3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRTdHJpbmcoc3RyaW5nLCBtX29iamVjdFR5cGUpOyB9CiAgICAgdm9pZCBh
ZGRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZFN0cmluZygoY29uc3QgU3RyaW5nJilzdHJpbmcsIG1fb2JqZWN0VHlwZSk7IH0K
IAorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0
SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb247CkBAIC0yMjYsNiArMjQxLDE0IEBAIHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBPYmpl
Y3RUeXBlIG9iCiAgICAgY291bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRh
aW5lclNpemUoaGFzaE1hcCwgY29udGVudE9ubHkpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
SGFzaE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
SGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCwgT2JqZWN0VHlwZSBvYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5KQoreworICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBj
YWxjdWxhdGVDb250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CisgICAgZm9yICh0
eXBlbmFtZSBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IGhhc2hNYXAuYmVnaW4oKTsg
aSAhPSBoYXNoTWFwLmVuZCgpOyArK2kpCisgICAgICAgIGFkZEluc3RydW1lbnRlZE1lbWJlcihp
LT5zZWNvbmQpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4KIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBoYXNoU2V0
LCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBiZjFk
NWFlMWIwOGU0MmZhZTU5ZjY4ZDEyYTY0YzQ0MjYxZjY2MTg3Li5lZTBiZTI4NjU1MGI3YTZhMjhh
NjljYWZlNjQ2ODVkOTc5NTI2NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTgwLDE0ICs4MCwxOSBAQCBzdGF0aWMgY29u
c3QgY2hhciBqc0V4dGVybmFsU3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRp
YyBjb25zdCBjaGFyIGluc3BlY3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBj
b25zdCBjaGFyIGluc3BlY3RvckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRp
YyBjb25zdCBjaGFyIGluc3BlY3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRh
IjsKLXN0YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3Rh
dGljIGNvbnN0IGNoYXIgcHJvY2Vzc1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1l
bW9yeSI7CiAKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdl
cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENz
c1N0eWxlU2hlZXRzIjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNo
ZWRTY3JpcHRzIjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAi
Q2FjaGVkWHNsU3R5bGVTaGVldHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9
ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9y
eUNhY2hlIjsKK3N0YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1l
bW9yeUNhY2hlU3RydWN0dXJlcyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtd
ID0gIkNhY2hlZFJlc291cmNlIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1h
Z2VbXSA9ICJDYWNoZWRJbWFnZXMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VD
U1NbXSA9ICJDYWNoZWRDc3NTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRS
ZXNvdXJjZVNjcmlwdFtdID0gIkNhY2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2Fj
aGVkUmVzb3VyY2VYU0xbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRSZXNvdXJjZUZvbnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRSZXNvdXJjZVNWR1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZFJlc291cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CisKIHN0
YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3Rh
dGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0
ZWQiOwogCkBAIC00NjgsMjMgKzQ3Myw0NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3RvdGFs
U2l6ZXNbaV0gPSAwOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQor
ICAgIHZvaWQgY291bnRJbnNwZWN0b3JEYXRhKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0
b3JEYXRhKSBjb25zdAogICAgIHsKLSAgICAgICAgc2l6ZV90IGluc3BlY3RvclNpemUKLSAgICAg
ICAgICAgID0gY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShtX3Zpc2l0ZWRPYmplY3RzKQotICAgICAg
ICAgICAgKyBjYWxjdWxhdGVDb250YWluZXJTaXplKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2lu
dGVycyk7CisgICAgICAgIHNpemVfdCBpbnNwZWN0b3JTaXplID0gY2FsY3VsYXRlQ29udGFpbmVy
U2l6ZShtX3Zpc2l0ZWRPYmplY3RzKSArIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUobV9kZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKTsKICAgICAgICAgaW5zcGVjdG9yRGF0YS0+YWRkQ29tcG9u
ZW50KE1lbW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9yRE9NRGF0YSwgaW5zcGVjdG9yU2l6ZSk7Cisg
ICAgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcENhY2hlU3Rh
dGlzdGljcygpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1
Y3R1cmVzOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisg
ICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOworCisgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAg
ICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlc10sIE1lbW9yeUJsb2NrTmFtZTo6
bWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlXSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDYWNoZWRSZXNvdXJjZUNTU10sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VD
U1MpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNp
emVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250XSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRSZXNvdXJjZUZvbnQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVk
UmVzb3VyY2VJbWFnZV0sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VJbWFnZSk7Cisg
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNjcmlwdF0sIE1lbW9yeUJsb2NrTmFt
ZTo6Y2FjaGVkUmVzb3VyY2VTY3JpcHQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGls
ZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2VTVkddLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlU1ZHKTsKKyAgICAgICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyXSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRSZXNvdXJjZVNoYWRlcik7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBibG9jayA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJs
b2NrTmFtZTo6bWVtb3J5Q2FjaGUpOworICAgICAgICBibG9jay0+c2V0U2l6ZSh0b3RhbFNpemUp
OworICAgICAgICBibG9jay0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGJsb2NrLnJlbGVhc2UoKTsKKyAgICB9CiAKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiBkdW1wRE9NU3RhdGlzdGljcygpIGNvbnN0CisgICAgewogICAgICAg
ICBzaXplX3QgdG90YWxTaXplID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBpIDwg
TGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPdGhlcjsgaSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1
Y3R1cmVzOyArK2kpCiAgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOwog
CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
OjpjcmVhdGUoKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCks
IG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsKLSAg
ICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tE
T01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOwotICAgICAgICBhZGRNZW1vcnlCbG9j
a0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZUNTUyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdl
dCgpLCBtX3RvdGFsU2l6ZXNbQmluZGluZ10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUJpbmRp
bmcpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3Rh
bFNpemVzW0xvYWRlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUxvYWRlcik7CisgICAgICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsK
KyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXpl
c1tNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTV0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURP
TSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFs
U2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRy
ZWVDU1MpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90
b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZ10sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZUJpbmRpbmcpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJl
bi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyXSwgTWVt
b3J5QmxvY2tOYW1lOjpkb21UcmVlTG9hZGVyKTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1l
KE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKICAgICAgICAgZG9tLT5zZXRTaXplKHRvdGFsU2l6ZSk7
CkBAIC01MTEsNiArNTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkgT1ZFUlJJREUKICAg
ICB7CisgICAgICAgIEFTU0VSVChvYmplY3RUeXBlICE9IE90aGVyKTsKICAgICAgICAgQVNTRVJU
KG9iamVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CiAgICAgICAg
IG1fdG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBzaXplOwogICAgIH0KQEAgLTU1OSw5ICs1ODgs
MTcgQEAgcHVibGljOgogICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3Rv
ckRhdGEpCisgICAgdm9pZCB2aXNpdE1lbW9yeUNhY2hlKCkKKyAgICB7CisgICAgICAgIG1fZG9t
TWVtb3J5VXNhZ2UuYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1lbW9yeUNhY2hlKCkpOworICAgICAg
ICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCk7
CisgICAgfQorCisgICAgdm9pZCBkdW1wU3RhdGlzdGljcyhUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3Bl
Y3RvckRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gbV9kb21NZW1vcnlVc2FnZS5kdW1wU3Rh
dGlzdGljcyhpbnNwZWN0b3JEYXRhKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0obV9kb21N
ZW1vcnlVc2FnZS5kdW1wQ2FjaGVTdGF0aXN0aWNzKCkpOworICAgICAgICBjaGlsZHJlbi0+YWRk
SXRlbShtX2RvbU1lbW9yeVVzYWdlLmR1bXBET01TdGF0aXN0aWNzKCkpOworICAgICAgICBtX2Rv
bU1lbW9yeVVzYWdlLmNvdW50SW5zcGVjdG9yRGF0YShpbnNwZWN0b3JEYXRhKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC01NzEsOSArNjA4LDEwIEBAIHByaXZhdGU6CiAKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZp
c2l0ZWRPYmplY3RzJiB2aXNpdGVkT2JqZWN0cywgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3Bl
Y3RvckRhdGEpCit2b2lkIGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZpc2l0ZWRPYmplY3RzJiB2
aXNpdGVkT2JqZWN0cywgVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiog
Y2hpbGRyZW4sIEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQogewogICAgIERP
TVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdlLCB2aXNpdGVkT2JqZWN0cyk7CisK
ICAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3Ip
OwogCiAgICAgLy8gTWFrZSBzdXJlIGFsbCBkb2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1h
aW4gZnJhbWUgYXJlIGFjY291bnRlZC4KQEAgLTU4NSwyOSArNjIzLDkgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZpc2l0
ZWRPYmplY3RzJgogICAgIH0KIAogICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXRCaW5kaW5ncygp
OworICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXRNZW1vcnlDYWNoZSgpOwogCi0gICAgcmV0dXJu
IGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoaW5zcGVjdG9yRGF0YSk7Ci19Ci0KLXN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlDYWNoZUluZm8oKQot
ewotICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0YXRzID0gbWVtb3J5Q2FjaGUoKS0+Z2V0
U3RhdGlzdGljcygpOwotICAgIGludCB0b3RhbFNpemUgPSBzdGF0cy5pbWFnZXMuc2l6ZSArCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUgKwotICAgICAgICAg
ICAgICAgICAgICBzdGF0cy5zY3JpcHRzLnNpemUgKwotICAgICAgICAgICAgICAgICAgICBzdGF0
cy54c2xTdHlsZVNoZWV0cy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuZm9udHMu
c2l6ZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlU3RhdHMg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6
Om1lbW9yeUNhY2hlKTsKLSAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRTaXplKHRvdGFsU2l6ZSk7
Ci0KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+
IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3Jl
YXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdl
cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEltYWdlcyk7Ci0gICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBzdGF0cy5zY3JpcHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVk
U2NyaXB0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhz
bFN0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMp
OwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXpl
LCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsKLSAgICBtZW1vcnlDYWNoZVN0YXRzLT5z
ZXRDaGlsZHJlbihjaGlsZHJlbi5nZXQoKSk7Ci0gICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMu
cmVsZWFzZSgpOworICAgIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoY2hpbGRyZW4s
IGluc3BlY3RvckRhdGEpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4ganNFeHRlcm5hbFJlc291cmNlc0luZm8oVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmpl
Y3RzKQpAQCAtNjQxLDEwICs2NTksOSBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQ
cm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIFZp
c2l0ZWRPYmplY3RzIHZpc2l0ZWRPYmplY3RzOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShq
c0hlYXBJbmZvKCkpOwotICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hlSW5mbygpKTsK
ICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsgLy8gRklYTUU6
IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KLSAgICBjaGlsZHJlbi0+YWRkSXRlbShkb21UcmVlSW5m
byhtX3BhZ2UsIHZpc2l0ZWRPYmplY3RzLCAmaW5zcGVjdG9yRGF0YSkpOyAvLyBGSVhNRTogY29s
bGVjdCBmb3IgYWxsIHBhZ2VzPwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzRXh0ZXJuYWxSZXNv
dXJjZXNJbmZvKHZpc2l0ZWRPYmplY3RzKSk7CisgICAgZG9tVHJlZUluZm8obV9wYWdlLCB2aXNp
dGVkT2JqZWN0cywgY2hpbGRyZW4uZ2V0KCksICZpbnNwZWN0b3JEYXRhKTsgLy8gRklYTUU6IGNv
bGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJlbi0+YWRkSXRlbShpbnNwZWN0b3JEYXRh
LmR1bXBTdGF0aXN0aWNzKCkpOwogICAgIHByb2Nlc3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxk
cmVuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCmluZGV4IDJkYmU3NWU1NDg2NzVhNzQ0YmMwZmExNDI5MGMwZWRlM2RlNjg1
NzEuLjIwZTkwMDU0ZWI2YjRhZWEzMjY1MWRhN2M1NDYwZWNkZjFjMTMxZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKQEAgLTE5Myw0ICsxOTQsMTQgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzYXZl
UGFyc2VkU3R5bGVTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gc2gKICAgICBz
ZXREZWNvZGVkU2l6ZShtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0
ZXMoKSk7CiB9CiAKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlD
bGFzc0luZm88Q2FjaGVkQ1NTU3R5bGVTaGVldD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTKTsKKyAgICBpbmZvLnZp
c2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X2RlY29kZXIpOworICAgIGlmIChtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSkKKyAgICAgICAgaW5m
by5hZGRSYXdCdWZmZXIobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUuZ2V0KCksIG1fcGFyc2VkU3R5
bGVTaGVldENhY2hlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpKTsKKyAgICBpbmZvLmFkZFN0cmlu
ZyhtX2RlY29kZWRTaGVldFRleHQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBiNzBmMjY1ZGQyNzYxMTFlMjNh
ZTJhZTUxNTkwYThhZjQ1OTMyOGQ4Li4xZTMyNWI5NTcxMWJhOWZlZDhkOGFlZmI0MmUwZWNkYjQ3
MzQ1YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87
CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsK
ICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwpAQCAtNjAsNiArNjEsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiByZXN0
b3JlUGFyc2VkU3R5bGVTaGVldChjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAgICAgICAgIHZv
aWQgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+KTsK
ICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2Fu
VXNlU2hlZXQoYm9vbCBlbmZvcmNlTUlNRVR5cGUsIGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0
IHsgcmV0dXJuIFB1cmdlTGFzdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCmluZGV4IGZkZGQ3OWQ0N2UwODU5MTU5ZGM5NTUwMTI4NDkzNDRmYzEwMGFhYjku
LjA3YjUwYzk4NmY4MGE3NWM0ZWQyMjc2ZWU3OWQ4NTE0ZGJiZjViMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTIwNiw0ICsyMDYsMTYgQEAgdm9p
ZCBDYWNoZWRGb250OjplcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKICAgICBj
aGVja05vdGlmeSgpOwogfQogCit2b2lkIENhY2hlZEZvbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPENhY2hlZEZvbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUZvbnQpOworICAgIGluZm8udmlzaXRCYXNlQ2xh
c3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworI2lmIEVOQUJMRShTVkdfRk9OVFMpCisgICAgaW5m
by5hZGRNZW1iZXIobV9leHRlcm5hbFNWR0RvY3VtZW50KTsKKyNlbmRpZgorI2lmZGVmIFNUT1JF
X0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZvbnREYXRh
KTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAppbmRleCAzY2FmYzFlNTAzODg0MTliNmExMzc5Njc3ZWNlMmJlMmY2YjNiYTM3Li5jZmYzNDJh
MjVjMDAzNjg5NDgyMGNkNTdhZWU4ZGJmNWE5NmQxMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIFNWR0Zv
bnRFbGVtZW50KiBnZXRTVkdGb250QnlJZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICNlbmRpZgog
CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBt
X2ZvbnREYXRhOwogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZmIzMWYxYmFmNTdkYTBmMTIzOWNhYmZh
N2I4NmU3ZDA3MTI5N2Q3Mi4uZjYyNjFlZTVjMmU4N2MwMTZiMjgyMjQxMjY0ODRlMTBjOTNkZTNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00
ODAsNCArNDgwLDE0IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1h
Z2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG5vdGlmeU9ic2VydmVycygmcmVj
dCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENh
Y2hlZEltYWdlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNo
ZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRSYXdCdWZmZXIobV9pbWFnZS5nZXQoKSwg
ZGVjb2RlZFNpemUoKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpbmZvLmFkZE1lbWJlcihtX3N2
Z0ltYWdlQ2FjaGUpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggOWUzOTIxMTc0MzRmZjY0
NGI4N2I3MDJjMDc2NWM2MTY3OTI1YWI2Ny4uM2Q2ZDVmMDk3MWJiZDI3Y2VjMDk4YzFiYTBmY2Iy
MDZkZDQ0ZTIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTk0LDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25BZHZh
bmNlZChjb25zdCBJbWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlKiwgY29uc3QgSW50UmVjdCYpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAg
ICBJbWFnZSogbG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCBiMGE3MDMzMDRiNTkzN2I2NmMwMTQ0MDMyZDMzZGNiMDFlNjYwMjNmLi45
ZTU1MjdiNDRjOWY5ODIwMTA4M2U0OTNkZGEyMjU0NTcyYTYyYTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkBAIC0xNTksNCArMTYwLDExIEBAIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88Q2FjaGVkUmF3UmVzb3VyY2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgaW5mby52aXNp
dEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCBlMjk2YWI4N2VhYjU1Mjk3NDc4OGE4YTYyOTg5ZGM0OThmNjU2Njg0Li5jMzQ5
Yjg2NmEzNzY2YTlhMjVjMmI4MGQ3NTBlNDM5M2E1MWY1M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjksNiArMjksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDYWxsYmFjazsKIGNs
YXNzIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50OworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGlj
OgpAQCAtNDQsNiArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblJldXNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCmluZGV4IDM5OThlZmQzMjYzMzNmYWIyMmE1M2RjNGZkYTQwMjJmOGUzOThiNTQuLmRk
Mzg5ZmE2YmVmMjY0NGUzMTAwMmU2NjRiNDdmOWY1MzhlMGVlNGYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJQdXJnZWFibGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtNzc3LDQgKzc3OCwyNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVy
PENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1fcmVzb3VyY2UtPmRpZEFkZENsaWVudChtX2NsaWVu
dCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZv
PENhY2hlZFJlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3Vy
Y2VSZXF1ZXN0KTsKKyAgICBpbmZvLmFkZEhhc2hTZXQobV9jbGllbnRzKTsKKyAgICBpbmZvLmFk
ZFN0cmluZyhtX2FjY2VwdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9sb2Fk
ZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzcG9uc2UpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1fZGF0YSwgaW5mby5vYmplY3RUeXBlKCkpOworICAgIGluZm8uYWRkTWVt
YmVyKG1fY2FjaGVkTWV0YWRhdGEuZ2V0KCkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX3Jlc291cmNlVG9SZXZhbGlkYXRlKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX3Byb3h5UmVzb3VyY2UpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkSGFzaFNldChtX2hhbmRsZXNUb1JldmFsaWRhdGUpOworCisgICAgaWYgKG1fcHVyZ2Vh
YmxlRGF0YSAmJiAhbV9wdXJnZWFibGVEYXRhLT53YXNQdXJnZWQoKSkKKyAgICAgICAgaW5mby5h
ZGRSYXdCdWZmZXIobV9wdXJnZWFibGVEYXRhLmdldCgpLCBtX3B1cmdlYWJsZURhdGEtPnNpemUo
KSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggN2ZiZjczMzY1ODU1YjM4YTcwNTNjNTkyZGI2MDZmOGYxZWQyYTg0YS4uNDdiYzEw
NmNkNzMzYTM2Yzk3MmQ3ZDYwNDFmN2VhZDcwMjZkOTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOworY2xhc3MgTWVtb3J5T2JqZWN0SW5m
bzsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
U3VicmVzb3VyY2VMb2FkZXI7CkBAIC0yNDgsNiArMjQ5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0TG9hZEZpbmlzaFRpbWUoZG91YmxlIGZpbmlzaFRpbWUpIHsgbV9sb2FkRmluaXNoVGltZSA9
IGZpbmlzaFRpbWU7IH0KICAgICBkb3VibGUgbG9hZEZpbmlzaFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRGaW5pc2hUaW1lOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGVj
a05vdGlmeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlSGFuZGxlLmNwcAppbmRleCA4NzEyOTJjNjIzN2ZlYzAzMjAzNWE2MjlkN2U4MmI3
NTU4ZDRmN2U3Li5jNGU3ZDQ0MzFiNWNhOTIxZmY2MWJlN2RlMzljMGI2OTQzMjNmNTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2U6OnNldFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgCkBAIC0zOSw0ICs0MSwx
MSBAQCB2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6c2V0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRsZSh0aGlz
KTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5
Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlSGFuZGxlQmFzZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Jlc291cmNlKTsKK30KKworCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IDk1
Y2QwZmY3ZjhhZTRiMzQwNWI5MDk4NWZkNzY2OTM4YTkzOTAyNjMuLjE1ZDQ0Yzc1NzFjMTFiODQw
ZjlkM2UxNzE3ZDE3MThjN2ZhNWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKwogICAgIGNsYXNzIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB+Q2FjaGVkUmVz
b3VyY2VIYW5kbGVCYXNlKCkgeyBpZiAobV9yZXNvdXJjZSkgbV9yZXNvdXJjZS0+dW5yZWdpc3Rl
ckhhbmRsZSh0aGlzKTsgfQpAQCAtNDEsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHR5cGVkZWYgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6
KlVuc3BlY2lmaWVkQm9vbFR5cGU7CiAgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlID8gJkNhY2hlZFJlc291cmNlSGFuZGxlQmFz
ZTo6bV9yZXNvdXJjZSA6IDA7IH0KIAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKCkgOiBtX3Jlc291cmNlKDApIHt9CiAgICAgICAgIENhY2hlZFJl
c291cmNlSGFuZGxlQmFzZShDYWNoZWRSZXNvdXJjZSogcmVzKSB7IG1fcmVzb3VyY2UgPSByZXM7
IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRsZSh0aGlzKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggZTE5ODdjM2ZlMzgyNzkzMmNkYTNiY2M4MzJjNTFjY2E4ZmFkMTYzMS4uNmUxNDBj
YzcxZjdmMmY5YWNlOGIwOTYzMWQ0MmFkNTMwZjE0YjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NzQsNSAr
ODc0LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50UHJlbG9hZFN0YXRzKCkK
ICAgICAgICAgcHJpbnRmKCJJTUFHRVM6ICAlZCAoJWQgaGl0cywgaGl0IHJhdGUgJWQlJSlcbiIs
IGltYWdlcywgaW1hZ2VzIC0gaW1hZ2VNaXNzZXMsIChpbWFnZXMgLSBpbWFnZU1pc3NlcykgKiAx
MDAgLyBpbWFnZXMpOwogfQogI2VuZGlmCi0gICAgCisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlTG9hZGVyPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyKTsK
KyAgICBpbmZvLmFkZEluc3RydW1lbnRlZEhhc2hNYXAobV9kb2N1bWVudFJlc291cmNlcyk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgKaW5kZXggZDgyYjNiZjQyYTczOGM3NzViODZhMDgzNjJhZDVhOWExMmFlOWQzZC4u
NTM0ZTc0YzdlOWNhNGM4Y2ZjYzNkOWMwMDE4MjI0ZGRiYTBlNWZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTUyLDYg
KzUyLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVy
OwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiAKIC8vIFRoZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxl
c2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
IHsKQEAgLTExOCw2ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludFByZWxvYWRTdGF0
cygpOwogICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VS
TCYsIGJvb2wgZm9yUHJlbG9hZCA9IGZhbHNlKTsKICAgICAKKyAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VM
b2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNlKENhY2hl
ZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKaW5kZXggZjAzZmFkYjU3YThhZDIzZjZmMzAxODRmMWFhMDAxMjQ1ZTgwN2IzOS4u
ZmQ2N2Q3NzE5YzgyN2ZjZTRjZjEyOTM2ZjZjNTlkNWVkMjc0NDk2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC03MSw2ICs3
MSwxNCBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZAogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAK
K3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hl
ZFNWR0RvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkcpOworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2Fj
aGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9j
dW1lbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmlu
ZGV4IGIwNWVmNjdkMWM0MjcxYWEwNDhkY2EyYzRhMmE2NTk3NjUxNDA1MDAuLjU0ZDVhODg4MTJm
NWY2ZjcyY2Y1YzUxMzA0MTM0NmZhZmFiZTk2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBk
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0IE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBt
X2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDhjODNi
Y2E4ODI2NTEyNGUyOGVhMGE4ODRjOGZmODkwYjQ1YWU3MDAuLjgwN2UxNDcyMTViMjFmNDJjNDY0
NzYyNGY1NWE3NzQzNjQ3ZWI5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0Niw0ICsxNDcsMTUgQEAgdm9pZCBD
YWNoZWRTY3JpcHQ6OnNvdXJjZVByb3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpCiB9
CiAjZW5kaWYKIAordm9pZCBDYWNoZWRTY3JpcHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZv
PENhY2hlZFNjcmlwdD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNhY2hlZFJlc291cmNlU2NyaXB0KTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNz
PENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX3NjcmlwdCk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyNpZiBVU0UoSlNDKQorICAgIGluZm8uYWRk
TWVtYmVyKG1fc291cmNlUHJvdmlkZXJDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmlu
ZGV4IDFhNzZjMThmNDY3ZTQwYmQwNTkzNjBkMWRmMzc4MGJmZjc5MTRkYWYuLjY5MjEyMGZlM2I4
NmExMWQ1YjZhY2Y2OWQ3ZWRhMzgzMDEwMjFlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAg
ICBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogICAgIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiAKICAgICBjbGFzcyBDYWNoZWRTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAt
NjEsNiArNjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U291cmNlUHJv
dmlkZXJDYWNoZSogc291cmNlUHJvdmlkZXJDYWNoZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNv
dXJjZVByb3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpOwogI2VuZGlmCisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dCBPVkVSUklERTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyRmlyZWQoVGltZXI8Q2FjaGVkU2NyaXB0PiopOwogICAgICAgICB2aXJ0dWFsIFB1
cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIFB1cmdlTGFzdDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCBiOGQ3
YzVmOWE4ODk1MDllNDg5ZDgzZGUyMTUwNzgzYjY4ODBjMDNkLi5kMGE2YTc5MzYyOTE0YzdhZDJm
ZDYyOTQ4N2NlY2IxN2U0MWM0MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC02
Nyw2ICs2OCwxNCBAQCB2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OmRh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAordm9pZCBDYWNoZWRTaGFkZXI6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNoYWRlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyKTsKKyAg
ICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2RlY29kZXIpOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2hhZGVyU3RyaW5nKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFE
RVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4IGQx
ZGUxNGQ3NzVmMzgwZWU1YjNhM2U5MzU0YmEwZjdlOTkwODZkNzQuLjQyODY3NzBhZGNmODExYWQ4
NGUyZTRhMWQwM2I5OTUxYzk1M2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2hhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgQ2FjaGVkU2hhZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTQ2LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CiAgICAgdm9p
ZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
MzM2ZmNlNGFjNjBmZjMzODM3NDA1ZThiZWJlMTcxZGQ4NGJmY2EyMi4uYjA2NmMwYTljN2Q3Mzdm
ZmFiMGVmYmE5MTk3ODI2NGE2ZWFhYTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRT
dHlsZVNoZWV0Q2xpZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk2LDYgKzk3LDE0IEBAIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiAgICAg
Y2hlY2tOb3RpZnkoKTsKIH0KIAordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRYU0xTdHlsZVNoZWV0PiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VYU0wpOworICAg
IGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRk
U3RyaW5nKG1fc2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKICNl
bmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAppbmRleCBiOGY3MjgzZDM2NDkyOWYyODU2ZWE1OGEyN2UwNzdkODQ4ZjI4YTZi
Li4yYWE4ZGZhMjUxMzJmODIyNjc0ZTY4MTJiNjA0YjFjZTczN2FkMjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyOworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4dFJlc291
cmNlRGVjb2RlcjsKIAogI2lmIEVOQUJMRShYU0xUKQpAQCAtNTAsNiArNTEsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7CiAgICAg
ICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTdHJpbmcg
bV9zaGVldDsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDI5OWQx
MGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5NDU5ZDQyNTQuLmMxNjA4OWQ2NWQ4YzAwNGVmM2Qz
ZDQ2NmVhZTlmNzA5Y2FkZTYzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKQEAg
LTcxNSw2ICs3MTYsMTcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6Omdl
dFN0YXRpc3RpY3MoKQogICAgIHJldHVybiBzdGF0czsKIH0KIAordm9pZCBNZW1vcnlDYWNoZTo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88TWVtb3J5Q2FjaGU+IGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMp
OworICAgIGluZm8uYWRkSGFzaE1hcChtX3Jlc291cmNlcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKENhY2hl
ZFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaSAh
PSBlOyArK2kpIHsKKyAgICAgICAgaW5mby5hZGRTdHJpbmcoaS0+Zmlyc3QpOworICAgICAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOworICAgIH0KK30KKwogdm9pZCBN
ZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBtX2Rpc2FibGVk
ID0gZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmlu
ZGV4IDZmOTgzMjY2MjI4MjI0YTM5NjAzNTI0NDQyNDgzNGI1NDM2YmM3MTEuLjVhMmY5NDk1ZTgx
NThmZmNmY2IwOTEwNzA4MzczZDcxNzAxZjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZENTU1N0eWxl
U2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5IYXNoOwpAQCAtMTY4LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsaXZlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KICAgICB1bnNpZ25lZCBkZWFkU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lbW9yeUNhY2hl
KCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBtYWtlIHN1cmUg
bm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2VzIG5vdCBkZWxl
dGUgc2luZ2xldG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdl
YWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgK
aW5kZXggNDY4YjkyYjI1MTJiOGJmOGI3MDQ1YTI3NjFmMDgwZDkwMDA0ZDM0MS4uODM0MjI0MWQ0
Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIFB1cmdlYWJs
ZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1cmdlYWJsZUJ1ZmZlcik7
CiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgd2FzUHVyZ2VkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBtYWtlUHVyZ2VhYmxl
KGJvb2wgcHVyZ2VhYmxlKTsKLSAgICAgICAgCisKICAgICBwcml2YXRlOgogICAgICAgICBQdXJn
ZWFibGVCdWZmZXIoY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153245</attachid>
            <date>2012-07-19 06:40:29 -0700</date>
            <delta_ts>2012-07-19 07:25:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120719174028.patch</filename>
            <type>text/plain</type>
            <size>47640</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYjBkM2JjYTFjOWYy
NDA1MTUxZGU2NGNkOWU4ZjA2YmJmMGM3MS4uZmI4OTlmNDRlNTFkYTZlODhhNDNjYzllNWIyNzM4
N2U4OTY0MWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMi0wNy0xOSAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgcmVtZW1iZXIgdGhlIG9iamVjdHMgaW4gTWVtb3J5Q2FjaGUuCisgICAgICAg
IEl0IGp1c3QgdXNlcyB0aGUgdG90YWwgc2l6ZSBvZiBNZW1vcnlDYWNoZS4KKyAgICAgICAgQXMg
dGhlIHJlc3VsdCBNSSBjb3VsZCBjb3VudCB0aGUgc2FtZSBvYmplY3RzIHR3byB0aW1lcy4KKyAg
ICAgICAgVGhlIGZpcnN0IHRpbWUgdmlhIE1lbW9yeUNhY2hlJ3Mgc2l6ZSBhbmQgdGhlIHNlY29u
ZCB0aW1lIHZpYSBET00gdHJhdmVyc2luZy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3Qg
dHJhdmVyc2VzIHRocm91Z2ggTWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9N
LgorICAgICAgICBBbHNvIG5vdCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNv
dW50ZWQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFk
ZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE1lbWJlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpjYWxjdWxhdGVDb250YWluZXJTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZEhhc2hNYXApOgorICAgICAg
ICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6
b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5
RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAoQ2FjaGVkRm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRS
YXdSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNl
TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oOgorICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hl
ZFNjcmlwdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRY
U0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlD
YWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDctMTkgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtSZWZhY3Rvcmlu
Z10gVXNlIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSB0byB0YWtlIHVzZXIgYWdlbnQgc2hhZG93IHJv
b3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhZmE3MzJmYTEwMjVhYTA0MTY4NDEwMDAz
NTEyOTIxM2E4NmQ0NWJmLi5hNDJkN2ZlZmRhYTcxNmY1OGNjZTdlYjg5ODJlZmY1Mjg0OGJlODMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYwODAsNiArNjA4MCw4IEBAIHZvaWQgRG9j
dW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPERvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBpbmZvLnZpc2l0
QmFzZUNsYXNzPENvbnRhaW5lck5vZGU+KHRoaXMpOwogICAgIGluZm8uYWRkVmVjdG9yKG1fY3Vz
dG9tRm9udHMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZnJhbWUpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAg
IGluZm8uYWRkU3RyaW5nKG1fZG9jdW1lbnRVUkkpOwogICAgIGluZm8uYWRkU3RyaW5nKG1fYmFz
ZVRhcmdldCk7CiAgICAgaWYgKG1fcGFnZUdyb3VwVXNlclNoZWV0cykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAxMTRmOTZlNjlkNzQwZTY2OTA5ZDI0
NjM1NTAyNTgxODQ1ZTU2MTQwLi5mZmM3MjE3ZTk1ZDBmYjFmMWNlMzc0MDUwNjEwZTUyYTc0ZGIy
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC01
MiwxMiArNTIsMjEgQEAgcHVibGljOgogICAgICAgICBDU1MsCiAgICAgICAgIEJpbmRpbmcsCiAg
ICAgICAgIExvYWRlciwKKyAgICAgICAgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZSwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VDU1MsCisgICAgICAgIENhY2hl
ZFJlc291cmNlRm9udCwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VJbWFnZSwKKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VTY3JpcHQsCisgICAgICAgIENhY2hlZFJlc291cmNlU1ZHLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZVNoYWRlciwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VYU0wsCiAgICAgICAg
IExhc3RUeXBlRW50cnkKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb2Jq
ZWN0VHlwZSA9IE90aGVyKQogICAgIHsKLSAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0
cnVtZW50ZWRNZW1iZXIodGhpcywgdCk7CisgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5z
dHJ1bWVudGVkTWVtYmVyKHRoaXMsIHQsIG9iamVjdFR5cGUpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE1lbWJlcihjb25zdCBUJiB0LCBPYmplY3RUeXBlIG9i
amVjdFR5cGUpCkBAIC02Niw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlw
ZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3Qg
SGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3Qg
SGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZh
bHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExp
c3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVu
dE9ubHkgPSBmYWxzZSk7CkBAIC04NSwxOSArOTYsMTkgQEAgcHJvdGVjdGVkOgogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQg
YnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3Ry
dW1lbnRlZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29u
c3QgVCYgdCkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoJnQs
IGJ5UmVmZXJlbmNlKTsgfQorICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1i
ZXIoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRh
dGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCgmdCwgb2JqZWN0VHlwZSwgYnlSZWZlcmVu
Y2UpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RUeXBlIG9iamVjdFR5cGUpIHsgaW5zdHJ1bWVudGF0aW9uLT5hZGRNZW1iZXJJbXBsKCZ0
LCBvYmplY3RUeXBlLCBieVJlZmVyZW5jZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2lu
dGVyIGltcGxlbWVudGF0aW9uLgotICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRN
ZW1iZXIoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNv
bnN0JiB0KSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCh0LCBi
eVBvaW50ZXIpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihN
ZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCh0LCBvYmplY3RUeXBlLCBieVBvaW50
ZXIpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkTWVtYmVy
SW1wbCh0LCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgVCogY29u
c3QmLCBPd25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRNZW1iZXJJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUeXBlIG93bmluZ1R5cGUpIHsgYWRkSW5zdHJ1bWVudGVk
TWVtYmVySW1wbChvYmplY3QtPmdldCgpLCBvd25pbmdUeXBlKTsgfQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgUmVmUHRyPFQ+
KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5n
VHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG93bmluZ1R5
cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVt
YmVySW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlw
ZSwgT3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWVtYmVySW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9i
amVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBSZWZQdHI8VD4q
IGNvbnN0JiBvYmplY3QsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RU
eXBlLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJ
bnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIG93bmluZ1R5
cGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZE1lbWJlcklt
cGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdU
eXBlIG93bmluZ1R5cGUpCkBAIC0xMTcsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotICAgIHNpemVfdCBjYWxjdWxhdGVD
b250YWluZXJTaXplKGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpCisgICAgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29udGFp
bmVyJiBjb250YWluZXIsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAoY29udGVudE9ubHkgPyAwIDogc2l6ZW9mKGNvbnRhaW5lcikpICsgY29u
dGFpbmVyLmNhcGFjaXR5KCkgKiBzaXplb2YodHlwZW5hbWUgQ29udGFpbmVyOjpWYWx1ZVR5cGUp
OwogICAgIH0KQEAgLTE0MywxMSArMTU0LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lbW9yeU9i
amVjdEluZm8gewogcHVibGljOgotICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90
aGVyKQogICAgICAgICA6IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1lbnRh
dGlvbikKLSAgICAgICAgLCBtX29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhl
cikKKyAgICAgICAgLCBtX29iamVjdFR5cGUob2JqZWN0VHlwZSkKICAgICAgICAgLCBtX29iamVj
dFNpemUoMCkKLSAgICAgeyB9CisgICAgeyB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0VHlwZTsgfQog
ICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CkBA
IC0xNTksMTAgKzE3MCwxMCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RUeXBlIG9iamVjdFR5cGUpCiAgICAgewotICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7Ci0gICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNp
emVvZihUKTsKKyAgICAgICAgaWYgKG1fb2JqZWN0VHlwZSA9PSBNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok90aGVyKQorICAgICAgICAgICAgbV9vYmplY3RUeXBlID0gb2JqZWN0VHlwZTsKKyAgICAg
ICAgaWYgKCFtX29iamVjdFNpemUpCisgICAgICAgICAgICBtX29iamVjdFNpemUgPSBzaXplb2Yo
VCk7CiAgICAgfQogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1l
bnRhdGlvbjsKQEAgLTE3NiwxOCArMTg3LDE3IEBAIHRlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRNZW1iZXJJbXBsPFN0cmluZz4oY29uc3QgU3RyaW5nKiBjb25zCiAK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3Qs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAoIW9iamVjdCB8
fCB2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAob3duaW5nVHlwZSA9
PSBieVJlZmVyZW5jZSkgewotICAgICAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdElu
Zm8odGhpcyk7CisgICAgICAgIE1lbW9yeU9iamVjdEluZm8gbWVtb3J5T2JqZWN0SW5mbyh0aGlz
LCBvYmplY3RUeXBlKTsKICAgICAgICAgb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgmbWVtb3J5
T2JqZWN0SW5mbyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRl
cihhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUG9pbnRlcjxUPihvYmplY3QpKSk7CiB9CiAKLQog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBNZW1vcnlDbGFzc0luZm8gewogcHVibGljOgpA
QCAtMjAxLDEyICsyMTEsMTUgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
IHZvaWQgdmlzaXRCYXNlQ2xhc3MoY29uc3QgUCogcHRyKSB7IHB0ci0+UDo6cmVwb3J0TWVtb3J5
VXNhZ2UobV9tZW1vcnlPYmplY3RJbmZvKTsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUlu
c3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1lbWJlcik7IH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXIoY29uc3QgTSYgbWVt
YmVyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSA9IE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6T3RoZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZElu
c3RydW1lbnRlZE1lbWJlcihtZW1iZXIsIG9iamVjdFR5cGUpOyB9CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE0+IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbi0+YWRkTWVtYmVyKG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1h
cFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1f
b2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRIYXNoTWFwKG1hcCwgbV9vYmpl
Y3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2
b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaFNldChj
b25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0
cnVtZW50ZWRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBM
aXN0SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTGlzdEhh
c2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFZlY3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkVmVjdG9yKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0
cnVlKTsgfQogICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIs
IHNpemVfdCBzaXplKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVm
ZmVyLCBtX29iamVjdFR5cGUsIHNpemUpOyB9CkBAIC0yMTQsNiArMjI3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRTdHJpbmcoc3RyaW5nLCBtX29iamVjdFR5cGUpOyB9CiAgICAgdm9pZCBh
ZGRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZFN0cmluZygoY29uc3QgU3RyaW5nJilzdHJpbmcsIG1fb2JqZWN0VHlwZSk7IH0K
IAorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0
SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb247CkBAIC0yMjYsNiArMjQxLDE0IEBAIHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBPYmpl
Y3RUeXBlIG9iCiAgICAgY291bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRh
aW5lclNpemUoaGFzaE1hcCwgY29udGVudE9ubHkpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
SGFzaE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
SGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCwgT2JqZWN0VHlwZSBvYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5KQoreworICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBj
YWxjdWxhdGVDb250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CisgICAgZm9yICh0
eXBlbmFtZSBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IGhhc2hNYXAuYmVnaW4oKTsg
aSAhPSBoYXNoTWFwLmVuZCgpOyArK2kpCisgICAgICAgIGFkZEluc3RydW1lbnRlZE1lbWJlcihp
LT5zZWNvbmQpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4KIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBoYXNoU2V0
LCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBiZjFk
NWFlMWIwOGU0MmZhZTU5ZjY4ZDEyYTY0YzQ0MjYxZjY2MTg3Li4zYjUwNTFkMmFlNTc3MThlZGUw
ODY0Zjg5NjM0ODQ4MzFiMGJlNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTgwLDE0ICs4MCwxOSBAQCBzdGF0aWMgY29u
c3QgY2hhciBqc0V4dGVybmFsU3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRp
YyBjb25zdCBjaGFyIGluc3BlY3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBj
b25zdCBjaGFyIGluc3BlY3RvckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRp
YyBjb25zdCBjaGFyIGluc3BlY3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRh
IjsKLXN0YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3Rh
dGljIGNvbnN0IGNoYXIgcHJvY2Vzc1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1l
bW9yeSI7CiAKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdl
cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENz
c1N0eWxlU2hlZXRzIjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNo
ZWRTY3JpcHRzIjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAi
Q2FjaGVkWHNsU3R5bGVTaGVldHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9
ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9y
eUNhY2hlIjsKK3N0YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1l
bW9yeUNhY2hlU3RydWN0dXJlcyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtd
ID0gIkNhY2hlZFJlc291cmNlIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1h
Z2VbXSA9ICJDYWNoZWRJbWFnZXMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VD
U1NbXSA9ICJDYWNoZWRDc3NTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRS
ZXNvdXJjZVNjcmlwdFtdID0gIkNhY2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2Fj
aGVkUmVzb3VyY2VYU0xbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRSZXNvdXJjZUZvbnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRSZXNvdXJjZVNWR1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZFJlc291cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CisKIHN0
YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3Rh
dGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0
ZWQiOwogCkBAIC00NjgsMjMgKzQ3Myw0NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3RvdGFs
U2l6ZXNbaV0gPSAwOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQor
ICAgIHZvaWQgY291bnRJbnNwZWN0b3JEYXRhKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0
b3JEYXRhKSBjb25zdAogICAgIHsKLSAgICAgICAgc2l6ZV90IGluc3BlY3RvclNpemUKLSAgICAg
ICAgICAgID0gY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShtX3Zpc2l0ZWRPYmplY3RzKQotICAgICAg
ICAgICAgKyBjYWxjdWxhdGVDb250YWluZXJTaXplKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2lu
dGVycyk7CisgICAgICAgIHNpemVfdCBpbnNwZWN0b3JTaXplID0gY2FsY3VsYXRlQ29udGFpbmVy
U2l6ZShtX3Zpc2l0ZWRPYmplY3RzKSArIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUobV9kZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKTsKICAgICAgICAgaW5zcGVjdG9yRGF0YS0+YWRkQ29tcG9u
ZW50KE1lbW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9yRE9NRGF0YSwgaW5zcGVjdG9yU2l6ZSk7Cisg
ICAgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcENhY2hlU3Rh
dGlzdGljcygpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1
Y3R1cmVzOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisg
ICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOworCisgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAg
ICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlc10sIE1lbW9yeUJsb2NrTmFtZTo6
bWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlXSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDYWNoZWRSZXNvdXJjZUNTU10sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VD
U1MpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNp
emVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250XSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRSZXNvdXJjZUZvbnQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVk
UmVzb3VyY2VJbWFnZV0sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VJbWFnZSk7Cisg
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNjcmlwdF0sIE1lbW9yeUJsb2NrTmFt
ZTo6Y2FjaGVkUmVzb3VyY2VTY3JpcHQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGls
ZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2VTVkddLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlU1ZHKTsKKyAgICAgICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyXSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRSZXNvdXJjZVNoYWRlcik7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBibG9jayA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJs
b2NrTmFtZTo6bWVtb3J5Q2FjaGUpOworICAgICAgICBibG9jay0+c2V0U2l6ZSh0b3RhbFNpemUp
OworICAgICAgICBibG9jay0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGJsb2NrLnJlbGVhc2UoKTsKKyAgICB9CiAKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiBkdW1wRE9NU3RhdGlzdGljcygpIGNvbnN0CisgICAgewogICAgICAg
ICBzaXplX3QgdG90YWxTaXplID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBpIDwg
TGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPdGhlcjsgaSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1
Y3R1cmVzOyArK2kpCiAgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOwog
CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
OjpjcmVhdGUoKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCks
IG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsKLSAg
ICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tE
T01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOwotICAgICAgICBhZGRNZW1vcnlCbG9j
a0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZUNTUyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdl
dCgpLCBtX3RvdGFsU2l6ZXNbQmluZGluZ10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUJpbmRp
bmcpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3Rh
bFNpemVzW0xvYWRlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUxvYWRlcik7CisgICAgICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsK
KyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXpl
c1tNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTV0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURP
TSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFs
U2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRy
ZWVDU1MpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90
b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZ10sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZUJpbmRpbmcpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJl
bi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyXSwgTWVt
b3J5QmxvY2tOYW1lOjpkb21UcmVlTG9hZGVyKTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1l
KE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKICAgICAgICAgZG9tLT5zZXRTaXplKHRvdGFsU2l6ZSk7
CkBAIC01MTEsNiArNTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9i
amVjdFNpemUoT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkgT1ZFUlJJREUKICAg
ICB7CisgICAgICAgIEFTU0VSVChvYmplY3RUeXBlICE9IE90aGVyKTsKICAgICAgICAgQVNTRVJU
KG9iamVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CiAgICAgICAg
IG1fdG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBzaXplOwogICAgIH0KQEAgLTU1OSw5ICs1ODgs
MTcgQEAgcHVibGljOgogICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3Rv
ckRhdGEpCisgICAgdm9pZCB2aXNpdE1lbW9yeUNhY2hlKCkKKyAgICB7CisgICAgICAgIG1fZG9t
TWVtb3J5VXNhZ2UuYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1lbW9yeUNhY2hlKCkpOworICAgICAg
ICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCk7
CisgICAgfQorCisgICAgdm9pZCBkdW1wU3RhdGlzdGljcyhUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3Bl
Y3RvckRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gbV9kb21NZW1vcnlVc2FnZS5kdW1wU3Rh
dGlzdGljcyhpbnNwZWN0b3JEYXRhKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0obV9kb21N
ZW1vcnlVc2FnZS5kdW1wQ2FjaGVTdGF0aXN0aWNzKCkpOworICAgICAgICBjaGlsZHJlbi0+YWRk
SXRlbShtX2RvbU1lbW9yeVVzYWdlLmR1bXBET01TdGF0aXN0aWNzKCkpOworICAgICAgICBtX2Rv
bU1lbW9yeVVzYWdlLmNvdW50SW5zcGVjdG9yRGF0YShpbnNwZWN0b3JEYXRhKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC01NzEsOSArNjA4LDEwIEBAIHByaXZhdGU6CiAKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZp
c2l0ZWRPYmplY3RzJiB2aXNpdGVkT2JqZWN0cywgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3Bl
Y3RvckRhdGEpCitzdGF0aWMgdm9pZCBkb21UcmVlSW5mbyhQYWdlKiBwYWdlLCBWaXNpdGVkT2Jq
ZWN0cyYgdmlzaXRlZE9iamVjdHMsIFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4qIGNoaWxkcmVuLCBJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKIHsK
ICAgICBET01UcmVlc0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSwgdmlzaXRlZE9iamVj
dHMpOworCiAgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0Tm9kZVdyYXBwZXJzKCZkb21UcmVlc0l0
ZXJhdG9yKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9t
IHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCkBAIC01ODUsMjkgKzYyMyw5IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQYWdlKiBwYWdl
LCBWaXNpdGVkT2JqZWN0cyYKICAgICB9CiAKICAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0Qmlu
ZGluZ3MoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5Q2FjaGUoKTsKIAotICAg
IHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGluc3BlY3RvckRhdGEpOwot
fQotCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJ
bmZvKCkKLXsKLSAgICBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0cyA9IG1lbW9yeUNhY2hl
KCktPmdldFN0YXRpc3RpY3MoKTsKLSAgICBpbnQgdG90YWxTaXplID0gc3RhdHMuaW1hZ2VzLnNp
emUgKwotICAgICAgICAgICAgICAgICAgICBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplICsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdHMuc2NyaXB0cy5zaXplICsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRz
LmZvbnRzLnNpemU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlDYWNo
ZVN0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5Qmxv
Y2tOYW1lOjptZW1vcnlDYWNoZSk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3Rh
bFNpemUpOwotCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az46OmNyZWF0ZSgpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0
cy5pbWFnZXMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplLCBN
ZW1vcnlCbG9ja05hbWU6OmNhY2hlZENzc1N0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9j
a0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuc2NyaXB0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6
OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBz
dGF0cy54c2xTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxl
U2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9u
dHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRGb250cyk7Ci0gICAgbWVtb3J5Q2FjaGVT
dGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4uZ2V0KCkpOwotICAgIHJldHVybiBtZW1vcnlDYWNo
ZVN0YXRzLnJlbGVhc2UoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGNo
aWxkcmVuLCBpbnNwZWN0b3JEYXRhKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+IGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKFZpc2l0ZWRPYmplY3RzJiB2aXNp
dGVkT2JqZWN0cykKQEAgLTY0MSwxMCArNjU5LDkgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMK
ICAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CiAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0oanNIZWFwSW5mbygpKTsKLSAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1vcnlDYWNoZUlu
Zm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9wYWdlKSk7IC8v
IEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9t
VHJlZUluZm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgJmluc3BlY3RvckRhdGEpKTsgLy8gRklY
TUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJlbi0+YWRkSXRlbShqc0V4dGVy
bmFsUmVzb3VyY2VzSW5mbyh2aXNpdGVkT2JqZWN0cykpOworICAgIGRvbVRyZWVJbmZvKG1fcGFn
ZSwgdmlzaXRlZE9iamVjdHMsIGNoaWxkcmVuLmdldCgpLCAmaW5zcGVjdG9yRGF0YSk7IC8vIEZJ
WE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5zcGVj
dG9yRGF0YS5kdW1wU3RhdGlzdGljcygpKTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCAyZGJlNzVlNTQ4Njc1YTc0NGJjMGZhMTQyOTBjMGVk
ZTNkZTY4NTcxLi4yMGU5MDA1NGViNmI0YWVhMzI2NTFkYTdjNTQ2MGVjZGYxYzEzMWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCkBAIC0xOTMsNCArMTk0LDE0IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHNo
CiAgICAgc2V0RGVjb2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVzdGltYXRlZFNp
emVJbkJ5dGVzKCkpOwogfQogCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENhY2hlZENTU1N0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNTUyk7CisgICAg
aW5mby52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9kZWNvZGVyKTsKKyAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpCisgICAg
ICAgIGluZm8uYWRkUmF3QnVmZmVyKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLmdldCgpLCBtX3Bh
cnNlZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSk7CisgICAgaW5mby5h
ZGRTdHJpbmcobV9kZWNvZGVkU2hlZXRUZXh0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggYjcwZjI2NWRkMjc2
MTExZTIzYWUyYWU1MTU5MGE4YWY0NTkzMjhkOC4uMWUzMjViOTU3MTFiYTlmZWQ4ZDhhZWZiNDJl
MGVjZGI0NzM0NWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKKyAgICBjbGFzcyBNZW1vcnlPYmpl
Y3RJbmZvOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHlsZVNoZWV0Q29u
dGVudHM7CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKQEAgLTYwLDYgKzYxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAg
ICAgICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRl
bnRzPik7CiAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBwcml2YXRlOgogICAgICAgICBi
b29sIGNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVU
eXBlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHko
KSBjb25zdCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCBmZGRkNzlkNDdlMDg1OTE1OWRjOTU1MDEyODQ5MzQ0ZmMx
MDBhYWI5Li5jMjJhYmJhYWZhZDZlZmUyOTFiNWViOGQ1Y2ViNWM3MjM3Mjk2OTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZv
cm1EYXRhLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlPYmpl
Y3RJbmZvLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTIwNiw0ICsyMDcsMTYg
QEAgdm9pZCBDYWNoZWRGb250OjplcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykK
ICAgICBjaGVja05vdGlmeSgpOwogfQogCit2b2lkIENhY2hlZEZvbnQ6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvPENhY2hlZEZvbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUZvbnQpOworICAgIGluZm8udmlzaXRC
YXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworI2lmIEVOQUJMRShTVkdfRk9OVFMpCisg
ICAgaW5mby5hZGRNZW1iZXIobV9leHRlcm5hbFNWR0RvY3VtZW50KTsKKyNlbmRpZgorI2lmZGVm
IFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKKyAgICBpbmZvLmFkZE1lbWJlcihtX2Zv
bnREYXRhKTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAppbmRleCAzY2FmYzFlNTAzODg0MTliNmExMzc5Njc3ZWNlMmJlMmY2YjNiYTM3Li5j
ZmYzNDJhMjVjMDAzNjg5NDgyMGNkNTdhZWU4ZGJmNWE5NmQxMGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAg
IFNWR0ZvbnRFbGVtZW50KiBnZXRTVkdGb250QnlJZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICNl
bmRpZgogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKiBtX2ZvbnREYXRhOwogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZmIzMWYxYmFmNTdkYTBmMTIz
OWNhYmZhN2I4NmU3ZDA3MTI5N2Q3Mi4uZjYyNjFlZTVjMmU4N2MwMTZiMjgyMjQxMjY0ODRlMTBj
OTNkZTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC00ODAsNCArNDgwLDE0IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29u
c3QgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG5vdGlmeU9ic2VydmVy
cygmcmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENhY2hlZEltYWdlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgaW5mby52aXNpdEJhc2VDbGFz
czxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRSYXdCdWZmZXIobV9pbWFnZS5n
ZXQoKSwgZGVjb2RlZFNpemUoKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3N2Z0ltYWdlQ2FjaGUpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggOWUzOTIxMTc0
MzRmZjY0NGI4N2I3MDJjMDc2NWM2MTY3OTI1YWI2Ny4uM2Q2ZDVmMDk3MWJiZDI3Y2VjMDk4YzFi
YTBmY2IyMDZkZDQ0ZTIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKQEAgLTk0LDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRp
b25BZHZhbmNlZChjb25zdCBJbWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0
KGNvbnN0IEltYWdlKiwgY29uc3QgSW50UmVjdCYpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0
ZToKICAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCBiMGE3MDMzMDRiNTkzN2I2NmMwMTQ0MDMyZDMzZGNiMDFlNjYw
MjNmLi45ZTU1MjdiNDRjOWY5ODIwMTA4M2U0OTNkZGEyMjU0NTcyYTYyYTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xNTksNCArMTYwLDExIEBAIGJvb2wgQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkUmF3UmVzb3VyY2U+IGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgaW5m
by52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAppbmRleCBlMjk2YWI4N2VhYjU1Mjk3NDc4OGE4YTYyOTg5ZGM0OThmNjU2Njg0
Li5jMzQ5Yjg2NmEzNzY2YTlhMjVjMmI4MGQ3NTBlNDM5M2E1MWY1M2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjksNiArMjks
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDYWxsYmFj
azsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50OworY2xhc3MgTWVtb3J5T2JqZWN0SW5m
bzsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2Ugewog
cHVibGljOgpAQCAtNDQsNiArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblJldXNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAg
ICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDM5OThlZmQzMjYzMzNmYWIyMmE1M2RjNGZkYTQwMjJmOGUzOThi
NTQuLmRkMzg5ZmE2YmVmMjY0NGUzMTAwMmU2NjRiNDdmOWY1MzhlMGVlNGYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJQdXJnZWFibGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtNzc3LDQgKzc3OCwyNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjp0aW1lckZpcmVk
KFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1fcmVzb3VyY2UtPmRpZEFkZENsaWVudCht
X2NsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPENhY2hlZFJlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
cmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBpbmZvLmFkZEhhc2hTZXQobV9jbGllbnRzKTsKKyAgICBp
bmZvLmFkZFN0cmluZyhtX2FjY2VwdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9sb2FkZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzcG9uc2UpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fZGF0YSwgaW5mby5vYmplY3RUeXBlKCkpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fY2FjaGVkTWV0YWRhdGEuZ2V0KCkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX25leHRJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZElu
c3RydW1lbnRlZE1lbWJlcihtX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Jlc291cmNlVG9SZXZhbGlkYXRlKTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Byb3h5UmVzb3VyY2UpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkSGFzaFNldChtX2hhbmRsZXNUb1JldmFsaWRhdGUpOworCisgICAgaWYgKG1f
cHVyZ2VhYmxlRGF0YSAmJiAhbV9wdXJnZWFibGVEYXRhLT53YXNQdXJnZWQoKSkKKyAgICAgICAg
aW5mby5hZGRSYXdCdWZmZXIobV9wdXJnZWFibGVEYXRhLmdldCgpLCBtX3B1cmdlYWJsZURhdGEt
PnNpemUoKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggN2ZiZjczMzY1ODU1YjM4YTcwNTNjNTkyZGI2MDZmOGYxZWQyYTg0YS4u
NDdiYzEwNmNkNzMzYTM2Yzk3MmQ3ZDYwNDFmN2VhZDcwMjZkOTRjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xh
c3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOworY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CkBAIC0yNDgsNiArMjQ5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TG9hZEZpbmlzaFRpbWUoZG91YmxlIGZpbmlzaFRpbWUpIHsgbV9sb2FkRmluaXNo
VGltZSA9IGZpbmlzaFRpbWU7IH0KICAgICBkb3VibGUgbG9hZEZpbmlzaFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRGaW5pc2hUaW1lOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjaGVja05vdGlmeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcAppbmRleCA4NzEyOTJjNjIzN2ZlYzAzMjAzNWE2Mjlk
N2U4MmI3NTU4ZDRmN2U3Li5jNGU3ZDQ0MzFiNWNhOTIxZmY2MWJlN2RlMzljMGI2OTQzMjNmNTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUhhbmRsZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUhh
bmRsZUJhc2U6OnNldFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgCkBAIC0zOSw0
ICs0MSwxMSBAQCB2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6c2V0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRs
ZSh0aGlzKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlSGFuZGxlQmFzZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Jlc291cmNlKTsKK30KKworCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmlu
ZGV4IDk1Y2QwZmY3ZjhhZTRiMzQwNWI5MDk4NWZkNzY2OTM4YTkzOTAyNjMuLjE1ZDQ0Yzc1NzFj
MTFiODQwZjlkM2UxNzE3ZDE3MThjN2ZhNWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC0zMCw2ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKwogICAgIGNs
YXNzIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB+Q2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlKCkgeyBpZiAobV9yZXNvdXJjZSkgbV9yZXNvdXJjZS0+dW5y
ZWdpc3RlckhhbmRsZSh0aGlzKTsgfQpAQCAtNDEsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHR5cGVkZWYgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGU7CiAgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVk
Qm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlID8gJkNhY2hlZFJlc291cmNlSGFu
ZGxlQmFzZTo6bV9yZXNvdXJjZSA6IDA7IH0KIAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKCkgOiBtX3Jlc291cmNlKDApIHt9CiAgICAgICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZShDYWNoZWRSZXNvdXJjZSogcmVzKSB7IG1fcmVzb3VyY2Ug
PSByZXM7IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRsZSh0aGlzKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggZTE5ODdjM2ZlMzgyNzkzMmNkYTNiY2M4MzJjNTFjY2E4ZmFkMTYzMS4u
NmUxNDBjYzcxZjdmMmY5YWNlOGIwOTYzMWQ0MmFkNTMwZjE0YjRhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04
NzQsNSArODc0LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50UHJlbG9hZFN0
YXRzKCkKICAgICAgICAgcHJpbnRmKCJJTUFHRVM6ICAlZCAoJWQgaGl0cywgaGl0IHJhdGUgJWQl
JSlcbiIsIGltYWdlcywgaW1hZ2VzIC0gaW1hZ2VNaXNzZXMsIChpbWFnZXMgLSBpbWFnZU1pc3Nl
cykgKiAxMDAgLyBpbWFnZXMpOwogfQogI2VuZGlmCi0gICAgCisKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlTG9hZGVy
PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9h
ZGVyKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZEhhc2hNYXAobV9kb2N1bWVudFJlc291cmNl
cyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKaW5kZXggZDgyYjNiZjQyYTczOGM3NzViODZhMDgzNjJhZDVhOWExMmFl
OWQzZC4uNTM0ZTc0YzdlOWNhNGM4Y2ZjYzNkOWMwMDE4MjI0ZGRiYTBlNWZlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdl
TG9hZGVyOwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiAKIC8vIFRoZSBD
YWNoZWRSZXNvdXJjZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2Vz
L3N0eWxlc2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyIHsKQEAgLTExOCw2ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludFByZWxv
YWRTdGF0cygpOwogICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgS1VSTCYsIGJvb2wgZm9yUHJlbG9hZCA9IGZhbHNlKTsKICAgICAKKyAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVz
b3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNl
KENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZjAzZmFkYjU3YThhZDIzZjZmMzAxODRmMWFhMDAxMjQ1ZTgw
N2IzOS4uZmQ2N2Q3NzE5YzgyN2ZjZTRjZjEyOTM2ZjZjNTlkNWVkMjc0NDk2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC03
MSw2ICs3MSwxNCBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZAogICAgIGNoZWNrTm90aWZ5KCk7
CiB9CiAKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZv
PENhY2hlZFNWR0RvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkcpOworICAgIGluZm8udmlzaXRCYXNlQ2xh
c3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KG1fZG9jdW1lbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCmluZGV4IGIwNWVmNjdkMWM0MjcxYWEwNDhkY2EyYzRhMmE2NTk3NjUxNDA1MDAuLjU0ZDVh
ODg4MTJmNWY2ZjcyY2Y1YzUxMzA0MTM0NmZhZmFiZTk2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw2ICs0Myw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IDhjODNiY2E4ODI2NTEyNGUyOGVhMGE4ODRjOGZmODkwYjQ1YWU3MDAuLjgwN2UxNDcyMTViMjFm
NDJjNDY0NzYyNGY1NWE3NzQzNjQ3ZWI5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0Niw0ICsxNDcsMTUgQEAg
dm9pZCBDYWNoZWRTY3JpcHQ6OnNvdXJjZVByb3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVs
dGEpCiB9CiAjZW5kaWYKIAordm9pZCBDYWNoZWRTY3JpcHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPENhY2hlZFNjcmlwdD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2NyaXB0KTsKKyAgICBpbmZvLnZpc2l0QmFz
ZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX3Njcmlw
dCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyNpZiBVU0UoSlNDKQorICAgIGlu
Zm8uYWRkTWVtYmVyKG1fc291cmNlUHJvdmlkZXJDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oCmluZGV4IDFhNzZjMThmNDY3ZTQwYmQwNTkzNjBkMWRmMzc4MGJmZjc5MTRkYWYuLjY5MjEy
MGZlM2I4NmExMWQ1YjZhY2Y2OWQ3ZWRhMzgzMDEwMjFlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKKyAgICBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogICAgIGNsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7CiAKICAgICBjbGFzcyBDYWNoZWRTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2Ug
ewpAQCAtNjEsNiArNjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U291
cmNlUHJvdmlkZXJDYWNoZSogc291cmNlUHJvdmlkZXJDYWNoZSgpIGNvbnN0OwogICAgICAgICB2
b2lkIHNvdXJjZVByb3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpOwogI2VuZGlmCisK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGVjb2RlZERh
dGFEZWxldGlvblRpbWVyRmlyZWQoVGltZXI8Q2FjaGVkU2NyaXB0PiopOwogICAgICAgICB2aXJ0
dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIFB1cmdlTGFz
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRl
eCBiOGQ3YzVmOWE4ODk1MDllNDg5ZDgzZGUyMTUwNzgzYjY4ODBjMDNkLi5kMGE2YTc5MzYyOTE0
YzdhZDJmZDYyOTQ4N2NlY2IxN2U0MWM0MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkBAIC02Nyw2ICs2OCwxNCBAQCB2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAordm9pZCBDYWNoZWRTaGFkZXI6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNoYWRlcj4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVy
KTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBp
bmZvLmFkZE1lbWJlcihtX2RlY29kZXIpOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2hhZGVyU3Ry
aW5nKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENT
U19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmlu
ZGV4IGQxZGUxNGQ3NzVmMzgwZWU1YjNhM2U5MzU0YmEwZjdlOTkwODZkNzQuLjQyODY3NzBhZGNm
ODExYWQ4NGUyZTRhMWQwM2I5OTUxYzk1M2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIAogY2xhc3MgQ2FjaGVkU2hhZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTQ2
LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CiAg
ICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAK
aW5kZXggMzM2ZmNlNGFjNjBmZjMzODM3NDA1ZThiZWJlMTcxZGQ4NGJmY2EyMi4uYjA2NmMwYTlj
N2Q3MzdmZmFiMGVmYmE5MTk3ODI2NGE2ZWFhYTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJD
YWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk2LDYgKzk3LDE0IEBAIHZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMp
CiAgICAgY2hlY2tOb3RpZnkoKTsKIH0KIAordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRYU0xTdHlsZVNoZWV0PiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VYU0wp
OworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGlu
Zm8uYWRkU3RyaW5nKG1fc2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9
CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCBiOGY3MjgzZDM2NDkyOWYyODU2ZWE1OGEyN2UwNzdkODQ4
ZjI4YTZiLi4yYWE4ZGZhMjUxMzJmODIyNjc0ZTY4MTJiNjA0YjFjZTczN2FkMjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIAogI2lmIEVOQUJMRShYU0xUKQpAQCAtNTAsNiArNTEsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7
CiAgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBT
dHJpbmcgbV9zaGVldDsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4
IDI5OWQxMGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5NDU5ZDQyNTQuLmMxNjA4OWQ2NWQ4YzAw
NGVmM2QzZDQ2NmVhZTlmNzA5Y2FkZTYzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2gu
aCIKQEAgLTcxNSw2ICs3MTYsMTcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2Fj
aGU6OmdldFN0YXRpc3RpY3MoKQogICAgIHJldHVybiBzdGF0czsKIH0KIAordm9pZCBNZW1vcnlD
YWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88TWVtb3J5Q2FjaGU+IGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVj
dHVyZXMpOworICAgIGluZm8uYWRkSGFzaE1hcChtX3Jlc291cmNlcyk7CisgICAgQ2FjaGVkUmVz
b3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3Ig
KENhY2hlZFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4o
KTsgaSAhPSBlOyArK2kpIHsKKyAgICAgICAgaW5mby5hZGRTdHJpbmcoaS0+Zmlyc3QpOworICAg
ICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOworICAgIH0KK30KKwog
dm9pZCBNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBtX2Rp
c2FibGVkID0gZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCmluZGV4IDZmOTgzMjY2MjI4MjI0YTM5NjAzNTI0NDQyNDgzNGI1NDM2YmM3MTEuLjVhMmY5
NDk1ZTgxNThmZmNmY2IwOTEwNzA4MzczZDcxNzAxZjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZENT
U1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyOwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5IYXNoOwpAQCAtMTY4LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBs
aXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KICAgICB1bnNpZ25lZCBkZWFk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAorICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lbW9y
eUNhY2hlKCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBtYWtl
IHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2VzIG5v
dCBkZWxldGUgc2luZ2xldG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1B1cmdlYWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVm
ZmVyLmgKaW5kZXggNDY4YjkyYjI1MTJiOGJmOGI3MDQ1YTI3NjFmMDgwZDkwMDA0ZDM0MS4uODM0
MjI0MWQ0Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIFB1
cmdlYWJsZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1cmdlYWJsZUJ1
ZmZlcik7CiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgd2FzUHVyZ2VkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBtYWtlUHVy
Z2VhYmxlKGJvb2wgcHVyZ2VhYmxlKTsKLSAgICAgICAgCisKICAgICBwcml2YXRlOgogICAgICAg
ICBQdXJnZWFibGVCdWZmZXIoY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153256</attachid>
            <date>2012-07-19 07:25:26 -0700</date>
            <delta_ts>2012-08-02 02:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120719182524.patch</filename>
            <type>text/plain</type>
            <size>47525</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYjBkM2JjYTFjOWYy
NDA1MTUxZGU2NGNkOWU4ZjA2YmJmMGM3MS4uNmVkMjBiZTNmNWEwYmQ4NGJiODRlZmI3YTE5OTdm
YmViMzljZjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wNy0xOSAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgbWFyayB0aGUgbWVtb3J5IGNhY2hlIG9iamVjdHMgYXMgdmlzaXRlZC4KKyAg
ICAgICAgQXMgYSByZXN1bHQgTUkgY291bGQgY291bnQgdGhlIHNhbWUgb2JqZWN0cyBtdWx0aXBs
ZSB0aW1lcy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3QgdHJhdmVyc2VzIHRocm91Z2gg
TWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9NLgorICAgICAgICBBbHNvIG5v
dCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNvdW50ZWQuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1lbWJl
cik6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFkZEluc3RydW1lbnRlZE1lbWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1l
bnRlZE1lbWJlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpjYWxjdWxhdGVDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVj
dEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0
SW5mbzo6cmVwb3J0T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0lu
Zm86OmFkZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFz
c0luZm86OmFkZEluc3RydW1lbnRlZEhhc2hNYXApOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6b2JqZWN0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAoQ2FjaGVkRm9udCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSYXdSZXNvdXJjZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAo
Q2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFNjcmlwdCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
YWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlDYWNoZSk6CisgICAgICAgICog
cGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDctMTkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55
YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gVXNlIHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSB0byB0YWtlIHVzZXIgYWdlbnQgc2hhZG93IHJvb3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBhZmE3MzJmYTEwMjVhYTA0MTY4NDEwMDAzNTEyOTIxM2E4NmQ0NWJmLi5h
NDJkN2ZlZmRhYTcxNmY1OGNjZTdlYjg5ODJlZmY1Mjg0OGJlODMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTYwODAsNiArNjA4MCw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVt
b3J5Q2xhc3NJbmZvPERvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENvbnRhaW5l
ck5vZGU+KHRoaXMpOwogICAgIGluZm8uYWRkVmVjdG9yKG1fY3VzdG9tRm9udHMpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZnJhbWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgIGluZm8uYWRkU3RyaW5nKG1f
ZG9jdW1lbnRVUkkpOwogICAgIGluZm8uYWRkU3RyaW5nKG1fYmFzZVRhcmdldCk7CiAgICAgaWYg
KG1fcGFnZUdyb3VwVXNlclNoZWV0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uaAppbmRleCAxMTRmOTZlNjlkNzQwZTY2OTA5ZDI0NjM1NTAyNTgxODQ1ZTU2MTQw
Li5mZmM3MjE3ZTk1ZDBmYjFmMWNlMzc0MDUwNjEwZTUyYTc0ZGIyNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC01MiwxMiArNTIsMjEgQEAgcHVi
bGljOgogICAgICAgICBDU1MsCiAgICAgICAgIEJpbmRpbmcsCiAgICAgICAgIExvYWRlciwKKyAg
ICAgICAgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzLAorICAgICAgICBDYWNoZWRSZXNvdXJjZSwKKyAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VDU1MsCisgICAgICAgIENhY2hlZFJlc291cmNlRm9udCwKKyAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VJbWFnZSwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTY3JpcHQs
CisgICAgICAgIENhY2hlZFJlc291cmNlU1ZHLAorICAgICAgICBDYWNoZWRSZXNvdXJjZVNoYWRl
ciwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VYU0wsCiAgICAgICAgIExhc3RUeXBlRW50cnkKICAg
ICB9OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSA9IE90aGVyKQog
ICAgIHsKLSAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRNZW1iZXIodGhp
cywgdCk7CisgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkTWVtYmVyKHRo
aXMsIHQsIG9iamVjdFR5cGUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkIGFkZE1lbWJlcihjb25zdCBUJiB0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCkBAIC02Niw2
ICs3NSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1h
cFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJv
b2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBU
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBPYmpl
Y3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmLCBPYmpl
Y3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRU
eXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNoU2V0KGNvbnN0IExp
c3RIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CkBA
IC04NSwxOSArOTYsMTkgQEAgcHJvdGVjdGVkOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVt
ZW50YXRpb24uCi0gICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihNZW1v
cnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCkgeyBpbnN0cnVt
ZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoJnQsIGJ5UmVmZXJlbmNlKTsgfQor
ICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXIoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVu
dGVkTWVtYmVySW1wbCgmdCwgb2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9CiAgICAgICAgIHN0
YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgVCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5
cGUpIHsgaW5zdHJ1bWVudGF0aW9uLT5hZGRNZW1iZXJJbXBsKCZ0LCBvYmplY3RUeXBlLCBieVJl
ZmVyZW5jZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3Ry
dWN0IE93bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVudGF0aW9u
LgotICAgICAgICBzdGF0aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXIoTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0KSB7IGluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbCh0LCBieVBvaW50ZXIpOyB9CisgICAg
ICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1
bWVudGVkTWVtYmVySW1wbCh0LCBvYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9CiAgICAgICAgIHN0
YXRpYyB2b2lkIGFkZE1lbWJlcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlv
biwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBv
YmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkTWVtYmVySW1wbCh0LCBvYmplY3RUeXBl
LCBieVBvaW50ZXIpOyB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lk
IGFkZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgVCogY29uc3QmLCBPd25pbmdUeXBlKTsK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBs
KGNvbnN0IE93blB0cjxUPiogY29uc3QmIG9iamVjdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
d25pbmdUeXBlIG93bmluZ1R5cGUpIHsgYWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbChvYmplY3Qt
PmdldCgpLCBvd25pbmdUeXBlKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFk
ZEluc3RydW1lbnRlZE1lbWJlckltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJbnN0cnVt
ZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG93bmluZ1R5cGUpOyB9CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBUKiBj
b25zdCYsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVtYmVySW1wbChj
b25zdCBPd25QdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2Jq
ZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1R5cGUgb3du
aW5nVHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJbXBsKG9iamVjdC0+Z2V0KCksIG9iamVj
dFR5cGUsIG93bmluZ1R5cGUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRk
SW5zdHJ1bWVudGVkTWVtYmVySW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiBvYmplY3QsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok93bmluZ1R5cGUgb3duaW5nVHlwZSkgeyBhZGRJbnN0cnVtZW50ZWRNZW1iZXJJ
bXBsKG9iamVjdC0+Z2V0KCksIG9iamVjdFR5cGUsIG93bmluZ1R5cGUpOyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZE1lbWJlckltcGwoY29uc3QgVCogY29uc3Qm
IG9iamVjdCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCkBA
IC0xMTcsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29udGFpbmVyPgotICAgIHNpemVfdCBjYWxjdWxhdGVDb250YWluZXJTaXplKGNvbnN0
IENvbnRhaW5lciYgY29udGFpbmVyLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpCisgICAgc2l6
ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIsIGJv
b2wgY29udGVudE9ubHkgPSBmYWxzZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAoY29u
dGVudE9ubHkgPyAwIDogc2l6ZW9mKGNvbnRhaW5lcikpICsgY29udGFpbmVyLmNhcGFjaXR5KCkg
KiBzaXplb2YodHlwZW5hbWUgQ29udGFpbmVyOjpWYWx1ZVR5cGUpOwogICAgIH0KQEAgLTE0Mywx
MSArMTU0LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lbW9yeU9iamVjdEluZm8gewogcHVibGlj
OgotICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0
cnVtZW50YXRpb24pCisgICAgTWVtb3J5T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb24q
IG1lbW9yeUluc3RydW1lbnRhdGlvbiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBl
IG9iamVjdFR5cGUgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQogICAgICAgICA6IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1lbnRhdGlvbikKLSAgICAgICAgLCBt
X29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlcikKKyAgICAgICAgLCBtX29i
amVjdFR5cGUob2JqZWN0VHlwZSkKICAgICAgICAgLCBtX29iamVjdFNpemUoMCkKLSAgICAgeyB9
CisgICAgeyB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0VHlwZTsgfQogICAgIHNpemVfdCBvYmplY3RT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTaXplOyB9CkBAIC0xNTksMTAgKzE3MCwxMCBA
QCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0T2JqZWN0
SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5
cGUpCiAgICAgewotICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T3RoZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fb2JqZWN0VHlwZSA9
IG9iamVjdFR5cGU7Ci0gICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKKyAgICAgICAg
aWYgKG1fb2JqZWN0VHlwZSA9PSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICAg
ICAgICAgbV9vYmplY3RUeXBlID0gb2JqZWN0VHlwZTsKKyAgICAgICAgaWYgKCFtX29iamVjdFNp
emUpCisgICAgICAgICAgICBtX29iamVjdFNpemUgPSBzaXplb2YoVCk7CiAgICAgfQogCiAgICAg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsKQEAgLTE3Niwx
OCArMTg3LDE3IEBAIHRlbXBsYXRlIDw+IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRN
ZW1iZXJJbXBsPFN0cmluZz4oY29uc3QgU3RyaW5nKiBjb25zCiAKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkTWVtYmVy
SW1wbChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVt
ZW50ZWRNZW1iZXJJbXBsKGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmlu
Z1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBpZiAoIW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAob3duaW5nVHlwZSA9PSBieVJlZmVyZW5jZSkgewot
ICAgICAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhpcyk7CisgICAgICAg
IE1lbW9yeU9iamVjdEluZm8gbWVtb3J5T2JqZWN0SW5mbyh0aGlzLCBvYmplY3RUeXBlKTsKICAg
ICAgICAgb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgmbWVtb3J5T2JqZWN0SW5mbyk7CiAgICAg
fSBlbHNlCiAgICAgICAgIGRlZmVySW5zdHJ1bWVudGVkUG9pbnRlcihhZG9wdFB0cihuZXcgSW5z
dHJ1bWVudGVkUG9pbnRlcjxUPihvYmplY3QpKSk7CiB9CiAKLQogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBjbGFzcyBNZW1vcnlDbGFzc0luZm8gewogcHVibGljOgpAQCAtMjAxLDEyICsyMTEsMTUg
QEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+IHZvaWQgdmlzaXRCYXNlQ2xh
c3MoY29uc3QgUCogcHRyKSB7IHB0ci0+UDo6cmVwb3J0TWVtb3J5VXNhZ2UobV9tZW1vcnlPYmpl
Y3RJbmZvKTsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1lbWJlcik7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4g
dm9pZCBhZGRJbnN0cnVtZW50ZWRNZW1iZXIoY29uc3QgTSYgbWVtYmVyLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T3RoZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1lbWJlciht
ZW1iZXIsIG9iamVjdFR5cGUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+IHZvaWQgYWRk
TWVtYmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTWVt
YmVyKG1lbWJlciwgbV9vYmplY3RUeXBlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhh
c2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkgeyBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5hZGRJbnN0cnVtZW50ZWRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQor
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29u
c3QgSGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNl
dChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFz
aFNldFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYg
c2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRIYXNoU2V0KHNl
dCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExpc3RI
YXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmIHNl
dCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkTGlzdEhhc2hTZXQoc2V0LCBtX29iamVj
dFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQg
YWRkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRh
dGlvbi0+YWRkVmVjdG9yKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHZvaWQg
YWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCBzaXplKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVmZmVyLCBtX29iamVjdFR5cGUs
IHNpemUpOyB9CkBAIC0yMTQsNiArMjI3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRTdHJp
bmcoc3RyaW5nLCBtX29iamVjdFR5cGUpOyB9CiAgICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFN0cmluZygo
Y29uc3QgU3RyaW5nJilzdHJpbmcsIG1fb2JqZWN0VHlwZSk7IH0KIAorICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RUeXBlOyB9CisKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0SW5mbyogbV9tZW1vcnlPYmpl
Y3RJbmZvOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRp
b247CkBAIC0yMjYsNiArMjQxLDE0IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRI
YXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBoYXNoTWFwLCBPYmplY3RUeXBlIG9iCiAgICAgY291
bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoaGFzaE1hcCwg
Y29udGVudE9ubHkpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1hcFR5cGU+Cit2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcChjb25zdCBIYXNo
TWFwVHlwZSYgaGFzaE1hcCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
KQoreworICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBjYWxjdWxhdGVDb250YWluZXJT
aXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CisgICAgZm9yICh0eXBlbmFtZSBIYXNoTWFwVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgaSA9IGhhc2hNYXAuYmVnaW4oKTsgaSAhPSBoYXNoTWFwLmVuZCgp
OyArK2kpCisgICAgICAgIGFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOworfQorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG9iamVj
dFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBiZjFkNWFlMWIwOGU0MmZhZTU5ZjY4
ZDEyYTY0YzQ0MjYxZjY2MTg3Li5lM2NhMGI1YmJiNTFkMmRmYTYzMjNkYWU3ZjFhNzJkMGUxMzU0
N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKQEAgLTgwLDE0ICs4MCwxOSBAQCBzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVybmFs
U3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBjb25zdCBj
aGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJv
Y2Vzc1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CiAKLXN0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdlcyI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENzc1N0eWxlU2hlZXRzIjsKLXN0
YXRpYyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNoZWRTY3JpcHRzIjsKLXN0YXRp
YyBjb25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVl
dHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250cyI7Citz
dGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9yeUNhY2hlIjsKK3N0YXRpYyBj
b25zdCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1lbW9yeUNhY2hlU3RydWN0dXJl
cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtdID0gIkNhY2hlZFJlc291cmNl
IjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1hZ2VbXSA9ICJDYWNoZWRJbWFn
ZXMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VDU1NbXSA9ICJDYWNoZWRDc3NT
dHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNjcmlwdFtdID0g
IkNhY2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VYU0xbXSA9
ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJj
ZUZvbnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJj
ZVNWR1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJl
c291cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CisKIHN0YXRpYyBjb25zdCBjaGFyIHJl
bmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVu
ZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOwogCkBAIC00NjgsMjMg
KzQ3Myw0NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOwogICAg
IH0KIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNz
KEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQorICAgIHZvaWQgY291bnRJbnNw
ZWN0b3JEYXRhKEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKSBjb25zdAogICAg
IHsKLSAgICAgICAgc2l6ZV90IGluc3BlY3RvclNpemUKLSAgICAgICAgICAgID0gY2FsY3VsYXRl
Q29udGFpbmVyU2l6ZShtX3Zpc2l0ZWRPYmplY3RzKQotICAgICAgICAgICAgKyBjYWxjdWxhdGVD
b250YWluZXJTaXplKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycyk7CisgICAgICAgIHNp
emVfdCBpbnNwZWN0b3JTaXplID0gY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShtX3Zpc2l0ZWRPYmpl
Y3RzKSArIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUobV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50
ZXJzKTsKICAgICAgICAgaW5zcGVjdG9yRGF0YS0+YWRkQ29tcG9uZW50KE1lbW9yeUJsb2NrTmFt
ZTo6aW5zcGVjdG9yRE9NRGF0YSwgaW5zcGVjdG9yU2l6ZSk7CisgICAgfQorCisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JNZW1vcnlDYWNoZSgpIGNv
bnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgZm9yIChp
bnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOyBpIDwg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0
b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOworCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok1lbW9yeUNhY2hlU3RydWN0dXJlc10sIE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGVT
dHJ1Y3R1cmVzKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1f
dG90YWxTaXplc1tNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlXSwgTWVtb3J5
QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRS
ZXNvdXJjZUNTU10sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VDU1MpOworICAgICAg
ICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250XSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRSZXNvdXJjZUZvbnQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgbV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFn
ZV0sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNjcmlwdF0sIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVz
b3VyY2VTY3JpcHQpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
bV90b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkddLCBN
ZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlU1ZHKTsKKyAgICAgICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNhY2hlZFJlc291cmNlU2hhZGVyXSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNo
YWRlcik7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBibG9jayA9IElu
c3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6bWVt
b3J5Q2FjaGUpOworICAgICAgICBibG9jay0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAgICBi
bG9jay0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIGJs
b2NrLnJlbGVhc2UoKTsKKyAgICB9CiAKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiBidWlsZE9iamVjdEZvckRPTSgpIGNvbnN0CisgICAgewogICAgICAgICBzaXplX3QgdG90
YWxTaXplID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBpIDwgTGFzdFR5cGVFbnRy
eTsgKytpKQorICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhl
cjsgaSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOyArK2kp
CiAgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOwogCiAgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gZG9tQ2hpbGRy
ZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsK
LSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXpl
c1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsKLSAgICAgICAgYWRkTWVt
b3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tET01dLCBNZW1vcnlC
bG9ja05hbWU6OmRvbVRyZWVET00pOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGls
ZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUNT
Uyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFs
U2l6ZXNbQmluZGluZ10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUJpbmRpbmcpOwotICAgICAg
ICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0xvYWRl
cl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUxvYWRlcik7CisgICAgICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsKKyAgICAgICAgYWRk
TWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTV0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURPTSk7CisgICAgICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVDU1MpOworICAg
ICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW01l
bW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZ10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUJp
bmRpbmcpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90
b3RhbFNpemVzW01lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyXSwgTWVtb3J5QmxvY2tOYW1l
Ojpkb21UcmVlTG9hZGVyKTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2Nr
TmFtZTo6ZG9tKTsKICAgICAgICAgZG9tLT5zZXRTaXplKHRvdGFsU2l6ZSk7CkBAIC01MTEsNiAr
NTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2Jq
ZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkgT1ZFUlJJREUKICAgICB7CisgICAgICAg
IEFTU0VSVChvYmplY3RUeXBlICE9IE90aGVyKTsKICAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUg
Pj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CiAgICAgICAgIG1fdG90YWxTaXpl
c1tvYmplY3RUeXBlXSArPSBzaXplOwogICAgIH0KQEAgLTU1OSw5ICs1ODgsMTcgQEAgcHVibGlj
OgogICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBv
aW50ZXJzKCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
ZHVtcFN0YXRpc3RpY3MoSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRhdGEpCisgICAg
dm9pZCB2aXNpdE1lbW9yeUNhY2hlKCkKKyAgICB7CisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2Uu
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1lbW9yeUNhY2hlKCkpOworICAgICAgICBtX2RvbU1lbW9y
eVVzYWdlLnByb2Nlc3NEZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKCk7CisgICAgfQorCisg
ICAgdm9pZCBkdW1wU3RhdGlzdGljcyhUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRhdGEpCiAg
ICAgewotICAgICAgICByZXR1cm4gbV9kb21NZW1vcnlVc2FnZS5kdW1wU3RhdGlzdGljcyhpbnNw
ZWN0b3JEYXRhKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0obV9kb21NZW1vcnlVc2FnZS5i
dWlsZE9iamVjdEZvck1lbW9yeUNhY2hlKCkpOworICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbSht
X2RvbU1lbW9yeVVzYWdlLmJ1aWxkT2JqZWN0Rm9yRE9NKCkpOworICAgICAgICBtX2RvbU1lbW9y
eVVzYWdlLmNvdW50SW5zcGVjdG9yRGF0YShpbnNwZWN0b3JEYXRhKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC01NzEsOSArNjA4LDEwIEBAIHByaXZhdGU6CiAKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZpc2l0ZWRP
YmplY3RzJiB2aXNpdGVkT2JqZWN0cywgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRh
dGEpCitzdGF0aWMgdm9pZCBkb21UcmVlSW5mbyhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYg
dmlzaXRlZE9iamVjdHMsIFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4q
IGNoaWxkcmVuLCBJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKIHsKICAgICBE
T01UcmVlc0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSwgdmlzaXRlZE9iamVjdHMpOwor
CiAgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0Tm9kZVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9y
KTsKIAogICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBt
YWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCkBAIC01ODUsMjkgKzYyMyw5IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQYWdlKiBwYWdlLCBWaXNp
dGVkT2JqZWN0cyYKICAgICB9CiAKICAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0QmluZGluZ3Mo
KTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5Q2FjaGUoKTsKIAotICAgIHJldHVy
biBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGluc3BlY3RvckRhdGEpOwotfQotCi1z
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkK
LXsKLSAgICBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0cyA9IG1lbW9yeUNhY2hlKCktPmdl
dFN0YXRpc3RpY3MoKTsKLSAgICBpbnQgdG90YWxTaXplID0gc3RhdHMuaW1hZ2VzLnNpemUgKwot
ICAgICAgICAgICAgICAgICAgICBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplICsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdHMuc2NyaXB0cy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dHMueHNsU3R5bGVTaGVldHMuc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzLmZvbnRz
LnNpemU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlDYWNoZVN0YXRz
ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1l
OjptZW1vcnlDYWNoZSk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUp
OwotCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNy
ZWF0ZSgpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFn
ZXMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZENzc1N0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgc3RhdHMuc2NyaXB0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54
c2xTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRz
KTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMuc2l6
ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRGb250cyk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+
c2V0Q2hpbGRyZW4oY2hpbGRyZW4uZ2V0KCkpOwotICAgIHJldHVybiBtZW1vcnlDYWNoZVN0YXRz
LnJlbGVhc2UoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGNoaWxkcmVu
LCBpbnNwZWN0b3JEYXRhKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKFZpc2l0ZWRPYmplY3RzJiB2aXNpdGVkT2Jq
ZWN0cykKQEAgLTY0MSwxMCArNjU5LDkgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0
UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBW
aXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0o
anNIZWFwSW5mbygpKTsKLSAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1vcnlDYWNoZUluZm8oKSk7
CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9wYWdlKSk7IC8vIEZJWE1F
OiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUlu
Zm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgJmluc3BlY3RvckRhdGEpKTsgLy8gRklYTUU6IGNv
bGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJlbi0+YWRkSXRlbShqc0V4dGVybmFsUmVz
b3VyY2VzSW5mbyh2aXNpdGVkT2JqZWN0cykpOworICAgIGRvbVRyZWVJbmZvKG1fcGFnZSwgdmlz
aXRlZE9iamVjdHMsIGNoaWxkcmVuLmdldCgpLCAmaW5zcGVjdG9yRGF0YSk7IC8vIEZJWE1FOiBj
b2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0
YS5kdW1wU3RhdGlzdGljcygpKTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGls
ZHJlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcAppbmRleCAyZGJlNzVlNTQ4Njc1YTc0NGJjMGZhMTQyOTBjMGVkZTNkZTY4
NTcxLi4yMGU5MDA1NGViNmI0YWVhMzI2NTFkYTdjNTQ2MGVjZGYxYzEzMWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRl
ICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCkBAIC0xOTMsNCArMTk0LDE0IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2
ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHNoCiAgICAg
c2V0RGVjb2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVzdGltYXRlZFNpemVJbkJ5
dGVzKCkpOwogfQogCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5
Q2xhc3NJbmZvPENhY2hlZENTU1N0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgaW5mby52
aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRNZW1iZXIo
bV9kZWNvZGVyKTsKKyAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpCisgICAgICAgIGlu
Zm8uYWRkUmF3QnVmZmVyKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLmdldCgpLCBtX3BhcnNlZFN0
eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSk7CisgICAgaW5mby5hZGRTdHJp
bmcobV9kZWNvZGVkU2hlZXRUZXh0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggYjcwZjI2NWRkMjc2MTExZTIz
YWUyYWU1MTU5MGE4YWY0NTkzMjhkOC4uMWUzMjViOTU3MTFiYTlmZWQ4ZDhhZWZiNDJlMGVjZGI0
NzM0NWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKKyAgICBjbGFzcyBNZW1vcnlPYmplY3RJbmZv
OwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7
CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKQEAgLTYwLDYgKzYxLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVz
dG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgICAgICB2
b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPik7
CiAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGNh
blVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25z
dCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAppbmRleCBmZGRkNzlkNDdlMDg1OTE1OWRjOTU1MDEyODQ5MzQ0ZmMxMDBhYWI5
Li5jZDlhNDJkNzdkMDFmMmZlOTczNmY2ZmZlMTI0ODBmY2IwMTlkNTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRh
LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjA2LDQgKzIwNywxNiBA
QCB2b2lkIENhY2hlZEZvbnQ6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVzKQog
ICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88Q2FjaGVkRm9udD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCk7CisgICAgaW5mby52aXNpdEJh
c2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisjaWYgRU5BQkxFKFNWR19GT05UUykKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX2V4dGVybmFsU1ZHRG9jdW1lbnQpOworI2VuZGlmCisjaWZkZWYg
U1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQorICAgIGluZm8uYWRkTWVtYmVyKG1fZm9u
dERhdGEpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCmluZGV4IDNjYWZjMWU1MDM4ODQxOWI2YTEzNzk2NzdlY2UyYmUyZjZiM2JhMzcuLmNm
ZjM0MmEyNWMwMDM2ODk0ODIwY2Q1N2FlZThkYmY1YTk2ZDEwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAg
U1ZHRm9udEVsZW1lbnQqIGdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogI2Vu
ZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEqIG1fZm9udERhdGE7CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmYjMxZjFiYWY1N2RhMGYxMjM5
Y2FiZmE3Yjg2ZTdkMDcxMjk3ZDcyLi5mNjI2MWVlNWMyZTg3YzAxNmIyODIyNDEyNjQ4NGUxMGM5
M2RlM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
QEAgLTQ4MCw0ICs0ODAsMTQgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90aWZ5T2JzZXJ2ZXJz
KCZyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q2FjaGVkSW1hZ2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUltYWdlKTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNz
PENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZFJhd0J1ZmZlcihtX2ltYWdlLmdl
dCgpLCBkZWNvZGVkU2l6ZSgpKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGluZm8uYWRkTWVtYmVy
KG1fc3ZnSW1hZ2VDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA5ZTM5MjExNzQz
NGZmNjQ0Yjg3YjcwMmMwNzY1YzYxNjc5MjVhYjY3Li4zZDZkNWYwOTcxYmJkMjdjZWMwOThjMWJh
MGZjYjIwNmRkNDRlMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtOTQsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlv
bkFkdmFuY2VkKGNvbnN0IEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRl
OgogICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCmluZGV4IGIwYTcwMzMwNGI1OTM3YjY2YzAxNDQwMzJkMzNkY2IwMWU2NjAy
M2YuLjllNTUyN2I0NGM5Zjk4MjAxMDgzZTQ5M2RkYTIyNTQ1NzJhNjJhM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTE1OSw0ICsxNjAsMTEgQEAgYm9vbCBDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRSYXdSZXNvdXJjZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBpbmZv
LnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCmluZGV4IGUyOTZhYjg3ZWFiNTUyOTc0Nzg4YThhNjI5ODlkYzQ5OGY2NTY2ODQu
LmMzNDliODY2YTM3NjZhOWEyNWMyYjgwZDc1MGU0MzkzYTUxZjUzZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNhbGxiYWNr
OwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ7CitjbGFzcyBNZW1vcnlPYmplY3RJbmZv
OwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZSA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBw
dWJsaWM6CkBAIC00NCw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuUmV1c2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggMzk5OGVmZDMyNjMzM2ZhYjIyYTUzZGM0ZmRhNDAyMmY4ZTM5OGI1
NC4uZGQzODlmYTZiZWYyNjQ0ZTMxMDAyZTY2NGI0N2Y5ZjUzOGUwZWU0ZiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCkBAIC03NzcsNCArNzc4LDI3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OnRpbWVyRmlyZWQo
VGltZXI8Q2FjaGVkUmVzb3VyY2VDYWxsCiAgICAgbV9yZXNvdXJjZS0+ZGlkQWRkQ2xpZW50KG1f
Y2xpZW50KTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFz
c0luZm88Q2FjaGVkUmVzb3VyY2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9y
ZXNvdXJjZVJlcXVlc3QpOworICAgIGluZm8uYWRkSGFzaFNldChtX2NsaWVudHMpOworICAgIGlu
Zm8uYWRkU3RyaW5nKG1fYWNjZXB0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X2xvYWRlcik7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZXNwb25zZSk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNZW1iZXIobV9kYXRhLCBpbmZvLm9iamVjdFR5cGUoKSk7CisgICAgaW5mby5h
ZGRNZW1iZXIobV9jYWNoZWRNZXRhZGF0YS5nZXQoKSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50
ZWRNZW1iZXIobV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX3ByZXZJbkFsbFJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fcHJldkluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJveHlSZXNvdXJjZSk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRIYXNoU2V0KG1faGFuZGxlc1RvUmV2YWxpZGF0ZSk7CisKKyAgICBpZiAobV9w
dXJnZWFibGVEYXRhICYmICFtX3B1cmdlYWJsZURhdGEtPndhc1B1cmdlZCgpKQorICAgICAgICBp
bmZvLmFkZFJhd0J1ZmZlcihtX3B1cmdlYWJsZURhdGEuZ2V0KCksIG1fcHVyZ2VhYmxlRGF0YS0+
c2l6ZSgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCA3ZmJmNzMzNjU4NTViMzhhNzA1M2M1OTJkYjYwNmY4ZjFlZDJhODRhLi40
N2JjMTA2Y2Q3MzNhMzZjOTcyZDdkNjA0MWY3ZWFkNzAyNmQ5NGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFz
cyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CitjbGFzcyBNZW1vcnlPYmpl
Y3RJbmZvOwogY2xhc3MgUHVyZ2VhYmxlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBj
bGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTI0OCw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRMb2FkRmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5pc2hU
aW1lID0gZmluaXNoVGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZEZpbmlzaFRpbWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2b2lk
IGNoZWNrTm90aWZ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDg3MTI5MmM2MjM3ZmVjMDMyMDM1YTYyOWQ3
ZTgyYjc1NThkNGY3ZTcuLmM0ZTdkNDQzMWI1Y2E5MjFmZjYxYmU3ZGUzOWMwYjY5NDMyM2Y1NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
SGFuZGxlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENhY2hlZFJlc291cmNlSGFu
ZGxlQmFzZTo6c2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSAKQEAgLTM5LDQg
KzQxLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpzZXRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxl
KHRoaXMpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlPiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2UpOworfQorCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKaW5k
ZXggOTVjZDBmZjdmOGFlNGIzNDA1YjkwOTg1ZmQ3NjY5MzhhOTM5MDI2My4uMTVkNDRjNzU3MWMx
MWI4NDBmOWQzZTE3MTdkMTcxOGM3ZmE1ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOworCiAgICAgY2xh
c3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIH5DYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UoKSB7IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT51bnJl
Z2lzdGVySGFuZGxlKHRoaXMpOyB9CkBAIC00MSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdHlwZWRlZiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRC
b29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2UgPyAmQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlOjptX3Jlc291cmNlIDogMDsgfQogCisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UoKSA6IG1fcmVzb3VyY2UoMCkge30KICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlKENhY2hlZFJlc291cmNlKiByZXMpIHsgbV9yZXNvdXJjZSA9
IHJlczsgaWYgKG1fcmVzb3VyY2UpIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRoaXMpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBlMTk4N2MzZmUzODI3OTMyY2RhM2JjYzgzMmM1MWNjYThmYWQxNjMxLi42
ZTE0MGNjNzFmN2YyZjlhY2U4YjA5NjMxZDQyYWQ1MzBmMTRiNGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3
NCw1ICs4NzQsMTEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3Rh
dHMoKQogICAgICAgICBwcmludGYoIklNQUdFUzogICVkICglZCBoaXRzLCBoaXQgcmF0ZSAlZCUl
KVxuIiwgaW1hZ2VzLCBpbWFnZXMgLSBpbWFnZU1pc3NlcywgKGltYWdlcyAtIGltYWdlTWlzc2Vz
KSAqIDEwMCAvIGltYWdlcyk7CiB9CiAjZW5kaWYKLSAgICAKKwordm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VMb2FkZXI+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMb2Fk
ZXIpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChtX2RvY3VtZW50UmVzb3VyY2Vz
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBkODJiM2JmNDJhNzM4Yzc3NWI4NmEwODM2MmFkNWE5YTEyYWU5
ZDNkLi41MzRlNzRjN2U5Y2E0YzhjZmNjM2Q5YzAwMTgyMjRkZGJhMGU1ZmU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAt
NTIsNiArNTIsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2VM
b2FkZXI7CiBjbGFzcyBLVVJMOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogLy8gVGhlIENh
Y2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhlIGxvYWRpbmcgb2Ygc2NyaXB0cy9pbWFnZXMv
c3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgogY2xhc3MgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIgewpAQCAtMTE4LDYgKzExOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50UHJlbG9h
ZFN0YXRzKCk7CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25z
dCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAorICAgIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNv
dXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcAppbmRleCBmMDNmYWRiNTdhOGFkMjNmNmYzMDE4NGYxYWEwMDEyNDVlODA3
YjM5Li5mZDY3ZDc3MTljODI3ZmNlNGNmMTI5MzZmNmM1OWQ1ZWQyNzQ0OTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTcx
LDYgKzcxLDE0IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmRhdGEoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkCiAgICAgY2hlY2tOb3RpZnkoKTsK
IH0KIAordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88
Q2FjaGVkU1ZHRG9jdW1lbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNWRyk7CisgICAgaW5mby52aXNpdEJhc2VDbGFz
czxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9kb2N1bWVudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30KKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmgKaW5kZXggYjA1ZWY2N2QxYzQyNzFhYTA0OGRjYTJjNGEyYTY1OTc2NTE0MDUwMC4uNTRkNWE4
ODgxMmY1ZjZmNzJjZjVjNTEzMDQxMzQ2ZmFmYWJlOTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDYgKzQzLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U1ZHRG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXgg
OGM4M2JjYTg4MjY1MTI0ZTI4ZWEwYTg4NGM4ZmY4OTBiNDVhZTcwMC4uODA3ZTE0NzIxNWIyMWY0
MmM0NjQ3NjI0ZjU1YTc3NDM2NDdlYjkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZW1vcnlD
YWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQ2LDQgKzE0NywxNSBAQCB2
b2lkIENhY2hlZFNjcmlwdDo6c291cmNlUHJvdmlkZXJDYWNoZVNpemVDaGFuZ2VkKGludCBkZWx0
YSkKIH0KICNlbmRpZgogCit2b2lkIENhY2hlZFNjcmlwdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFz
c0luZm88Q2FjaGVkU2NyaXB0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTY3JpcHQpOworICAgIGluZm8udmlzaXRCYXNl
Q2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2NyaXB0
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIpOworI2lmIFVTRShKU0MpCisgICAgaW5m
by5hZGRNZW1iZXIobV9zb3VyY2VQcm92aWRlckNhY2hlKTsKKyNlbmRpZgorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKaW5kZXggMWE3NmMxOGY0NjdlNDBiZDA1OTM2MGQxZGYzNzgwYmZmNzkxNGRhZi4uNjkyMTIw
ZmUzYjg2YTExZDViNmFjZjY5ZDdlZGEzODMwMTAyMWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIAogICAgIGNsYXNzIENhY2hlZFNjcmlwdCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7
CkBAIC02MSw2ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNDOjpTb3Vy
Y2VQcm92aWRlckNhY2hlKiBzb3VyY2VQcm92aWRlckNhY2hlKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgc291cmNlUHJvdmlkZXJDYWNoZVNpemVDaGFuZ2VkKGludCBkZWx0YSk7CiAjZW5kaWYKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkZWNvZGVkRGF0
YURlbGV0aW9uVGltZXJGaXJlZChUaW1lcjxDYWNoZWRTY3JpcHQ+Kik7CiAgICAgICAgIHZpcnR1
YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VMYXN0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCmluZGV4
IGI4ZDdjNWY5YTg4OTUwOWU0ODlkODNkZTIxNTA3ODNiNjg4MGMwM2QuLmQwYTZhNzkzNjI5MTRj
N2FkMmZkNjI5NDg3Y2VjYjE3ZTQxYzQzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTaGFkZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKENTU19T
SEFERVJTKQogCiAjaW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTY3LDYgKzY4LDE0IEBAIHZvaWQgQ2FjaGVkU2hhZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCit2b2lkIENhY2hlZFNoYWRlcjo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkU2hhZGVyPiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIp
OworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7CisgICAgaW5mby5hZGRTdHJpbmcobV9zaGFkZXJTdHJp
bmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKaW5k
ZXggZDFkZTE0ZDc3NWYzODBlZTViM2EzZTkzNTRiYTBmN2U5OTA4NmQ3NC4uNDI4Njc3MGFkY2Y4
MTFhZDg0ZTJlNGExZDAzYjk5NTFjOTUzYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTaGFkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVy
OwogCiBjbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNDYs
NiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcoKTsKICAg
ICB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIFN0cmluZyBtX3NoYWRlclN0cmluZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApp
bmRleCAzMzZmY2U0YWM2MGZmMzM4Mzc0MDVlOGJlYmUxNzFkZDg0YmZjYTIyLi5iMDY2YzBhOWM3
ZDczN2ZmYWIwZWZiYTkxOTc4MjY0YTZlYWFhNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNh
Y2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTYsNiArOTcsMTQgQEAgdm9pZCBD
YWNoZWRYU0xTdHlsZVNoZWV0OjplcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykK
ICAgICBjaGVja05vdGlmeSgpOwogfQogCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFhTTFN0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTCk7
CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5m
by5hZGRTdHJpbmcobV9zaGVldCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30K
KwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCmluZGV4IGI4ZjcyODNkMzY0OTI5ZjI4NTZlYTU4YTI3ZTA3N2Q4NDhm
MjhhNmIuLjJhYThkZmEyNTEzMmY4MjI2NzRlNjgxMmI2MDRiMWNlNzM3YWQyNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAt
MzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7CisgICAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKICAgICBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogCiAjaWYgRU5BQkxFKFhTTFQpCkBAIC01MCw2ICs1MSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgY2hlY2tOb3RpZnkoKTsK
ICAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0
cmluZyBtX3NoZWV0OwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXgg
Mjk5ZDEwYTcwNTEyOGI2YWNmZjIzOGZlMDcxOTlhOTk0NTlkNDI1NC4uYzE2MDg5ZDY1ZDhjMDA0
ZWYzZDNkNDY2ZWFlOWY3MDljYWRlNjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgpAQCAtNzE1LDYgKzcxNiwxNyBAQCBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNo
ZTo6Z2V0U3RhdGlzdGljcygpCiAgICAgcmV0dXJuIHN0YXRzOwogfQogCit2b2lkIE1lbW9yeUNh
Y2hlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxNZW1vcnlDYWNoZT4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0
dXJlcyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1fcmVzb3VyY2VzKTsKKyAgICBDYWNoZWRSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZSA9IG1fcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAo
Q2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3Jlc291cmNlcy5iZWdpbigp
OyBpICE9IGU7ICsraSkgeworICAgICAgICBpbmZvLmFkZFN0cmluZyhpLT5maXJzdCk7CisgICAg
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGktPnNlY29uZCk7CisgICAgfQorfQorCiB2
b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAgIG1fZGlz
YWJsZWQgPSBkaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmgKaW5kZXggNmY5ODMyNjYyMjgyMjRhMzk2MDM1MjQ0NDI0ODM0YjU0MzZiYzcxMS4uNWEyZjk0
OTVlODE1OGZmY2ZjYjA5MTA3MDgzNzNkNzE3MDFmNzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ2FjaGVkQ1NT
U3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBLVVJMOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkhhc2g7CkBAIC0xNjgsNiArMTY5LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxp
dmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9saXZlU2l6ZTsgfQogICAgIHVuc2lnbmVkIGRlYWRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkU2l6ZTsgfQogCisgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTWVtb3J5
Q2FjaGUoKTsKICAgICB+TWVtb3J5Q2FjaGUoKTsgLy8gTm90IGltcGxlbWVudGVkIHRvIG1ha2Ug
c3VyZSBub2JvZHkgYWNjaWRlbnRhbGx5IGNhbGxzIGRlbGV0ZSAtLSBXZWJDb3JlIGRvZXMgbm90
IGRlbGV0ZSBzaW5nbGV0b25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHVyZ2VhYmxlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZm
ZXIuaAppbmRleCA0NjhiOTJiMjUxMmI4YmY4YjcwNDVhMjc2MWYwODBkOTAwMDRkMzQxLi44MzQy
MjQxZDRjYTAxOTljNTU3N2ZkNDFhNjQyMTNiZTdiOWY4MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiAgICAgY2xhc3MgUHVy
Z2VhYmxlQnVmZmVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHVyZ2VhYmxlQnVm
ZmVyKTsKICAgICBwdWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgYm9vbCB3YXNQdXJnZWQoKSBjb25zdDsKIAogICAgICAgICBib29sIG1ha2VQdXJn
ZWFibGUoYm9vbCBwdXJnZWFibGUpOwotICAgICAgICAKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IFB1cmdlYWJsZUJ1ZmZlcihjaGFyKiBkYXRhLCBzaXplX3QpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156023</attachid>
            <date>2012-08-02 02:55:42 -0700</date>
            <delta_ts>2012-08-03 01:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120802135522.patch</filename>
            <type>text/plain</type>
            <size>46038</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg4NmMzYTViNTA5NDE1
MDdmYWRiMzdjYWQ5NmVmY2JmZDk0ZDQ5Ny4uN2VmMWM4OTc5ZDFjMmQxZGZkNjU5YmUxNDIwOTM1
NTU1ZjgwYzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMi0wOC0wMiAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgbWFyayB0aGUgbWVtb3J5IGNhY2hlIG9iamVjdHMgYXMgdmlzaXRlZC4KKyAg
ICAgICAgQXMgYSByZXN1bHQgTUkgY291bGQgY291bnQgdGhlIHNhbWUgb2JqZWN0cyBtdWx0aXBs
ZSB0aW1lcy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3QgdHJhdmVyc2VzIHRocm91Z2gg
TWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9NLgorICAgICAgICBBbHNvIG5v
dCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNvdW50ZWQuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVj
dCk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRSYXdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246Ok93bmluZ1RyYWl0czo6
YWRkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Ok1lbW9yeU9i
amVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVwb3J0T2Jq
ZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1l
bnRlZE1lbWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3Ry
dW1lbnRlZEhhc2hNYXApOgorICAgICAgICAoTWVtb3J5Q2xhc3NJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZEhhc2hNYXApOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkQ1NTU3R5bGVTaGVldCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKENhY2hlZEZvbnQpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmF3UmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VI
YW5kbGVCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNWR0RvY3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKENh
Y2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRTY3JpcHQpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U2hhZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENhY2hlZFNoYWRlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2Fj
aGVkWFNMU3R5bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQ
dXJnZWFibGVCdWZmZXIpOgorCiAyMDEyLTA4LTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0
NDA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTVmYjIwN2RiZDkxMjkzODhmZDg3ODM1
ZjAwMTZhN2NmNzYzZWI4MC4uNGViZGU2NWZiYzZmMTFjZjJiNTk0OTNkZGEwNWM0ZWQzMTVlNTRl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MDk1LDYgKzYwOTUsOCBAQCB2b2lkIERv
Y3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc3R5bGVSZXNvbHZl
cik7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKICAgICBp
bmZvLmFkZFZlY3RvcihtX2N1c3RvbUZvbnRzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1l
bWJlcihtX2ZyYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2NhY2hlZFJl
c291cmNlTG9hZGVyKTsKICAgICBpbmZvLmFkZFN0cmluZyhtX2RvY3VtZW50VVJJKTsKICAgICBp
bmZvLmFkZFN0cmluZyhtX2Jhc2VUYXJnZXQpOwogICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fZWxlbVNoZWV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRp
b24uaAppbmRleCAwY2Q3OGQ1MWJjNjQzM2Q5NWU0MDU1MmM2NDk2ZDkzYmI4ZjVhZGMyLi41MWFl
OTg3NzI2YjQ5YTk0YTYzODAzODExMWUyZWY2NzNhYzNmMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC01MSw2ICs1MSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIENTUywKICAgICAgICAgQmluZGluZywKICAgICAgICAgTG9hZGVyLAorICAgICAgICBN
ZW1vcnlDYWNoZVN0cnVjdHVyZXMsCisgICAgICAgIENhY2hlZFJlc291cmNlLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZUNTUywKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VGb250LAorICAgICAgICBD
YWNoZWRSZXNvdXJjZUltYWdlLAorICAgICAgICBDYWNoZWRSZXNvdXJjZVNjcmlwdCwKKyAgICAg
ICAgQ2FjaGVkUmVzb3VyY2VTVkcsCisgICAgICAgIENhY2hlZFJlc291cmNlU2hhZGVyLAorICAg
ICAgICBDYWNoZWRSZXNvdXJjZVhTTCwKICAgICAgICAgTGFzdFR5cGVFbnRyeQogICAgIH07CiAK
QEAgLTg1LDIyICs5NCwyOSBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBUKiBtX3BvaW50ZXI7
CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25z
dCBUJiB0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlKQogICAgIHsKLSAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhp
cywgdCwgb2JqZWN0VHlwZSk7CisgICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7CisgICAgfQorCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3du
ZXJPYmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3Qo
dGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsKICAgICB9CiAgICAgdm9pZCBhZGRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgT2JqZWN0VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIHQpIHsgT3duaW5nVHJhaXRzPFQ+OjphZGRJ
bnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFz
aE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYsIE9iamVjdFR5cGUs
IGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hN
YXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBP
YmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmLCBP
YmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0
IENvbGxlY3Rpb25UeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNo
U2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkg
PSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkVmVj
dG9yKGNvbnN0IFZlY3RvclR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFs
c2UpOwotICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIE9i
amVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgdm9pZCBhZGRSYXdCdWZmZXIo
Y29uc3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNp
emVfdCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgdmlzaXRlZChidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlw
ZSwgc2l6ZSk7CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemUp
OwogICAgIH0KIAogICAgIGVudW0gT3duaW5nVHlwZSB7CkBAIC0xMTAsMTkgKzEyNiwxOSBAQCBw
cml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IE93bmluZ1Ry
YWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHN0
YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGlu
c3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwoJnQsIGJ5UmVmZXJlbmNlKTsgfQotICAgICAgICBzdGF0aWMgdm9pZCBh
ZGRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQm
IHQsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7IGluc3Ry
dW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgmdCwgb2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9
CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVt
ZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZElu
c3RydW1lbnRlZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9
CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGlu
c3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RU
eXBlIG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwoJnQs
IG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBPd25pbmdUcmFpdHM8VCo+IHsgLy8gQ3VzdG9tIGJ5
UG9pbnRlciBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBU
KiBjb25zdCYgdCkgeyBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwo
dCwgYnlQb2ludGVyKTsgfQotICAgICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24t
PmFkZE9iamVjdEltcGwodCwgb2JqZWN0VHlwZSwgYnlQb2ludGVyKTsgfQorICAgICAgICBzdGF0
aWMgdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0
cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9i
amVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IGluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbCh0LCBvd25lck9iamVjdFR5cGUsIGJ5UG9pbnRlcik7IH0KKyAgICAgICAg
c3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0
aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBl
IG93bmVyT2JqZWN0VHlwZSkgeyBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwodCwgb3du
ZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOyB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmLCBP
d25pbmdUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiogY29uc3QmLCBPd25pbmdUeXBlKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0
IFJlZlB0cjxUPiogY29uc3QmLCBPd25pbmdUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFQqIGNvbnN0JiwgT2JqZWN0
VHlwZSwgT3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwg
T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0SW1wbChjb25zdCBSZWZQdHI8VD4qIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5n
VHlwZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNv
bnN0IFQqIGNvbnN0JiwgT2JqZWN0VHlwZSwgT3duaW5nVHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgT2Jq
ZWN0VHlwZSwgT3duaW5nVHlwZSk7CkBAIC0xMzEsMTEgKzE0NywxMSBAQCBwcml2YXRlOgogCiBj
bGFzcyBNZW1vcnlPYmplY3RJbmZvIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNZW1vcnlPYmpl
Y3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAg
IE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50
YXRpb24sIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUp
CiAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5SW5zdHJ1bWVudGF0aW9u
KQotICAgICAgICAsIG1fb2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQor
ICAgICAgICAsIG1fb2JqZWN0VHlwZShvd25lck9iamVjdFR5cGUpCiAgICAgICAgICwgbV9vYmpl
Y3RTaXplKDApCi0gICAgIHsgfQorICAgIHsgfQogCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFR5cGU7IH0K
ICAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsgfQpA
QCAtMTQ3LDEwICsxNjMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiB2b2lkIHJlcG9ydE9iamVjdEluZm8oY29uc3QgVCosIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3QgZXh0cmFPYmplY3RTaXplKQogICAgIHsKLSAg
ICAgICAgaWYgKG1fb2JqZWN0VHlwZSAhPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX29iamVjdFR5cGUgPSBvYmplY3RUeXBlOwot
ICAgICAgICBtX29iamVjdFNpemUgPSBzaXplb2YoVCkgKyBleHRyYU9iamVjdFNpemU7CisgICAg
ICAgIGlmICghbV9vYmplY3RTaXplKSB7CisgICAgICAgICAgICBtX29iamVjdFNpemUgPSBzaXpl
b2YoVCkgKyBleHRyYU9iamVjdFNpemU7CisgICAgICAgICAgICBpZiAob2JqZWN0VHlwZSAhPSBN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICAgICAgICAgICAgIG1fb2JqZWN0VHlw
ZSA9IG9iamVjdFR5cGU7CisgICAgICAgIH0KICAgICB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwpAQCAtMTcxLDEwICsxODgsMTIgQEAgcHVi
bGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+IHZvaWQgdmlzaXRCYXNlQ2xhc3MoY29u
c3QgUCogcHRyKSB7IHB0ci0+UDo6cmVwb3J0TWVtb3J5VXNhZ2UobV9tZW1vcnlPYmplY3RJbmZv
KTsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKGNvbnN0IE0mIG1lbWJlcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1
bWVudGVkT2JqZWN0KG1lbWJlcik7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRNZW1iZXIoY29uc3QgTSYgbWVtYmVyKSB7IG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRPYmplY3QobWVtYmVyLCBtX29iamVjdFR5cGUpOyB9CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+IHZvaWQgYWRkTWVtYmVyKGNvbnN0IE0mIG1lbWJlcikg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KG1lbWJlciwgbV9vYmplY3RUeXBl
KTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hN
YXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRk
SGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChjb25zdCBIYXNoTWFw
VHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRIYXNo
TWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmIHNldCkgeyBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1
ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKHNldCwgbV9vYmplY3RUeXBlLCB0cnVl
KTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1l
bnRlZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24odmVjdG9yLCBtX29iamVjdFR5cGUsIHRy
dWUpOyB9CkBAIC0xODgsNiArMjA3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRTdHJpbmco
c3RyaW5nLCBtX29iamVjdFR5cGUpOyB9CiAgICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgQXRvbWlj
U3RyaW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFN0cmluZygoY29u
c3QgU3RyaW5nJilzdHJpbmcsIG1fb2JqZWN0VHlwZSk7IH0KIAorICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RU
eXBlOyB9CisKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0SW5mbyogbV9tZW1vcnlPYmplY3RJ
bmZvOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247
CkBAIC0xOTUsMTIgKzIxNiwxMiBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bChjb25zdCBUKiBjb25zdCYgb2JqZWN0LCBPd25pbmdUeXBlIG93bmluZ1R5cGUpCit2b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBUKiBj
b25zdCYgb2JqZWN0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25p
bmdUeXBlKQogewogICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKICAgICAgICAg
cmV0dXJuOwogICAgIGlmIChvd25pbmdUeXBlID09IGJ5UmVmZXJlbmNlKSB7Ci0gICAgICAgIE1l
bW9yeU9iamVjdEluZm8gbWVtb3J5T2JqZWN0SW5mbyh0aGlzKTsKKyAgICAgICAgTWVtb3J5T2Jq
ZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKHRoaXMsIG93bmVyT2JqZWN0VHlwZSk7CiAgICAgICAg
IG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2UoJm1lbW9yeU9iamVjdEluZm8pOwogICAgIH0gZWxz
ZQogICAgICAgICBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoYWRvcHRQdHIobmV3IEluc3RydW1l
bnRlZFBvaW50ZXI8VD4ob2JqZWN0KSkpOwpAQCAtMjUyLDYgKzI3MywxNCBAQCB2b2lkIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCwg
T2JqZWN0VHlwZSBvYgogICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBjYWxjdWxhdGVD
b250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIEhhc2hNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1l
bnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3sKKyAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlw
ZSwgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShoYXNoTWFwLCBjb250ZW50T25seSkpOworICAgIGZv
ciAodHlwZW5hbWUgSGFzaE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBoYXNoTWFwLmJlZ2lu
KCk7IGkgIT0gaGFzaE1hcC5lbmQoKTsgKytpKQorICAgICAgICBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3QoaS0+c2Vjb25kKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFNldFR5cGU+CiB2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgaGFz
aFNldCwgT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXgg
OWMyOGEwM2I3ZTM4NWY2NzExOGMzZDkzMTRiNDIyMjYxYjVlYzg4My4uNjVmYWM4NmQwZjJhMDQ0
MDY0OTQ2Y2YzMzBkY2YzN2VhNTA3NzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC04MSwxNCArODEsMTkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIganNFeHRlcm5hbFN0cmluZ3NbXSA9ICJKU0V4dGVybmFsU3RyaW5ncyI7CiBz
dGF0aWMgY29uc3QgY2hhciBpbnNwZWN0b3JEYXRhW10gPSAiSW5zcGVjdG9yRGF0YSI7CiBzdGF0
aWMgY29uc3QgY2hhciBpbnNwZWN0b3JET01EYXRhW10gPSAiSW5zcGVjdG9yRE9NRGF0YSI7CiBz
dGF0aWMgY29uc3QgY2hhciBpbnNwZWN0b3JKU0hlYXBEYXRhW10gPSAiSW5zcGVjdG9ySlNIZWFw
RGF0YSI7Ci1zdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9yeUNhY2hlIjsK
IHN0YXRpYyBjb25zdCBjaGFyIHByb2Nlc3NQcml2YXRlTWVtb3J5W10gPSAiUHJvY2Vzc1ByaXZh
dGVNZW1vcnkiOwogCi1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRJbWFnZXNbXSA9ICJDYWNoZWRJ
bWFnZXMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkQ3NzU3R5bGVTaGVldHNbXSA9ICJDYWNo
ZWRDc3NTdHlsZVNoZWV0cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRTY3JpcHRzW10gPSAi
Q2FjaGVkU2NyaXB0cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1td
ID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRz
W10gPSAiQ2FjaGVkRm9udHMiOworc3RhdGljIGNvbnN0IGNoYXIgbWVtb3J5Q2FjaGVbXSA9ICJN
ZW1vcnlDYWNoZSI7CitzdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVN0cnVjdHVyZXNbXSA9
ICJNZW1vcnlDYWNoZVN0cnVjdHVyZXMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3Vy
Y2VbXSA9ICJDYWNoZWRSZXNvdXJjZSI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJj
ZUltYWdlW10gPSAiQ2FjaGVkSW1hZ2VzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291
cmNlQ1NTW10gPSAiQ2FjaGVkQ3NzU3R5bGVTaGVldHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2Fj
aGVkUmVzb3VyY2VTY3JpcHRbXSA9ICJDYWNoZWRTY3JpcHRzIjsKK3N0YXRpYyBjb25zdCBjaGFy
IGNhY2hlZFJlc291cmNlWFNMW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMiOworc3RhdGljIGNv
bnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VGb250W10gPSAiQ2FjaGVkRm9udHMiOworc3RhdGljIGNv
bnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VTVkdbXSA9ICJDYWNoZWRTVkdHcmFwaGljcyI7CitzdGF0
aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNoYWRlcltdID0gIkNhY2hlZFNoYWRlcnMiOwor
CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNlZFtdID0gIlJlbmRlclRyZWVVc2VkIjsK
IHN0YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxvY2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxs
b2NhdGVkIjsKIApAQCAtNDY5LDEyICs0NzQsMzcgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRQ
cm9maWxlcjo6Y29sbGVjdEJpbmRpbmdNZW1vcnlJbmZvKCZtX2RvbU1lbW9yeVVzYWdlKTsKICAg
ICB9CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGlj
cyhJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKKyAgICB2b2lkIHZpc2l0TWVt
b3J5Q2FjaGUoKQogICAgIHsKLSAgICAgICAgaW5zcGVjdG9yRGF0YS0+YWRkQ29tcG9uZW50KE1l
bW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9yRE9NRGF0YSwgbV9kb21NZW1vcnlVc2FnZS5zZWxmU2l6
ZSgpKTsKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5hZGRSb290T2JqZWN0KG1lbW9yeUNhY2hl
KCkpOworICAgIH0KIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJ1aWxk
T2JqZWN0Rm9yTWVtb3J5Q2FjaGUoKSBjb25zdAorICAgIHsKICAgICAgICAgc2l6ZV90IHRvdGFs
U2l6ZSA9IDA7Ci0gICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90
aGVyOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisgICAg
ICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0
dXJlczsgaSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVFbnRyeTsgKytpKQorICAg
ICAgICAgICAgdG90YWxTaXplICs9IG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKHN0YXRpY19j
YXN0PE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZT4oaSkpOworCisgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4g
PSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAg
ICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2Uu
dG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzKSwg
TWVtb3J5QmxvY2tOYW1lOjptZW1vcnlDYWNoZVN0cnVjdHVyZXMpOworICAgICAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSksIE1lbW9yeUJsb2NrTmFtZTo6Y2Fj
aGVkUmVzb3VyY2UpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
bV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRS
ZXNvdXJjZUNTUyksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VDU1MpOworICAgICAg
ICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3Rh
bFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUZvbnQpLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZFJlc291cmNlRm9udCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNhY2hlZFJlc291cmNlSW1hZ2UpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJl
c291cmNlSW1hZ2UpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
bV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRS
ZXNvdXJjZVNjcmlwdCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VTY3JpcHQpOwor
ICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2Fn
ZS50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNWRyksIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VTVkcpOworICAgICAgICBhZGRNZW1vcnlCbG9j
a0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNoYWRlciksIE1lbW9yeUJsb2NrTmFtZTo6Y2Fj
aGVkUmVzb3VyY2VTaGFkZXIpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlC
bG9ja05hbWU6Om1lbW9yeUNhY2hlKTsKKyAgICAgICAgYmxvY2stPnNldFNpemUodG90YWxTaXpl
KTsKKyAgICAgICAgYmxvY2stPnNldENoaWxkcmVuKGNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAg
ICAgIHJldHVybiBibG9jay5yZWxlYXNlKCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JET00oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok90aGVyOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNo
ZVN0cnVjdHVyZXM7ICsraSkKICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBtX2RvbU1lbW9yeVVz
YWdlLnRvdGFsU2l6ZShzdGF0aWNfY2FzdDxNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5
cGU+KGkpKTsKIAogICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPjo6Y3JlYXRlKCk7CkBAIC00OTAsNiArNTIwLDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGRvbS5yZWxlYXNlKCk7CiAgICAgfQogCisgICAgdm9pZCBkdW1wU3RhdGlzdGlj
cyhUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5z
cGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRhdGEpCisgICAgeworICAgICAgICBjaGlsZHJl
bi0+YWRkSXRlbShidWlsZE9iamVjdEZvck1lbW9yeUNhY2hlKCkpOworICAgICAgICBjaGlsZHJl
bi0+YWRkSXRlbShidWlsZE9iamVjdEZvckRPTSgpKTsKKyAgICAgICAgaW5zcGVjdG9yRGF0YS0+
YWRkQ29tcG9uZW50KE1lbW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9yRE9NRGF0YSwgbV9kb21NZW1v
cnlVc2FnZS5zZWxmU2l6ZSgpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUGFnZSogbV9wYWdl
OwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgbV9kb21NZW1vcnlVc2FnZTsKQEAgLTQ5
Nyw5ICs1MzQsMTAgQEAgcHJpdmF0ZToKIAogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSwgVmlzaXRlZE9iamVjdHMmIHZp
c2l0ZWRPYmplY3RzLCBJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKK3N0YXRp
YyB2b2lkIGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZpc2l0ZWRPYmplY3RzJiB2aXNpdGVkT2Jq
ZWN0cywgVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogY2hpbGRyZW4s
IEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQogewogICAgIERPTVRyZWVzSXRl
cmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdlLCB2aXNpdGVkT2JqZWN0cyk7CisKICAgICBTY3Jp
cHRQcm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOwogCiAgICAg
Ly8gTWFrZSBzdXJlIGFsbCBkb2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1haW4gZnJhbWUg
YXJlIGFjY291bnRlZC4KQEAgLTUxMSw4ICs1NDksOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSwgVmlzaXRlZE9iamVjdHMm
CiAgICAgfQogCiAgICAgZG9tVHJlZXNJdGVyYXRvci52aXNpdEJpbmRpbmdzKCk7CisgICAgZG9t
VHJlZXNJdGVyYXRvci52aXNpdE1lbW9yeUNhY2hlKCk7CiAKLSAgICByZXR1cm4gZG9tVHJlZXNJ
dGVyYXRvci5kdW1wU3RhdGlzdGljcyhpbnNwZWN0b3JEYXRhKTsKKyAgICBkb21UcmVlc0l0ZXJh
dG9yLmR1bXBTdGF0aXN0aWNzKGNoaWxkcmVuLCBpbnNwZWN0b3JEYXRhKTsKIH0KIAogc3RhdGlj
IHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbikKQEAgLTUyNiwyNyArNTY1LDYg
QEAgc3RhdGljIHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW0KICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlDYWNoZUluZm8oKQotewotICAgIE1lbW9yeUNh
Y2hlOjpTdGF0aXN0aWNzIHN0YXRzID0gbWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwot
ICAgIGludCB0b3RhbFNpemUgPSBzdGF0cy5pbWFnZXMuc2l6ZSArCi0gICAgICAgICAgICAgICAg
ICAgIHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUgKwotICAgICAgICAgICAgICAgICAgICBzdGF0
cy5zY3JpcHRzLnNpemUgKwotICAgICAgICAgICAgICAgICAgICBzdGF0cy54c2xTdHlsZVNoZWV0
cy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuZm9udHMuc2l6ZTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlU3RhdHMgPSBJbnNwZWN0b3JNZW1v
cnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6Om1lbW9yeUNhY2hlKTsK
LSAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRTaXplKHRvdGFsU2l6ZSk7Ci0KLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgYWRk
TWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZEltYWdlcyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4u
Z2V0KCksIHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVk
Q3NzU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBz
dGF0cy5zY3JpcHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7Ci0gICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNp
emUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05h
bWU6OmNhY2hlZEZvbnRzKTsKLSAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGls
ZHJlbi5nZXQoKSk7Ci0gICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwotfQot
CiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNFeHRlcm5hbFJlc291
cmNlc0luZm8oVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzKQogewogICAgIEV4dGVybmFs
UmVzb3VyY2VWaXNpdG9yIHZpc2l0b3IodmlzaXRlZE9iamVjdHMpOwpAQCAtNTg1LDEwICs2MDMs
OSBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0ZWRP
YmplY3RzOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
OjpjcmVhdGUoKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShqc0hlYXBJbmZvKCkpOwotICAgIGNo
aWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hlSW5mbygpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRl
bShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdl
cz8KLSAgICBjaGlsZHJlbi0+YWRkSXRlbShkb21UcmVlSW5mbyhtX3BhZ2UsIHZpc2l0ZWRPYmpl
Y3RzLCAmaW5zcGVjdG9yRGF0YSkpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwog
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKHZpc2l0ZWRPYmpl
Y3RzKSk7CisgICAgZG9tVHJlZUluZm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgY2hpbGRyZW4u
Z2V0KCksICZpbnNwZWN0b3JEYXRhKTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8K
ICAgICBjaGlsZHJlbi0+YWRkSXRlbShpbnNwZWN0b3JEYXRhLmR1bXBTdGF0aXN0aWNzKCkpOwog
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGR1bXBET01TdG9yYWdlQ2FjaGUobV9kb21TdG9yYWdlQWdl
bnQtPm1lbW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNhY2hlKCkpKTsKICAgICBhZGRQbGF0Zm9ybUNv
bXBvbmVudHNJbmZvKGNoaWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCBlMWZiMDJjZmFjZmZmMDJlYTIxOGMy
MmJmYTg2ODc5NDQ4MWFmZDE1Li42MTg5YjUzMDFkOTU0NDFlOTc0NTU2NjFkOGQ4YjAyMmE4NDRl
MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVl
dENsaWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCkBAIC0xOTIsNCArMTkzLDE0IEBAIHZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29u
dGVudHM+IHNoCiAgICAgc2V0RGVjb2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVz
dGltYXRlZFNpemVJbkJ5dGVzKCkpOwogfQogCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZENTU1N0eWxlU2hlZXQ+IGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNT
Uyk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2Fj
aGUpCisgICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLmdl
dCgpLCBtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSk7Cisg
ICAgaW5mby5hZGRTdHJpbmcobV9kZWNvZGVkU2hlZXRUZXh0KTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggOWFk
NmYxNGJhMjM2OTg3OGU0ZTYxOGUyNmYyODc1ZWRlZjI1YjllOC4uNDM0YmE0NTYxN2JhMjdmNDA0
ODEyZjg3YjIzODE1NzhhZDI5NDU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKKyAgICBjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHls
ZVNoZWV0Q29udGVudHM7CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKQEAgLTU4LDYg
KzU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hl
ZXRDb250ZW50cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYpOwogICAgICAgICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVT
aGVldENvbnRlbnRzPik7CiAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBwcml2YXRlOgog
ICAgICAgICBib29sIGNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNW
YWxpZE1JTUVUeXBlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdl
UHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmZGRkNzlkNDdlMDg1OTE1OWRjOTU1MDEy
ODQ5MzQ0ZmMxMDBhYWI5Li5jZDlhNDJkNzdkMDFmMmZlOTczNmY2ZmZlMTI0ODBmY2IwMTlkNTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJG
b250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MjA2LDQgKzIwNywxNiBAQCB2b2lkIENhY2hlZEZvbnQ6OmVycm9yKENhY2hlZFJlc291cmNlOjpT
dGF0dXMgc3RhdHVzKQogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkRm9udD4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCk7Cisg
ICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisjaWYgRU5BQkxF
KFNWR19GT05UUykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2V4dGVybmFsU1ZHRG9jdW1lbnQpOwor
I2VuZGlmCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQorICAgIGluZm8u
YWRkTWVtYmVyKG1fZm9udERhdGEpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDNjYWZjMWU1MDM4ODQxOWI2YTEzNzk2NzdlY2Uy
YmUyZjZiM2JhMzcuLmNmZjM0MmEyNWMwMDM2ODk0ODIwY2Q1N2FlZThkYmY1YTk2ZDEwYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAgICAgU1ZHRm9udEVsZW1lbnQqIGdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEqIG1fZm9udERhdGE7CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzMTM0
NzVjZTFiZjZkZTMwOWIxOWEzZTFhODVhOWNhMjM1NTA2YWQzLi5hZGUxNDE5ZjdmZjAxNDk1ZjVh
ZDI3ZWEzZDMwMjQwNzIwYjNmNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTQ2Nyw0ICs0NjcsMTQgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
bm90aWZ5T2JzZXJ2ZXJzKCZyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkSW1hZ2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUltYWdlKTsKKyAgICBpbmZv
LnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZFJhd0J1
ZmZlcihtX2ltYWdlLmdldCgpLCBkZWNvZGVkU2l6ZSgpKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAg
IGluZm8uYWRkTWVtYmVyKG1fc3ZnSW1hZ2VDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApp
bmRleCBiOTkyMTUxNzM1OGJjMTFhM2JiMmNkYzJlMzRhYjA2NTNkNGMzNmE5Li5lMzRjMTY0MmI0
OTExNjdhMjY0NWUwMGI5NzUzYThlODM1YWE5NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lk
IGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJS
SURFOworCiBwcml2YXRlOgogICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGIwYTcwMzMwNGI1OTM3YjY2YzAxNDQw
MzJkMzNkY2IwMWU2NjAyM2YuLjllNTUyN2I0NGM5Zjk4MjAxMDgzZTQ5M2RkYTIyNTQ1NzJhNjJh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTE1OSw0ICsxNjAsMTEgQEAgYm9v
bCBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRSYXdSZXNvdXJjZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlKTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGUyOTZhYjg3ZWFiNTUyOTc0Nzg4YThhNjI5
ODlkYzQ5OGY2NTY2ODQuLmMzNDliODY2YTM3NjZhOWEyNWMyYjgwZDc1MGU0MzkzYTUxZjUzZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZUNhbGxiYWNrOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ7CitjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZSA6IHB1YmxpYyBDYWNo
ZWRSZXNvdXJjZSB7CiBwdWJsaWM6CkBAIC00NCw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURF
OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNDFjZDYwMTg5NWFiZDIyMmQ4MDJlZjIx
NjNlOTQ1ZGY1MjNiZmI5Zi4uNDk2ZTQzMDI1ZDM1ZjBhZjM0YTE0NDU1Njg5YzAwZDY1ZTM2ZTA4
OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQdXJnZWFibGVCdWZmZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgpAQCAtODAwLDQgKzgwMSwyNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJj
ZUNhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1fcmVz
b3VyY2UtPmRpZEFkZENsaWVudChtX2NsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBpbmZvLmFkZEhhc2hT
ZXQobV9jbGllbnRzKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX2FjY2VwdCk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9sb2FkZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVz
cG9uc2UpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZGF0YSk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9jYWNoZWRNZXRhZGF0YS5nZXQoKSk7CisgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX3ByZXZJbkFsbFJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJldkluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJveHlSZXNvdXJjZSk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRIYXNoU2V0KG1faGFuZGxlc1RvUmV2YWxpZGF0ZSk7CisKKyAgICBpZiAo
bV9wdXJnZWFibGVEYXRhICYmICFtX3B1cmdlYWJsZURhdGEtPndhc1B1cmdlZCgpKQorICAgICAg
ICBpbmZvLmFkZFJhd0J1ZmZlcihtX3B1cmdlYWJsZURhdGEuZ2V0KCksIG1fcHVyZ2VhYmxlRGF0
YS0+c2l6ZSgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAppbmRleCBmZTNlMWZjNjNjN2IzZWQyNTNhYWJhODJlOTE3NDQ1ZTU1NmVlODM4
Li40OTNiMTY3YzUxMTRhN2I5Yzk2NTI1Y2MzMzVhNTM3ZmQ4ZGVjZjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CitjbGFzcyBNZW1vcnlP
YmplY3RJbmZvOwogY2xhc3MgUHVyZ2VhYmxlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTI0OSw2ICsyNTAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRMb2FkRmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5p
c2hUaW1lID0gZmluaXNoVGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZEZpbmlzaFRpbWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2
b2lkIGNoZWNrTm90aWZ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDg3MTI5MmM2MjM3ZmVjMDMyMDM1YTYy
OWQ3ZTgyYjc1NThkNGY3ZTcuLmM0ZTdkNDQzMWI1Y2E5MjFmZjYxYmU3ZGUzOWMwYjY5NDMyM2Y1
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENhY2hlZFJlc291cmNl
SGFuZGxlQmFzZTo6c2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSAKQEAgLTM5
LDQgKzQxLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpzZXRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFu
ZGxlKHRoaXMpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOwor
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2UpOworfQorCisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgK
aW5kZXggOTVjZDBmZjdmOGFlNGIzNDA1YjkwOTg1ZmQ3NjY5MzhhOTM5MDI2My4uMTVkNDRjNzU3
MWMxMWI4NDBmOWQzZTE3MTdkMTcxOGM3ZmE1ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOworCiAgICAg
Y2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIH5D
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UoKSB7IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT51
bnJlZ2lzdGVySGFuZGxlKHRoaXMpOyB9CkBAIC00MSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdHlwZWRlZiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZp
ZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2UgPyAmQ2FjaGVkUmVzb3VyY2VI
YW5kbGVCYXNlOjptX3Jlc291cmNlIDogMDsgfQogCisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UoKSA6IG1fcmVzb3VyY2UoMCkge30KICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKENhY2hlZFJlc291cmNlKiByZXMpIHsgbV9yZXNvdXJj
ZSA9IHJlczsgaWYgKG1fcmVzb3VyY2UpIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRoaXMp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAppbmRleCA5YTg4NzI0YTE1MGQxYWU2ZTRhODUwYTExOGE5YzRmMzhlZWU5ZTFm
Li4xZTBiZTI0YjNmZmUzOTQ3NDM3NTUwZWQ1ODQ0YjY4ZjczYzAyZDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTg3Nyw1ICs4NzcsMTEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2Fk
U3RhdHMoKQogICAgICAgICBwcmludGYoIklNQUdFUzogICVkICglZCBoaXRzLCBoaXQgcmF0ZSAl
ZCUlKVxuIiwgaW1hZ2VzLCBpbWFnZXMgLSBpbWFnZU1pc3NlcywgKGltYWdlcyAtIGltYWdlTWlz
c2VzKSAqIDEwMCAvIGltYWdlcyk7CiB9CiAjZW5kaWYKLSAgICAKKwordm9pZCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpM
b2FkZXIpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChtX2RvY3VtZW50UmVzb3Vy
Y2VzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ZWViMzg3MWYwM2I0MGY4NjA5ODAwMTU0NjgxYzViMDU2
ZDNhY2I1Li4zZjFjMjMzYjAwOGRmODQwMWE4YzFhYmExMTgxNzVkYTdkODBmYjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApA
QCAtNTIsNiArNTIsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1h
Z2VMb2FkZXI7CiBjbGFzcyBLVVJMOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAogLy8gVGhl
IENhY2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhlIGxvYWRpbmcgb2Ygc2NyaXB0cy9pbWFn
ZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgewpAQCAtMTE5LDYgKzEyMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50UHJl
bG9hZFN0YXRzKCk7CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBj
b25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAorICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBS
ZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcAppbmRleCBmMDNmYWRiNTdhOGFkMjNmNmYzMDE4NGYxYWEwMDEyNDVl
ODA3YjM5Li5mZDY3ZDc3MTljODI3ZmNlNGNmMTI5MzZmNmM1OWQ1ZWQyNzQ0OTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTcxLDYgKzcxLDE0IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmRhdGEoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkCiAgICAgY2hlY2tOb3RpZnko
KTsKIH0KIAordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q2FjaGVkU1ZHRG9jdW1lbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNWRyk7CisgICAgaW5mby52aXNpdEJhc2VD
bGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9kb2N1bWVudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30KKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKaW5kZXggYjA1ZWY2N2QxYzQyNzFhYTA0OGRjYTJjNGEyYTY1OTc2NTE0MDUwMC4uNTRk
NWE4ODgxMmY1ZjZmNzJjZjVjNTEzMDQxMzQ2ZmFmYWJlOTZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDYgKzQzLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U1ZHRG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5k
ZXggYTJkYTc0NDg5YmQ1ZTU1NWUzNzE4YmJjY2IzYTdiODEyOTFmZGZiMC4uMjdlZTUyMDc1YTJi
NTY4N2FmM2MwY2ViNTZkODdiOGFjYjlmNTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTI2LDQgKzEyNywxNSBA
QCB2b2lkIENhY2hlZFNjcmlwdDo6c291cmNlUHJvdmlkZXJDYWNoZVNpemVDaGFuZ2VkKGludCBk
ZWx0YSkKIH0KICNlbmRpZgogCit2b2lkIENhY2hlZFNjcmlwdDo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlD
bGFzc0luZm88Q2FjaGVkU2NyaXB0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTY3JpcHQpOworICAgIGluZm8udmlzaXRC
YXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2Ny
aXB0KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIpOworI2lmIFVTRShKU0MpCisgICAg
aW5mby5hZGRNZW1iZXIobV9zb3VyY2VQcm92aWRlckNhY2hlKTsKKyNlbmRpZgorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKaW5kZXggOWE0ZjM4YWQwYjNmN2JmZTMxZTc0Nzg3N2Q0Y2VmNTY5NDI1ODJiYi4uM2Rm
NmJlOTM4MjQzYjg1YWQ2Zjk5NGY2YjdjODk0ZGRkMzA2Zjc1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9h
ZGVyOworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIAogICAgIGNsYXNzIENhY2hlZFNjcmlwdCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZSB7CkBAIC01Nyw2ICs1OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNDOjpT
b3VyY2VQcm92aWRlckNhY2hlKiBzb3VyY2VQcm92aWRlckNhY2hlKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc291cmNlUHJvdmlkZXJDYWNoZVNpemVDaGFuZ2VkKGludCBkZWx0YSk7CiAjZW5kaWYK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBQdXJn
ZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAppbmRleCBiOGQ3
YzVmOWE4ODk1MDllNDg5ZDgzZGUyMTUwNzgzYjY4ODBjMDNkLi5kMGE2YTc5MzYyOTE0YzdhZDJm
ZDYyOTQ4N2NlY2IxN2U0MWM0MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC02
Nyw2ICs2OCwxNCBAQCB2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OmRh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAordm9pZCBDYWNoZWRTaGFkZXI6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNoYWRlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyKTsKKyAg
ICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2RlY29kZXIpOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2hhZGVyU3RyaW5nKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFE
RVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4IGQx
ZGUxNGQ3NzVmMzgwZWU1YjNhM2U5MzU0YmEwZjdlOTkwODZkNzQuLjQyODY3NzBhZGNmODExYWQ4
NGUyZTRhMWQwM2I5OTUxYzk1M2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2hhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgQ2FjaGVkU2hhZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTQ2LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CiAgICAgdm9p
ZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
MzM2ZmNlNGFjNjBmZjMzODM3NDA1ZThiZWJlMTcxZGQ4NGJmY2EyMi4uYjA2NmMwYTljN2Q3Mzdm
ZmFiMGVmYmE5MTk3ODI2NGE2ZWFhYTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRT
dHlsZVNoZWV0Q2xpZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTk2LDYgKzk3LDE0IEBAIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiAgICAg
Y2hlY2tOb3RpZnkoKTsKIH0KIAordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRYU0xTdHlsZVNoZWV0PiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VYU0wpOworICAg
IGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRk
U3RyaW5nKG1fc2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKICNl
bmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAppbmRleCBiOGY3MjgzZDM2NDkyOWYyODU2ZWE1OGEyN2UwNzdkODQ4ZjI4YTZi
Li4yYWE4ZGZhMjUxMzJmODIyNjc0ZTY4MTJiNjA0YjFjZTczN2FkMjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyOworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4dFJlc291
cmNlRGVjb2RlcjsKIAogI2lmIEVOQUJMRShYU0xUKQpAQCAtNTAsNiArNTEsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7CiAgICAg
ICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTdHJpbmcg
bV9zaGVldDsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDVkYzA0
NzQwMmNiM2Q3NDhlZDk3MzQ3OWU2NDIyODc1OTM3ODg5MmQuLjIwNWFlOGMwNGYxZjQ3YTk5YmNj
ODIzMDNjNTRiN2UyN2NlNzNlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKQEAg
LTcxNCw2ICs3MTUsMTcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6Omdl
dFN0YXRpc3RpY3MoKQogICAgIHJldHVybiBzdGF0czsKIH0KIAordm9pZCBNZW1vcnlDYWNoZTo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88TWVtb3J5Q2FjaGU+IGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMp
OworICAgIGluZm8uYWRkSGFzaE1hcChtX3Jlc291cmNlcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKENhY2hl
ZFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaSAh
PSBlOyArK2kpIHsKKyAgICAgICAgaW5mby5hZGRTdHJpbmcoaS0+Zmlyc3QpOworICAgICAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOworICAgIH0KK30KKwogdm9pZCBN
ZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBtX2Rpc2FibGVk
ID0gZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmlu
ZGV4IDZmOTgzMjY2MjI4MjI0YTM5NjAzNTI0NDQyNDgzNGI1NDM2YmM3MTEuLjVhMmY5NDk1ZTgx
NThmZmNmY2IwOTEwNzA4MzczZDcxNzAxZjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZENTU1N0eWxl
U2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5IYXNoOwpAQCAtMTY4LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsaXZlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KICAgICB1bnNpZ25lZCBkZWFkU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lbW9yeUNhY2hl
KCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBtYWtlIHN1cmUg
bm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2VzIG5vdCBkZWxl
dGUgc2luZ2xldG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdl
YWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgK
aW5kZXggNDY4YjkyYjI1MTJiOGJmOGI3MDQ1YTI3NjFmMDgwZDkwMDA0ZDM0MS4uODM0MjI0MWQ0
Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIFB1cmdlYWJs
ZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1cmdlYWJsZUJ1ZmZlcik7
CiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgd2FzUHVyZ2VkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBtYWtlUHVyZ2VhYmxl
KGJvb2wgcHVyZ2VhYmxlKTsKLSAgICAgICAgCisKICAgICBwcml2YXRlOgogICAgICAgICBQdXJn
ZWFibGVCdWZmZXIoY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156290</attachid>
            <date>2012-08-03 01:50:30 -0700</date>
            <delta_ts>2012-08-03 08:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120803125009.patch</filename>
            <type>text/plain</type>
            <size>39287</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4MGQwNmE2MmJlMWNm
NWFlOGNjMzljOWVmODY3NTNiNTVkNDVjMy4uZmRkOWZjZjgyZjg4ZGEyMjNkY2Q5Yzc1ZDhmM2Y5
Y2Y0MWRiYzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0wMyAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgbWFyayB0aGUgbWVtb3J5IGNhY2hlIG9iamVjdHMgYXMgdmlzaXRlZC4KKyAg
ICAgICAgQXMgYSByZXN1bHQgTUkgY291bGQgY291bnQgdGhlIHNhbWUgb2JqZWN0cyBtdWx0aXBs
ZSB0aW1lcy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3QgdHJhdmVyc2VzIHRocm91Z2gg
TWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9NLgorICAgICAgICBBbHNvIG5v
dCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNvdW50ZWQuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xh
c3NJbmZvOjphZGRJbnN0cnVtZW50ZWRIYXNoTWFwKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRDU1NTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAoQ2FjaGVk
Rm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENh
Y2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSYXdSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgor
ICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFNjcmlwdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDgtMDMgIEFiaGlzaGVrIEFyeWEg
IDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWdyZXNzaW9uKHIxMjQ1NjQpOiBX
cm9uZyBpbmxpbmVDaGlsZHJlbkJsb2NrLT5oYXNMYXllcigpIGNvbXB1dGVkIGluIFJlbmRlckJs
b2NrOjpyZW1vdmVDaGlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGMzY2Q3MTdmYzc4
YjZiZDFkNzVhNzFiZDg5MGIyYWQxZjUwNzU3NjMuLjllMTIxODNjYmYyMDM2MmNiNGQ0YWJiMmMy
N2NkMmYyOThmYTg5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA5NSw2ICs2MDk1
LDggQEAgdm9pZCBEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X3N0eWxlUmVzb2x2ZXIpOwogICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q29udGFpbmVyTm9kZT4o
dGhpcyk7CiAgICAgaW5mby5hZGRWZWN0b3IobV9jdXN0b21Gb250cyk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNZW1iZXIobV9mcmFtZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9jYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAgICAgaW5mby5hZGRTdHJpbmcobV9kb2N1bWVu
dFVSSSk7CiAgICAgaW5mby5hZGRTdHJpbmcobV9iYXNlVGFyZ2V0KTsKICAgICBpbmZvLmFkZElu
c3RydW1lbnRlZE1lbWJlcihtX2VsZW1TaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDQ2ZTVlMTA0NzY1NzkzYTUzZDI3Mzk1MjVjYWFhMTUy
MjIyMzc3Yi4uMDdmNTNiOGE3NGQxMjk5M2MwY2FiZGU0MGYzNDRmOWRmNzg2ZTg4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMSwzICsxLDQgQEAK
KwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKQEAgLTUyLDYgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTLAogICAgICAg
ICBCaW5kaW5nLAogICAgICAgICBMb2FkZXIsCisgICAgICAgIE1lbW9yeUNhY2hlU3RydWN0dXJl
cywKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UsCisgICAgICAgIENhY2hlZFJlc291cmNlQ1NTLAor
ICAgICAgICBDYWNoZWRSZXNvdXJjZUZvbnQsCisgICAgICAgIENhY2hlZFJlc291cmNlSW1hZ2Us
CisgICAgICAgIENhY2hlZFJlc291cmNlU2NyaXB0LAorICAgICAgICBDYWNoZWRSZXNvdXJjZVNW
RywKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTaGFkZXIsCisgICAgICAgIENhY2hlZFJlc291cmNl
WFNMLAogICAgICAgICBMYXN0VHlwZUVudHJ5CiAgICAgfTsKIApAQCAtOTUsNiArMTA1LDggQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRP
YmplY3QoY29uc3QgVCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3duaW5nVHJh
aXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsg
fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAo
Y29uc3QgSGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2Up
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBh
ZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYsIE9iamVjdFR5
cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIExp
c3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUm
LCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtMTgxLDYgKzE5Myw4
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoY29u
c3QgTSYgbWVtYmVyKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QobWVtYmVy
LCBtX29iamVjdFR5cGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+
IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoTWFw
KGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZElu
c3RydW1lbnRlZEhhc2hNYXAobWFwLCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaFNldChjb25zdCBIYXNoU2V0
VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9v
YmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4g
dm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oc2V0LCBtX29i
amVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZv
aWQgYWRkSW5zdHJ1bWVudGVkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbih2ZWN0b3IsIG1f
b2JqZWN0VHlwZSwgdHJ1ZSk7IH0KQEAgLTI4Myw2ICsyOTcsMTQgQEAgdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVj
dFR5cGUgb3cKICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBjYWxjdWxhdGVD
b250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIEhhc2hNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1l
bnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQoreworICAgIGNvdW50T2JqZWN0U2l6ZShvd25l
ck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoaGFzaE1hcCwgY29udGVudE9ubHkp
KTsKKyAgICBmb3IgKHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gaGFz
aE1hcC5iZWdpbigpOyBpICE9IGhhc2hNYXAuZW5kKCk7ICsraSkKKyAgICAgICAgYWRkSW5zdHJ1
bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaFNldFR5cGU+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFz
aFNldChjb25zdCBIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5
cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA5YzI4YTAzYjdlMzg1ZjY3MTE4YzNkOTMx
NGI0MjIyNjFiNWVjODgzLi42NWZhYzg2ZDBmMmEwNDQwNjQ5NDZjZjMzMGRjZjM3ZWE1MDc3MDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAKQEAgLTgxLDE0ICs4MSwxOSBAQCBzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVybmFsU3Ry
aW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3RvckRP
TURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFy
IG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvY2Vz
c1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CiAKLXN0YXRpYyBjb25z
dCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdlcyI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENzc1N0eWxlU2hlZXRzIjsKLXN0YXRp
YyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNoZWRTY3JpcHRzIjsKLXN0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMi
Owotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0
aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9yeUNhY2hlIjsKK3N0YXRpYyBjb25z
dCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1lbW9yeUNhY2hlU3RydWN0dXJlcyI7
CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtdID0gIkNhY2hlZFJlc291cmNlIjsK
K3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1hZ2VbXSA9ICJDYWNoZWRJbWFnZXMi
Oworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VDU1NbXSA9ICJDYWNoZWRDc3NTdHls
ZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNjcmlwdFtdID0gIkNh
Y2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VYU0xbXSA9ICJD
YWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZUZv
bnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNW
R1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291
cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CisKIHN0YXRpYyBjb25zdCBjaGFyIHJlbmRl
clRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVy
VHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOwogCkBAIC00NjksMTIgKzQ3
NCwzNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0QmluZGluZ01l
bW9yeUluZm8oJm1fZG9tTWVtb3J5VXNhZ2UpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3VudGVyKiBp
bnNwZWN0b3JEYXRhKQorICAgIHZvaWQgdmlzaXRNZW1vcnlDYWNoZSgpCiAgICAgewotICAgICAg
ICBpbnNwZWN0b3JEYXRhLT5hZGRDb21wb25lbnQoTWVtb3J5QmxvY2tOYW1lOjppbnNwZWN0b3JE
T01EYXRhLCBtX2RvbU1lbW9yeVVzYWdlLnNlbGZTaXplKCkpOworICAgICAgICBtX2RvbU1lbW9y
eVVzYWdlLmFkZFJvb3RPYmplY3QobWVtb3J5Q2FjaGUoKSk7CisgICAgfQogCisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JNZW1vcnlDYWNoZSgpIGNv
bnN0CisgICAgewogICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKLSAgICAgICAgZm9yIChp
bnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXI7IGkgPCBNZW1vcnlJbnN0cnVtZW50
YXRpb246Okxhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgZm9yIChpbnQgaSA9IE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOyBpIDwgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV9k
b21NZW1vcnlVc2FnZS50b3RhbFNpemUoc3RhdGljX2Nhc3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPYmplY3RUeXBlPihpKSk7CisKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpLCBNZW1vcnlCbG9ja05hbWU6Om1lbW9yeUNh
Y2hlU3RydWN0dXJlcyk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgp
LCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hl
ZFJlc291cmNlKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6
ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTKSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxk
cmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNhY2hlZFJlc291cmNlRm9udCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VG
b250KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVt
b3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJ
bWFnZSksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6
ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2NyaXB0KSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNjcmlwdCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNv
dXJjZVNWRyk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2Rv
bU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlU2hhZGVyKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNoYWRlcik7CisKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBibG9jayA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGUpOwor
ICAgICAgICBibG9jay0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAgICBibG9jay0+c2V0Q2hp
bGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIGJsb2NrLnJlbGVhc2Uo
KTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9i
amVjdEZvckRPTSgpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsK
KyAgICAgICAgZm9yIChpbnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXI7IGkgPCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlczsgKytpKQogICAgICAg
ICAgICAgdG90YWxTaXplICs9IG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKHN0YXRpY19jYXN0
PE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZT4oaSkpOwogCiAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gZG9tQ2hpbGRyZW4g
PSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKQEAg
LTQ5MCw2ICs1MjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZG9tLnJlbGVhc2UoKTsK
ICAgICB9CiAKKyAgICB2b2lkIGR1bXBTdGF0aXN0aWNzKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4qIGNoaWxkcmVuLCBJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVj
dG9yRGF0YSkKKyAgICB7CisgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
TWVtb3J5Q2FjaGUoKSk7CisgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
RE9NKCkpOworICAgICAgICBpbnNwZWN0b3JEYXRhLT5hZGRDb21wb25lbnQoTWVtb3J5QmxvY2tO
YW1lOjppbnNwZWN0b3JET01EYXRhLCBtX2RvbU1lbW9yeVVzYWdlLnNlbGZTaXplKCkpOworICAg
IH0KKwogcHJpdmF0ZToKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbCBtX2RvbU1lbW9yeVVzYWdlOwpAQCAtNDk3LDkgKzUzNCwxMCBAQCBwcml2YXRlOgog
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5m
byhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMsIEluc3BlY3RvckRh
dGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQorc3RhdGljIHZvaWQgZG9tVHJlZUluZm8oUGFnZSog
cGFnZSwgVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzLCBUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGlu
c3BlY3RvckRhdGEpCiB7CiAgICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBh
Z2UsIHZpc2l0ZWRPYmplY3RzKTsKKwogICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5vZGVXcmFw
cGVycygmZG9tVHJlZXNJdGVyYXRvcik7CiAKICAgICAvLyBNYWtlIHN1cmUgYWxsIGRvY3VtZW50
cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgpAQCAtNTExLDgg
KzU0OSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVl
SW5mbyhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYKICAgICB9CiAKICAgICBkb21UcmVlc0l0
ZXJhdG9yLnZpc2l0QmluZGluZ3MoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5
Q2FjaGUoKTsKIAotICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGlu
c3BlY3RvckRhdGEpOworICAgIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoY2hpbGRy
ZW4sIGluc3BlY3RvckRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVu
dHNJbmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiA+IGNoaWxkcmVuKQpAQCAtNTI2LDI3ICs1NjUsNiBAQCBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9y
bUNvbXBvbmVudHNJbmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bQogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1l
bW9yeUNhY2hlSW5mbygpCi17Ci0gICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBt
ZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7Ci0gICAgaW50IHRvdGFsU2l6ZSA9IHN0YXRz
LmltYWdlcy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuY3NzU3R5bGVTaGVldHMu
c2l6ZSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzLnNjcmlwdHMuc2l6ZSArCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUgKwotICAgICAgICAgICAgICAg
ICAgICBzdGF0cy5mb250cy5zaXplOwotICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
bWVtb3J5Q2FjaGVTdGF0cyA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1l
KE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGUpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNl
dFNpemUodG90YWxTaXplKTsKLQotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5n
ZXQoKSwgc3RhdHMuaW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsK
LSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVl
dHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRk
TWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5
QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJl
bi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCks
IHN0YXRzLmZvbnRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOwotICAgIG1l
bW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKLSAgICByZXR1cm4g
bWVtb3J5Q2FjaGVTdGF0cy5yZWxlYXNlKCk7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiBqc0V4dGVybmFsUmVzb3VyY2VzSW5mbyhWaXNpdGVkT2JqZWN0cyYg
dmlzaXRlZE9iamVjdHMpCiB7CiAgICAgRXh0ZXJuYWxSZXNvdXJjZVZpc2l0b3IgdmlzaXRvcih2
aXNpdGVkT2JqZWN0cyk7CkBAIC01ODUsMTAgKzYwMyw5IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8
SW5zCiAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CiAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwogICAgIGNoaWxkcmVu
LT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2Fj
aGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1fcGFnZSkp
OyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwotICAgIGNoaWxkcmVuLT5hZGRJdGVt
KGRvbVRyZWVJbmZvKG1fcGFnZSwgdmlzaXRlZE9iamVjdHMsICZpbnNwZWN0b3JEYXRhKSk7IC8v
IEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oanNF
eHRlcm5hbFJlc291cmNlc0luZm8odmlzaXRlZE9iamVjdHMpKTsKKyAgICBkb21UcmVlSW5mbyht
X3BhZ2UsIHZpc2l0ZWRPYmplY3RzLCBjaGlsZHJlbi5nZXQoKSwgJmluc3BlY3RvckRhdGEpOyAv
LyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGlu
c3BlY3RvckRhdGEuZHVtcFN0YXRpc3RpY3MoKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZHVt
cERPTVN0b3JhZ2VDYWNoZShtX2RvbVN0b3JhZ2VBZ2VudC0+bWVtb3J5Qnl0ZXNVc2VkQnlTdG9y
YWdlQ2FjaGUoKSkpOwogICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oY2hpbGRyZW4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IGUxZmIwMmNmYWNmZmYwMmVhMjE4YzIyYmZhODY4Nzk0NDgxYWZkMTUuLjYxODli
NTMwMWQ5NTQ0MWU5NzQ1NTY2MWQ4ZDhiMDIyYTg0NGUwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0
eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAg
LTE5Miw0ICsxOTMsMTQgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzYXZlUGFyc2VkU3R5
bGVTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gc2gKICAgICBzZXREZWNvZGVk
U2l6ZShtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSk7CiB9
CiAKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88
Q2FjaGVkQ1NTU3R5bGVTaGVldD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTKTsKKyAgICBpbmZvLnZpc2l0QmFzZUNs
YXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIp
OworICAgIGlmIChtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSkKKyAgICAgICAgaW5mby5hZGRSYXdC
dWZmZXIobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldENh
Y2hlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX2RlY29k
ZWRTaGVldFRleHQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA5YWQ2ZjE0YmEyMzY5ODc4ZTRlNjE4ZTI2ZjI4
NzVlZGVmMjViOWU4Li40MzRiYTQ1NjE3YmEyN2Y0MDQ4MTJmODdiMjM4MTU3OGFkMjk0NThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENh
Y2hlZFJlc291cmNlQ2xpZW50OworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xh
c3MgU2hhcmVkQnVmZmVyOwogICAgIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKICAgICBjbGFz
cyBUZXh0UmVzb3VyY2VEZWNvZGVyOwpAQCAtNTgsNiArNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiByZXN0b3JlUGFyc2Vk
U3R5bGVTaGVldChjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAgICAgICAgIHZvaWQgc2F2ZVBh
cnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+KTsKICAgICAKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdCBPVkVSUklERTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2FuVXNlU2hlZXQo
Ym9vbCBlbmZvcmNlTUlNRVR5cGUsIGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJu
IFB1cmdlTGFzdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IGZkZGQ3OWQ0N2UwODU5MTU5ZGM5NTUwMTI4NDkzNDRmYzEwMGFhYjkuLmNkOWE0MmQ3
N2QwMWYyZmU5NzM2ZjZmZmUxMjQ4MGZjYjAxOWQ1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNs
dWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMDYsNCArMjA3LDE2IEBAIHZvaWQgQ2Fj
aGVkRm9udDo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiAgICAgY2hlY2tO
b3RpZnkoKTsKIH0KIAordm9pZCBDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxDYWNoZWRGb250PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VGb250KTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENh
Y2hlZFJlc291cmNlPih0aGlzKTsKKyNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorICAgIGluZm8uYWRk
TWVtYmVyKG1fZXh0ZXJuYWxTVkdEb2N1bWVudCk7CisjZW5kaWYKKyNpZmRlZiBTVE9SRV9GT05U
X0NVU1RPTV9QTEFURk9STV9EQVRBCisgICAgaW5mby5hZGRNZW1iZXIobV9mb250RGF0YSk7Cisj
ZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5k
ZXggM2NhZmMxZTUwMzg4NDE5YjZhMTM3OTY3N2VjZTJiZTJmNmIzYmEzNy4uY2ZmMzQyYTI1YzAw
MzY4OTQ4MjBjZDU3YWVlOGRiZjVhOTZkMTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBTVkdGb250RWxl
bWVudCogZ2V0U1ZHRm9udEJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Qg
T1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogbV9mb250
RGF0YTsKICAgICBib29sIG1fbG9hZEluaXRpYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDMxMzQ3NWNlMWJmNmRlMzA5YjE5YTNlMWE4NWE5
Y2EyMzU1MDZhZDMuLmFkZTE0MTlmN2ZmMDE0OTVmNWFkMjdlYTNkMzAyNDA3MjBiM2Y2NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY3LDQg
KzQ2NywxNCBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBub3RpZnlPYnNlcnZlcnMoJnJlY3QpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRJ
bWFnZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNhY2hlZFJlc291cmNlSW1hZ2UpOworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVz
b3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkUmF3QnVmZmVyKG1faW1hZ2UuZ2V0KCksIGRlY29k
ZWRTaXplKCkpOworI2lmIEVOQUJMRShTVkcpCisgICAgaW5mby5hZGRNZW1iZXIobV9zdmdJbWFn
ZUNhY2hlKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGI5OTIxNTE3MzU4YmMxMWEzYmIy
Y2RjMmUzNGFiMDY1M2Q0YzM2YTkuLmUzNGMxNjQyYjQ5MTE2N2EyNjQ1ZTAwYjk3NTNhOGU4MzVh
YTk2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC05
Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uQWR2YW5jZWQo
Y29uc3QgSW1hZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSosIGNvbnN0IEludFJlY3QmKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgSW1h
Z2UqIGxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKaW5kZXggYjBhNzAzMzA0YjU5MzdiNjZjMDE0NDAzMmQzM2RjYjAxZTY2MDIzZi4uOWU1NTI3
YjQ0YzlmOTgyMDEwODNlNDkzZGRhMjI1NDU3MmE2MmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisj
aW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtMTU5LDQgKzE2MCwxMSBAQCBib29sIENhY2hlZFJhd1Jlc291cmNlOjpjYW5S
ZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPENhY2hlZFJhd1Jlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGluZm8udmlzaXRCYXNl
Q2xhc3M8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgK
aW5kZXggZTI5NmFiODdlYWI1NTI5NzQ3ODhhOGE2Mjk4OWRjNDk4ZjY1NjY4NC4uYzM0OWI4NjZh
Mzc2NmE5YTI1YzJiODBkNzUwZTQzOTNhNTFmNTNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlQ2FsbGJhY2s7CiBjbGFzcyBD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiAKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKQEAg
LTQ0LDYgKzQ1LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIHZpcnR1YWwg
dm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA0MWNkNjAxODk1YWJkMjIyZDgwMmVmMjE2M2U5NDVkZjUyM2JmYjlmLi40OTZlNDMw
MjVkMzVmMGFmMzRhMTQ0NTU2ODljMDBkNjVlMzZlMDg4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCkBAIC04MDAsNCArODAxLDI3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OnRpbWVyRmlyZWQoVGlt
ZXI8Q2FjaGVkUmVzb3VyY2VDYWxsCiAgICAgbV9yZXNvdXJjZS0+ZGlkQWRkQ2xpZW50KG1fY2xp
ZW50KTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q2FjaGVkUmVzb3VyY2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZXNv
dXJjZVJlcXVlc3QpOworICAgIGluZm8uYWRkSGFzaFNldChtX2NsaWVudHMpOworICAgIGluZm8u
YWRkU3RyaW5nKG1fYWNjZXB0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2xv
YWRlcik7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZXNwb25zZSk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIobV9kYXRhKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2NhY2hlZE1ldGFk
YXRhLmdldCgpKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX25leHRJbkFsbFJl
c291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJldkluQWxs
UmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9uZXh0SW5M
aXZlUmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9wcmV2
SW5MaXZlUmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9v
d25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9wcm94eVJlc291cmNlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9o
YW5kbGVzVG9SZXZhbGlkYXRlKTsKKworICAgIGlmIChtX3B1cmdlYWJsZURhdGEgJiYgIW1fcHVy
Z2VhYmxlRGF0YS0+d2FzUHVyZ2VkKCkpCisgICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKG1fcHVy
Z2VhYmxlRGF0YS5nZXQoKSwgbV9wdXJnZWFibGVEYXRhLT5zaXplKCkpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGZlM2UxZmM2
M2M3YjNlZDI1M2FhYmE4MmU5MTc0NDVlNTU2ZWU4MzguLjQ5M2IxNjdjNTExNGE3YjljOTY1MjVj
YzMzNWE1MzdmZDhkZWNmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJ
bnNwZWN0b3JSZXNvdXJjZTsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFzcyBQdXJnZWFi
bGVCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVy
OwpAQCAtMjQ5LDYgKzI1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRGaW5pc2hUaW1l
KGRvdWJsZSBmaW5pc2hUaW1lKSB7IG1fbG9hZEZpbmlzaFRpbWUgPSBmaW5pc2hUaW1lOyB9CiAg
ICAgZG91YmxlIGxvYWRGaW5pc2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRmluaXNoVGlt
ZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgY2hlY2tOb3RpZnkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5j
cHAKaW5kZXggODcxMjkyYzYyMzdmZWMwMzIwMzVhNjI5ZDdlODJiNzU1OGQ0ZjdlNy4uYzRlN2Q0
NDMxYjVjYTkyMWZmNjFiZTdkZTM5YzBiNjk0MzIzZjU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0yNiw2ICsy
Niw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpzZXRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIApAQCAtMzksNCArNDEsMTEgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZUJhc2U6OnNldFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
ICAgICAgICAgbV9yZXNvdXJjZS0+cmVnaXN0ZXJIYW5kbGUodGhpcyk7CiB9CiAKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRS
ZXNvdXJjZUhhbmRsZUJhc2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobV9yZXNvdXJjZSk7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaAppbmRleCA5NWNkMGZmN2Y4YWU0YjM0MDVi
OTA5ODVmZDc2NjkzOGE5MzkwMjYzLi4xNWQ0NGM3NTcxYzExYjg0MGY5ZDNlMTcxN2QxNzE4Yzdm
YTVlZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIE1lbW9yeU9iamVjdEluZm87CisKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRs
ZUJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgfkNhY2hlZFJlc291cmNlSGFuZGxlQmFzZSgp
IHsgaWYgKG1fcmVzb3VyY2UpIG1fcmVzb3VyY2UtPnVucmVnaXN0ZXJIYW5kbGUodGhpcyk7IH0K
QEAgLTQxLDYgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVmIENh
Y2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OipVbnNwZWNpZmllZEJvb2xU
eXBlOwogICAgICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZSA/ICZDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6Om1fcmVzb3VyY2UgOiAw
OyB9CiAKKyAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlQmFz
ZSgpIDogbV9yZXNvdXJjZSgwKSB7fQogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlcykgeyBtX3Jlc291cmNlID0gcmVzOyBpZiAobV9yZXNvdXJjZSkg
bV9yZXNvdXJjZS0+cmVnaXN0ZXJIYW5kbGUodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDlhODg3MjRh
MTUwZDFhZTZlNGE4NTBhMTE4YTljNGYzOGVlZTllMWYuLjFlMGJlMjRiM2ZmZTM5NDc0Mzc1NTBl
ZDU4NDRiNjhmNzNjMDJkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODc3LDUgKzg3NywxMSBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpwcmludFByZWxvYWRTdGF0cygpCiAgICAgICAgIHByaW50Zigi
SU1BR0VTOiAgJWQgKCVkIGhpdHMsIGhpdCByYXRlICVkJSUpXG4iLCBpbWFnZXMsIGltYWdlcyAt
IGltYWdlTWlzc2VzLCAoaW1hZ2VzIC0gaW1hZ2VNaXNzZXMpICogMTAwIC8gaW1hZ2VzKTsKIH0K
ICNlbmRpZgotICAgIAorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1l
bW9yeUNsYXNzSW5mbzxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkxvYWRlcik7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRIYXNoTWFwKG1fZG9jdW1lbnRSZXNvdXJjZXMpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDVl
ZWIzODcxZjAzYjQwZjg2MDk4MDAxNTQ2ODFjNWIwNTZkM2FjYjUuLjNmMWMyMzNiMDA4ZGY4NDAx
YThjMWFiYTExODE3NWRhN2Q4MGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIEtVUkw7Citj
bGFzcyBNZW1vcnlPYmplY3RJbmZvOwogCiAvLyBUaGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgbWFu
YWdlcyB0aGUgbG9hZGluZyBvZiBzY3JpcHRzL2ltYWdlcy9zdHlsZXNoZWV0cyBmb3IgYSBzaW5n
bGUgZG9jdW1lbnQuCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlciB7CkBAIC0xMTksNiArMTIw
LDggQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICBib29sIGNh
blJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmLCBib29sIGZvclByZWxv
YWQgPSBmYWxzZSk7CiAgICAgCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNv
bHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291
cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGYw
M2ZhZGI1N2E4YWQyM2Y2ZjMwMTg0ZjFhYTAwMTI0NWU4MDdiMzkuLmZkNjdkNzcxOWM4MjdmY2U0
Y2YxMjkzNmY2YzU5ZDVlZDI3NDQ5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNzEsNiArNzEsMTQgQEAgdm9pZCBDYWNo
ZWRTVkdEb2N1bWVudDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQKICAgICBjaGVja05vdGlmeSgpOwogfQogCit2b2lkIENhY2hlZFNWR0Rv
Y3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRTVkdEb2N1bWVudD4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlU1ZHKTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlz
KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX2RlY29kZXIpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBiMDVlZjY3ZDFjNDI3
MWFhMDQ4ZGNhMmM0YTJhNjU5NzY1MTQwNTAwLi41NGQ1YTg4ODEyZjVmNmY3MmNmNWM1MTMwNDEz
NDZmYWZhYmU5NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogCisgICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsK
KwogcHJvdGVjdGVkOgogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBhMmRhNzQ0ODliZDVlNTU1ZTM3MThi
YmNjYjNhN2I4MTI5MWZkZmIwLi4yN2VlNTIwNzVhMmI1Njg3YWYzYzBjZWI1NmQ4N2I4YWNiOWY1
NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
ci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0xMjYsNCArMTI3LDE1IEBAIHZvaWQgQ2FjaGVkU2NyaXB0Ojpzb3Vy
Y2VQcm92aWRlckNhY2hlU2l6ZUNoYW5nZWQoaW50IGRlbHRhKQogfQogI2VuZGlmCiAKK3ZvaWQg
Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRTY3JpcHQ+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRS
ZXNvdXJjZVNjcmlwdCk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4o
dGhpcyk7CisgICAgaW5mby5hZGRTdHJpbmcobV9zY3JpcHQpOworICAgIGluZm8uYWRkTWVtYmVy
KG1fZGVjb2Rlcik7CisjaWYgVVNFKEpTQykKKyAgICBpbmZvLmFkZE1lbWJlcihtX3NvdXJjZVBy
b3ZpZGVyQ2FjaGUpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5YTRmMzhhZDBiM2Y3
YmZlMzFlNzQ3ODc3ZDRjZWY1Njk0MjU4MmJiLi4zZGY2YmU5MzgyNDNiODVhZDZmOTk0ZjZiN2M4
OTRkZGQzMDZmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgY2xhc3MgTWVtb3J5T2Jq
ZWN0SW5mbzsKICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiAgICAgY2xhc3MgQ2Fj
aGVkU2NyaXB0IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTU3LDYgKzU4LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGUqIHNvdXJj
ZVByb3ZpZGVyQ2FjaGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzb3VyY2VQcm92aWRlckNhY2hl
U2l6ZUNoYW5nZWQoaW50IGRlbHRhKTsKICNlbmRpZgorCisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgp
IGNvbnN0IHsgcmV0dXJuIFB1cmdlTGFzdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTaGFkZXIuY3BwCmluZGV4IGI4ZDdjNWY5YTg4OTUwOWU0ODlkODNkZTIxNTA3
ODNiNjg4MGMwM2QuLmQwYTZhNzkzNjI5MTRjN2FkMmZkNjI5NDg3Y2VjYjE3ZTQxYzQzMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAjaW5jbHVkZSAiQ2FjaGVkU2hh
ZGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY3LDYgKzY4LDE0IEBAIHZvaWQgQ2FjaGVk
U2hhZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQogCit2b2lkIENhY2hlZFNoYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2Fj
aGVkU2hhZGVyPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIpOworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2Fj
aGVkUmVzb3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7CisgICAg
aW5mby5hZGRTdHJpbmcobV9zaGFkZXJTdHJpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKaW5kZXggZDFkZTE0ZDc3NWYzODBlZTViM2EzZTkzNTRi
YTBmN2U5OTA4NmQ3NC4uNDI4Njc3MGFkY2Y4MTFhZDg0ZTJlNGExZDAzYjk5NTFjOTUzYmE0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaApAQCAtMzYsNiAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBDYWNoZWRTaGFkZXIgOiBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNDYsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBzaGFkZXJTdHJpbmcoKTsKICAgICB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJp
dmF0ZToKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIFN0
cmluZyBtX3NoYWRlclN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCAzMzZmY2U0YWM2MGZmMzM4Mzc0MDVlOGJl
YmUxNzFkZDg0YmZjYTIyLi5iMDY2YzBhOWM3ZDczN2ZmYWIwZWZiYTkxOTc4MjY0YTZlYWFhNjM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKKyNpbmNs
dWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtOTYsNiArOTcsMTQgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjplcnJvcihDYWNo
ZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKICAgICBjaGVja05vdGlmeSgpOwogfQogCit2b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFhT
TFN0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTCk7CisgICAgaW5mby52aXNpdEJhc2VDbGFzczxDYWNo
ZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRTdHJpbmcobV9zaGVldCk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30KKwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IGI4ZjcyODNk
MzY0OTI5ZjI4NTZlYTU4YTI3ZTA3N2Q4NDhmMjhhNmIuLjJhYThkZmEyNTEzMmY4MjI2NzRlNjgx
MmI2MDRiMWNlNzM3YWQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgY2xhc3MgTWVtb3J5
T2JqZWN0SW5mbzsKICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiAjaWYgRU5BQkxF
KFhTTFQpCkBAIC01MCw2ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgY2hlY2tOb3RpZnkoKTsKICAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cmluZyBtX3NoZWV0OwogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNWRjMDQ3NDAyY2IzZDc0OGVkOTczNDc5ZTY0MjI4
NzU5Mzc4ODkyZC4uMjA1YWU4YzA0ZjFmNDdhOTliY2M4MjMwM2M1NGI3ZTI3Y2U3M2UxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgpAQCAtNzE0LDYgKzcxNSwxNyBAQCBNZW1vcnlD
YWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygpCiAgICAgcmV0dXJu
IHN0YXRzOwogfQogCit2b2lkIE1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxNZW1vcnlDYWNoZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1f
cmVzb3VyY2VzKTsKKyAgICBDYWNoZWRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZSA9IG1f
cmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsraSkgeworICAgICAgICBpbmZv
LmFkZFN0cmluZyhpLT5maXJzdCk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KGktPnNlY29uZCk7CisgICAgfQorfQorCiB2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChi
b29sIGRpc2FibGVkKQogewogICAgIG1fZGlzYWJsZWQgPSBkaXNhYmxlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggNmY5ODMyNjYyMjgyMjRhMzk2MDM1
MjQ0NDI0ODM0YjU0MzZiYzcxMS4uNWEyZjk0OTVlODE1OGZmY2ZjYjA5MTA3MDgzNzNkNzE3MDFm
NzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTM5
LDYgKzM5LDcgQEAgY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENhY2hlZFJlc291
cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBLVVJMOworY2xhc3MgTWVt
b3J5T2JqZWN0SW5mbzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2g7CkBAIC0xNjgsNiArMTY5LDgg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxpdmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9saXZl
U2l6ZTsgfQogICAgIHVuc2lnbmVkIGRlYWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkU2l6
ZTsgfQogCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgTWVtb3J5Q2FjaGUoKTsKICAgICB+TWVtb3J5Q2FjaGUoKTsg
Ly8gTm90IGltcGxlbWVudGVkIHRvIG1ha2Ugc3VyZSBub2JvZHkgYWNjaWRlbnRhbGx5IGNhbGxz
IGRlbGV0ZSAtLSBXZWJDb3JlIGRvZXMgbm90IGRlbGV0ZSBzaW5nbGV0b25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAppbmRleCA0NjhiOTJiMjUxMmI4YmY4Yjcw
NDVhMjc2MWYwODBkOTAwMDRkMzQxLi44MzQyMjQxZDRjYTAxOTljNTU3N2ZkNDFhNjQyMTNiZTdi
OWY4MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaApAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIAorCiAgICAgY2xhc3MgUHVyZ2VhYmxlQnVmZmVyIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUHVyZ2VhYmxlQnVmZmVyKTsKICAgICBwdWJsaWM6CkBAIC01MCw3ICs1
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3YXNQdXJnZWQoKSBjb25z
dDsKIAogICAgICAgICBib29sIG1ha2VQdXJnZWFibGUoYm9vbCBwdXJnZWFibGUpOwotICAgICAg
ICAKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFB1cmdlYWJsZUJ1ZmZlcihjaGFyKiBkYXRhLCBz
aXplX3QpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156392</attachid>
            <date>2012-08-03 08:56:33 -0700</date>
            <delta_ts>2012-08-03 10:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120803195612.patch</filename>
            <type>text/plain</type>
            <size>39837</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM2Zjc4MzA4ZDdlMTBi
OWMzNjYwYzUxZTQ2NTNkOTg1YzA1NDYxMS4uZTc3YTI0ZDY2MmYyZDE5YzI5ZDAwYWMyMWVkYmZh
ZjIyZWQ0NDBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0wMyAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgbWFyayB0aGUgbWVtb3J5IGNhY2hlIG9iamVjdHMgYXMgdmlzaXRlZC4KKyAg
ICAgICAgQXMgYSByZXN1bHQgTUkgY291bGQgY291bnQgdGhlIHNhbWUgb2JqZWN0cyBtdWx0aXBs
ZSB0aW1lcy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3QgdHJhdmVyc2VzIHRocm91Z2gg
TWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9NLgorICAgICAgICBBbHNvIG5v
dCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNvdW50ZWQuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xh
c3NJbmZvOjphZGRJbnN0cnVtZW50ZWRIYXNoTWFwKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRDU1NTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAoQ2FjaGVk
Rm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENh
Y2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSYXdSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgor
ICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFNjcmlwdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDgtMDMgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2poYnVpbGRdIFN3aXRj
aCB0byBHU3RyZWFtZXIgMC4xMSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzNj
ZDcxN2ZjNzhiNmJkMWQ3NWE3MWJkODkwYjJhZDFmNTA3NTc2My4uOWUxMjE4M2NiZjIwMzYyY2I0
ZDRhYmIyYzI3Y2QyZjI5OGZhODk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MDk1
LDYgKzYwOTUsOCBAQCB2b2lkIERvY3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fc3R5bGVSZXNvbHZlcik7CiAgICAgaW5mby52aXNpdEJhc2VDbGFzczxDb250YWlu
ZXJOb2RlPih0aGlzKTsKICAgICBpbmZvLmFkZFZlY3RvcihtX2N1c3RvbUZvbnRzKTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2ZyYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX2NhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBpbmZvLmFkZFN0cmluZyht
X2RvY3VtZW50VVJJKTsKICAgICBpbmZvLmFkZFN0cmluZyhtX2Jhc2VUYXJnZXQpOwogICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZWxlbVNoZWV0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCBkNDZlNWUxMDQ3NjU3OTNhNTNkMjczOTUy
NWNhYWExNTIyMjIzNzdiLi5mMTY1MTRkYjJhOTY2YTJlZmIyODE1MDUyOTEwOWNlNjRiZWI4OWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0xLDMg
KzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNTIsNiArNTMsMTUgQEAgcHVibGljOgogICAgICAgICBDU1Ms
CiAgICAgICAgIEJpbmRpbmcsCiAgICAgICAgIExvYWRlciwKKyAgICAgICAgTWVtb3J5Q2FjaGVT
dHJ1Y3R1cmVzLAorICAgICAgICBDYWNoZWRSZXNvdXJjZSwKKyAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VDU1MsCisgICAgICAgIENhY2hlZFJlc291cmNlRm9udCwKKyAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VJbWFnZSwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTY3JpcHQsCisgICAgICAgIENhY2hlZFJl
c291cmNlU1ZHLAorICAgICAgICBDYWNoZWRSZXNvdXJjZVNoYWRlciwKKyAgICAgICAgQ2FjaGVk
UmVzb3VyY2VYU0xULAogICAgICAgICBMYXN0VHlwZUVudHJ5CiAgICAgfTsKIApAQCAtOTUsNiAr
MTA1LDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgdCwgT2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsg
T3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50ZWRPYmplY3QodGhpcywgdCwgb3duZXJPYmpl
Y3RUeXBlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFk
ZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBj
b250ZW50T25seSA9IGZhbHNlKTsKKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlw
ZT4gdm9pZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBj
b250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvblR5
cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYs
IE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFz
aFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtMTgx
LDYgKzE5Myw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBhZGRN
ZW1iZXIoY29uc3QgTSYgbWVtYmVyKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmpl
Y3QobWVtYmVyLCBtX29iamVjdFR5cGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFz
aE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVt
b3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50
ZWRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZEluc3RydW1lbnRlZEhhc2hNYXAobWFwLCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaFNldChjb25z
dCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0
KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
U2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBz
ZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24o
c2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3Rv
clR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3Rv
cikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbih2
ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KQEAgLTI4Myw2ICsyOTcsMTQgQEAgdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hN
YXAsIE9iamVjdFR5cGUgb3cKICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBj
YWxjdWxhdGVDb250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEhhc2hNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIGhhc2hNYXAsIE9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5KQoreworICAgIGNvdW50T2JqZWN0
U2l6ZShvd25lck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoaGFzaE1hcCwgY29u
dGVudE9ubHkpKTsKKyAgICBmb3IgKHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRv
ciBpID0gaGFzaE1hcC5iZWdpbigpOyBpICE9IGhhc2hNYXAuZW5kKCk7ICsraSkKKyAgICAgICAg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFNldFR5cGU+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA5YzI4YTAzYjdlMzg1ZjY3
MTE4YzNkOTMxNGI0MjIyNjFiNWVjODgzLi5lYTUyNTRhYWI1OWUzMjRiYWNiYTk3NzdiNjZkZjM4
MGEyNWI0YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAKQEAgLTgxLDE0ICs4MSwyMCBAQCBzdGF0aWMgY29uc3QgY2hhciBqc0V4
dGVybmFsU3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRpYyBjb25zdCBjaGFy
IGluc3BlY3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGlu
c3BlY3RvckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFy
IGluc3BlY3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBj
b25zdCBjaGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0IGNo
YXIgcHJvY2Vzc1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CiAKLXN0
YXRpYyBjb25zdCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdlcyI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENzc1N0eWxlU2hlZXRz
IjsKLXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNoZWRTY3JpcHRzIjsK
LXN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5
bGVTaGVldHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250
cyI7CitzdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9yeUNhY2hlIjsKK3N0
YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1lbW9yeUNhY2hlU3Ry
dWN0dXJlcyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtdID0gIkNhY2hlZFJl
c291cmNlIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1hZ2VbXSA9ICJDYWNo
ZWRJbWFnZXMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VDU1NbXSA9ICJDYWNo
ZWRDc3NTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNjcmlw
dFtdID0gIkNhY2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VY
U0xbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRS
ZXNvdXJjZUZvbnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRS
ZXNvdXJjZVNWR1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNh
Y2hlZFJlc291cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CitzdGF0aWMgY29uc3QgY2hh
ciBjYWNoZWRSZXNvdXJjZVhTTFRbXSA9ICJDYWNoZWRTaGFkZXJzWFNMVCI7CisKIHN0YXRpYyBj
b25zdCBjaGFyIHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNv
bnN0IGNoYXIgcmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOwog
CkBAIC00NjksMTIgKzQ3NSw0MCBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFByb2ZpbGVyOjpj
b2xsZWN0QmluZGluZ01lbW9yeUluZm8oJm1fZG9tTWVtb3J5VXNhZ2UpOwogICAgIH0KIAotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3Rv
ckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQorICAgIHZvaWQgdmlzaXRNZW1vcnlDYWNoZSgp
CiAgICAgewotICAgICAgICBpbnNwZWN0b3JEYXRhLT5hZGRDb21wb25lbnQoTWVtb3J5QmxvY2tO
YW1lOjppbnNwZWN0b3JET01EYXRhLCBtX2RvbU1lbW9yeVVzYWdlLnNlbGZTaXplKCkpOworICAg
ICAgICBtX2RvbU1lbW9yeVVzYWdlLmFkZFJvb3RPYmplY3QobWVtb3J5Q2FjaGUoKSk7CisgICAg
fQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JN
ZW1vcnlDYWNoZSgpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsK
KworICAgICAgICBDT01QSUxFX0FTU0VSVChNZW1vcnlJbnN0cnVtZW50YXRpb246Okxhc3RUeXBl
RW50cnkgPT0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgKyAxLCBv
YmplY3RfdHlwZV9lbnVtX3dhc19jaGFuZ2VkX3BsZWFzZV9maXhfdGhlX2ltcGxlbWVudGF0aW9u
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2Fj
aGVTdHJ1Y3R1cmVzOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyAr
K2kpCisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUo
c3RhdGljX2Nhc3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7CisKKyAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBj
aGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0
ZSgpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1v
cnlVc2FnZS50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVj
dHVyZXMpLCBNZW1vcnlCbG9ja05hbWU6Om1lbW9yeUNhY2hlU3RydWN0dXJlcyk7CisgICAgICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFs
U2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVu
LmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNhY2hlZFJlc291cmNlQ1NTKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUNTUyk7
CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVz
YWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCks
IE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VGb250KTsKKyAgICAgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSksIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVu
LmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNhY2hlZFJlc291cmNlU2NyaXB0KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNj
cmlwdCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1l
bW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNl
U1ZHKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNWRyk7CisgICAgICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyKSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRSZXNvdXJjZVNoYWRlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3Vy
Y2VYU0xUKTsKKworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpt
ZW1vcnlDYWNoZSk7CisgICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6ZSk7CisgICAgICAg
IGJsb2NrLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4g
YmxvY2sucmVsZWFzZSgpOworICAgIH0KIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGJ1aWxkT2JqZWN0Rm9yRE9NKCkgY29uc3QKKyAgICB7CiAgICAgICAgIHNpemVfdCB0
b3RhbFNpemUgPSAwOwotICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPdGhlcjsgaSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVFbnRyeTsgKytpKQor
ICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlcjsgaSA8IE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOyArK2kpCiAgICAgICAg
ICAgICB0b3RhbFNpemUgKz0gbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoc3RhdGljX2Nhc3Q8
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7CiAKICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9
IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwpAQCAt
NDkwLDYgKzUyNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkb20ucmVsZWFzZSgpOwog
ICAgIH0KIAorICAgIHZvaWQgZHVtcFN0YXRpc3RpY3MoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiogY2hpbGRyZW4sIEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0
b3JEYXRhKQorICAgIHsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JN
ZW1vcnlDYWNoZSgpKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JE
T00oKSk7CisgICAgICAgIGluc3BlY3RvckRhdGEtPmFkZENvbXBvbmVudChNZW1vcnlCbG9ja05h
bWU6Omluc3BlY3RvckRPTURhdGEsIG1fZG9tTWVtb3J5VXNhZ2Uuc2VsZlNpemUoKSk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBNZW1vcnlJbnN0cnVtZW50YXRp
b25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7CkBAIC00OTcsOSArNTM4LDEwIEBAIHByaXZhdGU6CiAK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZv
KFBhZ2UqIHBhZ2UsIFZpc2l0ZWRPYmplY3RzJiB2aXNpdGVkT2JqZWN0cywgSW5zcGVjdG9yRGF0
YUNvdW50ZXIqIGluc3BlY3RvckRhdGEpCitzdGF0aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8o
UGFnZSogcGFnZSwgVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzLCBUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50
ZXIqIGluc3BlY3RvckRhdGEpCiB7CiAgICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJh
dG9yKHBhZ2UsIHZpc2l0ZWRPYmplY3RzKTsKKwogICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5v
ZGVXcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CiAKICAgICAvLyBNYWtlIHN1cmUgYWxsIGRv
Y3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgpAQCAt
NTExLDggKzU1Myw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBk
b21UcmVlSW5mbyhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYKICAgICB9CiAKICAgICBkb21U
cmVlc0l0ZXJhdG9yLnZpc2l0QmluZGluZ3MoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0
TWVtb3J5Q2FjaGUoKTsKIAotICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0
aWNzKGluc3BlY3RvckRhdGEpOworICAgIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3Mo
Y2hpbGRyZW4sIGluc3BlY3RvckRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNv
bXBvbmVudHNJbmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9y
eUJsb2NrPiA+IGNoaWxkcmVuKQpAQCAtNTI2LDI3ICs1NjksNiBAQCBzdGF0aWMgdm9pZCBhZGRQ
bGF0Zm9ybUNvbXBvbmVudHNJbmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvck1lbQogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IG1lbW9yeUNhY2hlSW5mbygpCi17Ci0gICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3Rh
dHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7Ci0gICAgaW50IHRvdGFsU2l6ZSA9
IHN0YXRzLmltYWdlcy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuY3NzU3R5bGVT
aGVldHMuc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzLnNjcmlwdHMuc2l6ZSArCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUgKwotICAgICAgICAg
ICAgICAgICAgICBzdGF0cy5mb250cy5zaXplOwotICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gbWVtb3J5Q2FjaGVTdGF0cyA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5z
ZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGUpOwotICAgIG1lbW9yeUNhY2hlU3Rh
dHMtPnNldFNpemUodG90YWxTaXplKTsKLQotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGls
ZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1h
Z2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5
bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0g
ICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwg
TWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1l
OjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4u
Z2V0KCksIHN0YXRzLmZvbnRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOwot
ICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKLSAgICBy
ZXR1cm4gbWVtb3J5Q2FjaGVTdGF0cy5yZWxlYXNlKCk7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBqc0V4dGVybmFsUmVzb3VyY2VzSW5mbyhWaXNpdGVkT2Jq
ZWN0cyYgdmlzaXRlZE9iamVjdHMpCiB7CiAgICAgRXh0ZXJuYWxSZXNvdXJjZVZpc2l0b3Igdmlz
aXRvcih2aXNpdGVkT2JqZWN0cyk7CkBAIC01ODUsMTAgKzYwNyw5IEBAIHZvaWQgSW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zCiAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVt
b3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1f
cGFnZSkpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwotICAgIGNoaWxkcmVuLT5h
ZGRJdGVtKGRvbVRyZWVJbmZvKG1fcGFnZSwgdmlzaXRlZE9iamVjdHMsICZpbnNwZWN0b3JEYXRh
KSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0
ZW0oanNFeHRlcm5hbFJlc291cmNlc0luZm8odmlzaXRlZE9iamVjdHMpKTsKKyAgICBjb2xsZWN0
RG9tVHJlZUluZm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgY2hpbGRyZW4uZ2V0KCksICZpbnNw
ZWN0b3JEYXRhKTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJl
bi0+YWRkSXRlbShpbnNwZWN0b3JEYXRhLmR1bXBTdGF0aXN0aWNzKCkpOwogICAgIGNoaWxkcmVu
LT5hZGRJdGVtKGR1bXBET01TdG9yYWdlQ2FjaGUobV9kb21TdG9yYWdlQWdlbnQtPm1lbW9yeUJ5
dGVzVXNlZEJ5U3RvcmFnZUNhY2hlKCkpKTsKICAgICBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZv
KGNoaWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAppbmRleCBlMWZiMDJjZmFjZmZmMDJlYTIxOGMyMmJmYTg2ODc5NDQ4
MWFmZDE1Li42MTg5YjUzMDFkOTU0NDFlOTc0NTU2NjFkOGQ4YjAyMmE4NDRlMDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgog
I2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNs
dWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCkBAIC0xOTIsNCArMTkzLDE0IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHNoCiAg
ICAgc2V0RGVjb2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVzdGltYXRlZFNpemVJ
bkJ5dGVzKCkpOwogfQogCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvPENhY2hlZENTU1N0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgaW5m
by52aXNpdEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV9kZWNvZGVyKTsKKyAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpCisgICAgICAg
IGluZm8uYWRkUmF3QnVmZmVyKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLmdldCgpLCBtX3BhcnNl
ZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSk7CisgICAgaW5mby5hZGRT
dHJpbmcobV9kZWNvZGVkU2hlZXRUZXh0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggOWFkNmYxNGJhMjM2OTg3
OGU0ZTYxOGUyNmYyODc1ZWRlZjI1YjllOC4uNDM0YmE0NTYxN2JhMjdmNDA0ODEyZjg3YjIzODE1
NzhhZDI5NDU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKKyAgICBjbGFzcyBNZW1vcnlPYmplY3RJ
bmZvOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHlsZVNoZWV0Q29udGVu
dHM7CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKQEAgLTU4LDYgKzU5LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgICAg
ICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRz
Pik7CiAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBwcml2YXRlOgogICAgICAgICBib29s
IGNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBl
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBj
b25zdCB7IHJldHVybiBQdXJnZUxhc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCBmZGRkNzlkNDdlMDg1OTE1OWRjOTU1MDEyODQ5MzQ0ZmMxMDBh
YWI5Li4xZTk2Y2M3YzQwMTlkN2U3NWMzZDRmYzFiMmRhNjVmMzQ5ZTlmZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1E
YXRhLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjA2LDQgKzIwNywx
NiBAQCB2b2lkIENhY2hlZEZvbnQ6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVz
KQogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q2FjaGVkRm9udD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCk7CisgICAgaW5mby52aXNp
dEJhc2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisjaWYgRU5BQkxFKFNWR19GT05UUykK
KyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2V4dGVybmFsU1ZHRG9jdW1lbnQpOwor
I2VuZGlmCisjaWZkZWYgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQorICAgIGluZm8u
YWRkTWVtYmVyKG1fZm9udERhdGEpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDNjYWZjMWU1MDM4ODQxOWI2YTEzNzk2NzdlY2Uy
YmUyZjZiM2JhMzcuLmNmZjM0MmEyNWMwMDM2ODk0ODIwY2Q1N2FlZThkYmY1YTk2ZDEwYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAgICAgU1ZHRm9udEVsZW1lbnQqIGdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEqIG1fZm9udERhdGE7CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzMTM0
NzVjZTFiZjZkZTMwOWIxOWEzZTFhODVhOWNhMjM1NTA2YWQzLi4xODMwMDgxODgwMWMwZWI3NWI2
ZjVkOGMwOTJhODc3ZTE4Y2FjZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTQ2Nyw0ICs0NjcsMTQgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
bm90aWZ5T2JzZXJ2ZXJzKCZyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkSW1hZ2U+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUltYWdlKTsKKyAgICBpbmZv
LnZpc2l0QmFzZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX2ltYWdlKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGluZm8uYWRkTWVtYmVyKG1fc3ZnSW1h
Z2VDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBiOTkyMTUxNzM1OGJjMTFhM2Ji
MmNkYzJlMzRhYjA2NTNkNGMzNmE5Li5lMzRjMTY0MmI0OTExNjdhMjY0NWUwMGI5NzUzYThlODM1
YWE5NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
OTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2Vk
KGNvbnN0IEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1h
Z2UqLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIElt
YWdlKiBsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IGIwYTcwMzMwNGI1OTM3YjY2YzAxNDQwMzJkMzNkY2IwMWU2NjAyM2YuLjllNTUy
N2I0NGM5Zjk4MjAxMDgzZTQ5M2RkYTIyNTQ1NzJhNjJhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KQEAgLTE1OSw0ICsxNjAsMTEgQEAgYm9vbCBDYWNoZWRSYXdSZXNvdXJjZTo6Y2Fu
UmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNs
YXNzSW5mbzxDYWNoZWRSYXdSZXNvdXJjZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBpbmZvLnZpc2l0QmFz
ZUNsYXNzPENhY2hlZFJlc291cmNlPih0aGlzKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CmluZGV4IGUyOTZhYjg3ZWFiNTUyOTc0Nzg4YThhNjI5ODlkYzQ5OGY2NTY2ODQuLmMzNDliODY2
YTM3NjZhOWEyNWMyYjgwZDc1MGU0MzkzYTUxZjUzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZUNhbGxiYWNrOwogY2xhc3Mg
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ7CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogCiBjbGFz
cyBDYWNoZWRSYXdSZXNvdXJjZSA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CkBA
IC00NCw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKaW5kZXggNDFjZDYwMTg5NWFiZDIyMmQ4MDJlZjIxNjNlOTQ1ZGY1MjNiZmI5Zi4uNDk2ZTQz
MDI1ZDM1ZjBhZjM0YTE0NDU1Njg5YzAwZDY1ZTM2ZTA4OCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJQdXJnZWFibGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtODAwLDQgKzgwMSwyNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjp0aW1lckZpcmVkKFRp
bWVyPENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1fcmVzb3VyY2UtPmRpZEFkZENsaWVudChtX2Ns
aWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENhY2hlZFJlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVz
b3VyY2VSZXF1ZXN0KTsKKyAgICBpbmZvLmFkZEhhc2hTZXQobV9jbGllbnRzKTsKKyAgICBpbmZv
LmFkZFN0cmluZyhtX2FjY2VwdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9s
b2FkZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzcG9uc2UpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fZGF0YSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jYWNoZWRNZXRh
ZGF0YS5nZXQoKSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9uZXh0SW5BbGxS
ZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3ByZXZJbkFs
bFJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbmV4dElu
TGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJl
dkluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
b3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fcHJveHlSZXNvdXJjZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRIYXNoU2V0KG1f
aGFuZGxlc1RvUmV2YWxpZGF0ZSk7CisKKyAgICBpZiAobV9wdXJnZWFibGVEYXRhICYmICFtX3B1
cmdlYWJsZURhdGEtPndhc1B1cmdlZCgpKQorICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihtX3B1
cmdlYWJsZURhdGEuZ2V0KCksIG1fcHVyZ2VhYmxlRGF0YS0+c2l6ZSgpKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBmZTNlMWZj
NjNjN2IzZWQyNTNhYWJhODJlOTE3NDQ1ZTU1NmVlODM4Li40OTNiMTY3YzUxMTRhN2I5Yzk2NTI1
Y2MzMzVhNTM3ZmQ4ZGVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRs
ZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SW5zcGVjdG9yUmVzb3VyY2U7CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgUHVyZ2Vh
YmxlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
cjsKQEAgLTI0OSw2ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkRmluaXNoVGlt
ZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5pc2hUaW1lID0gZmluaXNoVGltZTsgfQog
ICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEZpbmlzaFRp
bWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
Y3BwCmluZGV4IDg3MTI5MmM2MjM3ZmVjMDMyMDM1YTYyOWQ3ZTgyYjc1NThkNGY3ZTcuLmM0ZTdk
NDQzMWI1Y2E5MjFmZjYxYmU3ZGUzOWMwYjY5NDMyM2Y1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcApAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6c2V0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSAKQEAgLTM5LDQgKzQxLDExIEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlOjpzZXRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgICAgIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRoaXMpOwogfQogCit2b2lkIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fcmVzb3VyY2UpOworfQorCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKaW5kZXggOTVjZDBmZjdmOGFlNGIzNDA1
YjkwOTg1ZmQ3NjY5MzhhOTM5MDI2My4uMTVkNDRjNzU3MWMxMWI4NDBmOWQzZTE3MTdkMTcxOGM3
ZmE1ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOworCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIH5DYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2Uo
KSB7IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT51bnJlZ2lzdGVySGFuZGxlKHRoaXMpOyB9
CkBAIC00MSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBD
YWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjoqVW5zcGVjaWZpZWRCb29s
VHlwZTsKICAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2UgPyAmQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjptX3Jlc291cmNlIDog
MDsgfQogCisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2UoKSA6IG1fcmVzb3VyY2UoMCkge30KICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNl
KENhY2hlZFJlc291cmNlKiByZXMpIHsgbV9yZXNvdXJjZSA9IHJlczsgaWYgKG1fcmVzb3VyY2Up
IG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5YTg4NzI0
YTE1MGQxYWU2ZTRhODUwYTExOGE5YzRmMzhlZWU5ZTFmLi42Y2MwMjc2NjRlMzBjYTE4M2IyMzFk
YmQ2MDBmNjExMTY4ZWIzMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3Nyw1ICs4NzcsMTQgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMoKQogICAgICAgICBwcmludGYo
IklNQUdFUzogICVkICglZCBoaXRzLCBoaXQgcmF0ZSAlZCUlKVxuIiwgaW1hZ2VzLCBpbWFnZXMg
LSBpbWFnZU1pc3NlcywgKGltYWdlcyAtIGltYWdlTWlzc2VzKSAqIDEwMCAvIGltYWdlcyk7CiB9
CiAjZW5kaWYKLSAgICAKKwordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMb2FkZXIpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkSGFzaE1hcChtX2RvY3VtZW50UmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZEhhc2hT
ZXQobV92YWxpZGF0ZWRVUkxzKTsKKyAgICBpbmZvLmFkZExpc3RIYXNoU2V0KCptX3ByZWxvYWRz
LmdldCgpKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdQcmVsb2Fkcyk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKaW5kZXggNWVlYjM4NzFmMDNiNDBmODYwOTgwMDE1NDY4MWM1YjA1NmQzYWNiNS4uM2YxYzIz
M2IwMDhkZjg0MDFhOGMxYWJhMTE4MTc1ZGE3ZDgwZmI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTUyLDYgKzUyLDcg
QEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xh
c3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiAKIC8vIFRoZSBDYWNoZWRSZXNvdXJj
ZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxlc2hlZXRz
IGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyIHsKQEAg
LTExOSw2ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludFByZWxvYWRTdGF0cygpOwog
ICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYsIGJv
b2wgZm9yUHJlbG9hZCA9IGZhbHNlKTsKICAgICAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJp
b3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291
cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAKaW5kZXggZjAzZmFkYjU3YThhZDIzZjZmMzAxODRmMWFhMDAxMjQ1ZTgwN2IzOS4uZmQ2N2Q3
NzE5YzgyN2ZjZTRjZjEyOTM2ZjZjNTlkNWVkMjc0NDk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC03MSw2ICs3MSwxNCBA
QCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZAogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKK3ZvaWQg
Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNWR0Rv
Y3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q2FjaGVkUmVzb3VyY2VTVkcpOworICAgIGluZm8udmlzaXRCYXNlQ2xhc3M8Q2FjaGVkUmVz
b3VyY2U+KHRoaXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9jdW1lbnQp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGIw
NWVmNjdkMWM0MjcxYWEwNDhkY2EyYzRhMmE2NTk3NjUxNDA1MDAuLjU0ZDVhODg4MTJmNWY2Zjcy
Y2Y1YzUxMzA0MTM0NmZhZmFiZTk2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
IE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IGEyZGE3NDQ4OWJk
NWU1NTVlMzcxOGJiY2NiM2E3YjgxMjkxZmRmYjAuLjI3ZWU1MjA3NWEyYjU2ODdhZjNjMGNlYjU2
ZDg3YjhhY2I5ZjU1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEyNiw0ICsxMjcsMTUgQEAgdm9pZCBDYWNoZWRT
Y3JpcHQ6OnNvdXJjZVByb3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpCiB9CiAjZW5k
aWYKIAordm9pZCBDYWNoZWRTY3JpcHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hl
ZFNjcmlwdD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNhY2hlZFJlc291cmNlU2NyaXB0KTsKKyAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPENhY2hl
ZFJlc291cmNlPih0aGlzKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX3NjcmlwdCk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyNpZiBVU0UoSlNDKQorICAgIGluZm8uYWRkTWVtYmVy
KG1fc291cmNlUHJvdmlkZXJDYWNoZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDlh
NGYzOGFkMGIzZjdiZmUzMWU3NDc4NzdkNGNlZjU2OTQyNTgyYmIuLjNkZjZiZTkzODI0M2I4NWFk
NmY5OTRmNmI3Yzg5NGRkZDMwNmY3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICBjbGFz
cyBNZW1vcnlPYmplY3RJbmZvOwogICAgIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKICAg
ICBjbGFzcyBDYWNoZWRTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTcsNiAr
NTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6U291cmNlUHJvdmlkZXJD
YWNoZSogc291cmNlUHJvdmlkZXJDYWNoZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNvdXJjZVBy
b3ZpZGVyQ2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpOwogI2VuZGlmCisKKyAgICAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVS
UklERTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJn
ZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VMYXN0OyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKaW5kZXggYjhkN2M1ZjlhODg5NTA5ZTQ4
OWQ4M2RlMjE1MDc4M2I2ODgwYzAzZC4uZDBhNmE3OTM2MjkxNGM3YWQyZmQ2Mjk0ODdjZWNiMTdl
NDFjNDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAKICNpbmNsdWRl
ICJDYWNoZWRTaGFkZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNjcsNiArNjgsMTQgQEAg
dm9pZCBDYWNoZWRTaGFkZXI6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIENhY2hlZFJlc291cmNlOjpkYXRhKGRhdGEsIGFsbERh
dGFSZWNlaXZlZCk7CiB9CiAKK3ZvaWQgQ2FjaGVkU2hhZGVyOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNs
YXNzSW5mbzxDYWNoZWRTaGFkZXI+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNoYWRlcik7CisgICAgaW5mby52aXNpdEJh
c2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNv
ZGVyKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX3NoYWRlclN0cmluZyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaAppbmRleCBkMWRlMTRkNzc1ZjM4MGVl
NWIzYTNlOTM1NGJhMGY3ZTk5MDg2ZDc0Li40Mjg2NzcwYWRjZjgxMWFkODRlMmU0YTFkMDNiOTk1
MWM5NTNiYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5
T2JqZWN0SW5mbzsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKIGNsYXNzIENhY2hlZFNo
YWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC00Niw2ICs0Nyw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZygpOwogICAgIHZvaWQgZGF0YShQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJS
SURFOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CiAgICAgU3RyaW5nIG1fc2hhZGVyU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDMzNmZjZTRhYzYwZmYz
MzgzNzQwNWU4YmViZTE3MWRkODRiZmNhMjIuLmYxOWMzZDIxMWNmZmU2Nzg3NGVkYTY1Y2JhNjhm
MTdiNWJjMDhkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVu
dC5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC05Niw2ICs5NywxNCBAQCB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVzKQogICAgIGNoZWNrTm90aWZ5KCk7
CiB9CiAKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q2FjaGVkWFNMU3R5bGVTaGVldD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCk7CisgICAgaW5mby52aXNpdEJh
c2VDbGFzczxDYWNoZWRSZXNvdXJjZT4odGhpcyk7CisgICAgaW5mby5hZGRTdHJpbmcobV9zaGVl
dCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30KKwogI2VuZGlmCiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmlu
ZGV4IGI4ZjcyODNkMzY0OTI5ZjI4NTZlYTU4YTI3ZTA3N2Q4NDhmMjhhNmIuLjJhYThkZmEyNTEz
MmY4MjI2NzRlNjgxMmI2MDRiMWNlNzM3YWQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtMzIsNiArMzIsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAg
Y2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
CiAjaWYgRU5BQkxFKFhTTFQpCkBAIC01MCw2ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgY2hlY2tOb3RpZnkoKTsKICAgICAgICAgCisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Qg
T1ZFUlJJREU7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cmluZyBtX3NoZWV0OwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNWRjMDQ3NDAyY2IzZDc0OGVk
OTczNDc5ZTY0MjI4NzU5Mzc4ODkyZC4uYzEzZTYxNWMxZTEzNzRmNzhiYzExODQxNzczODQyNTA4
ZmI4N2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgpAQCAtNzE0LDYgKzcxNSwx
OSBAQCBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygp
CiAgICAgcmV0dXJuIHN0YXRzOwogfQogCit2b2lkIE1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1l
bW9yeUNsYXNzSW5mbzxNZW1vcnlDYWNoZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyk7CisgICAgaW5mby5h
ZGRIYXNoTWFwKG1fcmVzb3VyY2VzKTsKKyAgICBDYWNoZWRSZXNvdXJjZU1hcDo6Y29uc3RfaXRl
cmF0b3IgZSA9IG1fcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6
OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsraSkgewor
ICAgICAgICBpbmZvLmFkZFN0cmluZyhpLT5maXJzdCk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKGktPnNlY29uZCk7CisgICAgfQorICAgIGluZm8uYWRkVmVjdG9yKG1fYWxs
UmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2xpdmVEZWNvZGVkUmVzb3VyY2VzKTsK
K30KKwogdm9pZCBNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAg
ICBtX2Rpc2FibGVkID0gZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oCmluZGV4IDZmOTgzMjY2MjI4MjI0YTM5NjAzNTI0NDQyNDgzNGI1NDM2YmM3MTEu
LjVhMmY5NDk1ZTgxNThmZmNmY2IwOTEwNzA4MzczZDcxNzAxZjczYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENh
Y2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3Qg
U2VjdXJpdHlPcmlnaW5IYXNoOwpAQCAtMTY4LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBsaXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KICAgICB1bnNpZ25l
ZCBkZWFkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAorICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAg
IE1lbW9yeUNhY2hlKCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0
byBtYWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBk
b2VzIG5vdCBkZWxldGUgc2luZ2xldG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2Vh
YmxlQnVmZmVyLmgKaW5kZXggNDY4YjkyYjI1MTJiOGJmOGI3MDQ1YTI3NjFmMDgwZDkwMDA0ZDM0
MS4uODM0MjI0MWQ0Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNs
YXNzIFB1cmdlYWJsZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1cmdl
YWJsZUJ1ZmZlcik7CiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgd2FzUHVyZ2VkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBt
YWtlUHVyZ2VhYmxlKGJvb2wgcHVyZ2VhYmxlKTsKLSAgICAgICAgCisKICAgICBwcml2YXRlOgog
ICAgICAgICBQdXJnZWFibGVCdWZmZXIoY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156411</attachid>
            <date>2012-08-03 10:30:09 -0700</date>
            <delta_ts>2012-08-06 01:12:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120803212948.patch</filename>
            <type>text/plain</type>
            <size>39832</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QzYWM2YzYyNTA1MWI4
MzQzOTNmZjEwMTUyMDk1YzM4ODhhZTM3Mi4uYjVkMGQxZGFjNzRmMGJmYzFkMzM4YjQwMjU5MzA3
MDgzYjkzMWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0wMyAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRpb246IGNvdmVyIE1lbW9yeUNhY2hlIHdp
dGggTWVtb3J5SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTczNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9sZCB2ZXJzaW9uIG9mIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGRvZXNuJ3QgbWFyayB0aGUgbWVtb3J5IGNhY2hlIG9iamVjdHMgYXMgdmlzaXRlZC4KKyAg
ICAgICAgQXMgYSByZXN1bHQgTUkgY291bGQgY291bnQgdGhlIHNhbWUgb2JqZWN0cyBtdWx0aXBs
ZSB0aW1lcy4KKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9uIGp1c3QgdHJhdmVyc2VzIHRocm91Z2gg
TWVtb3J5Q2FjaGUgdGhlIHNhbWUgd2F5IGFzIHRocm91Z2ggRE9NLgorICAgICAgICBBbHNvIG5v
dCBhbGwgdGhlIGNhY2hlZCByZXNvdXJjZSB0eXBlcyB3ZXJlIGNvdW50ZWQuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xh
c3NJbmZvOjphZGRJbnN0cnVtZW50ZWRIYXNoTWFwKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5m
byk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRDU1NTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAoQ2FjaGVk
Rm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENh
Y2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSYXdSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgor
ICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFNjcmlwdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKIDIwMTItMDgtMDMgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gUmVtb3ZlIHY4U3RyaW5nVG9B
dG9taWNXZWJDb3JlU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGJjNWYwNDFk
OGY1MTE4YzEyNjUwYzYyZjg1ODUzOTUwOTFmZTA5OTkuLmM1YmFhNTdjZWQwNGYzMDcyNzBkZjRl
NmQxN2JjNzQ4ZWJkN2Q1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA5NSw2ICs2
MDk1LDggQEAgdm9pZCBEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX3N0eWxlUmVzb2x2ZXIpOwogICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkVmVjdG9yKG1fY3VzdG9tRm9udHMpOwor
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZnJhbWUpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgIGluZm8uYWRkU3Ry
aW5nKG1fZG9jdW1lbnRVUkkpOwogICAgIGluZm8uYWRkU3RyaW5nKG1fYmFzZVRhcmdldCk7CiAg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbGVtU2hlZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGFlNTc0OGRjMWEwMmEzNzkxMTcw
NjZhNmJjZGZjNmZmMjc4ODNiNGQuLmI5ZTA3YTdmMjkwYTMwZTZkNTBjNGU1ZmUxMTczMTEzYzZi
MDc0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01Miw2ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgICAg
IENTUywKICAgICAgICAgQmluZGluZywKICAgICAgICAgTG9hZGVyLAorICAgICAgICBNZW1vcnlD
YWNoZVN0cnVjdHVyZXMsCisgICAgICAgIENhY2hlZFJlc291cmNlLAorICAgICAgICBDYWNoZWRS
ZXNvdXJjZUNTUywKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VGb250LAorICAgICAgICBDYWNoZWRS
ZXNvdXJjZUltYWdlLAorICAgICAgICBDYWNoZWRSZXNvdXJjZVNjcmlwdCwKKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VTVkcsCisgICAgICAgIENhY2hlZFJlc291cmNlU2hhZGVyLAorICAgICAgICBD
YWNoZWRSZXNvdXJjZVhTTFQsCiAgICAgICAgIExhc3RUeXBlRW50cnkKICAgICB9OwogCkBAIC05
NSw2ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFk
ZEluc3RydW1lbnRlZE9iamVjdChjb25zdCBUJiB0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlw
ZSkgeyBPd25pbmdUcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0LCBvd25l
ck9iamVjdFR5cGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZv
aWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVu
dE9ubHkgPSBmYWxzZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lk
IGFkZEluc3RydW1lbnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hT
ZXRUeXBlPiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBi
b29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25U
eXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNoU2V0KGNvbnN0IExp
c3RIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CkBA
IC0xNzksNiArMTkxLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNPiB2b2lk
IGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZE9iamVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiBtYXApIHsg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEhhc2hNYXAobWFwLCBtX29iamVjdFR5cGUsIHRy
dWUpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEluc3Ry
dW1lbnRlZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNoU2V0
KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEhh
c2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEhhc2hTZXRUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5
cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVj
dGlvbihzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYg
dmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0
aW9uKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQpAQCAtMjgxLDYgKzI5NSwxNCBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYg
aGFzaE1hcCwgT2JqZWN0VHlwZSBvdwogICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5
cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoaGFzaE1hcCwgY29udGVudE9ubHkpKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkSW5zdHJ1bWVudGVkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCwgT2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit7CisgICAgY291bnRP
YmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShoYXNoTWFw
LCBjb250ZW50T25seSkpOworICAgIGZvciAodHlwZW5hbWUgSGFzaE1hcFR5cGU6OmNvbnN0X2l0
ZXJhdG9yIGkgPSBoYXNoTWFwLmJlZ2luKCk7IGkgIT0gaGFzaE1hcC5lbmQoKTsgKytpKQorICAg
ICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4KIHZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjphZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBl
IG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDljMjhhMDNiN2Uz
ODVmNjcxMThjM2Q5MzE0YjQyMjI2MWI1ZWM4ODMuLmVhNTI1NGFhYjU5ZTMyNGJhY2JhOTc3N2I2
NmRmMzgwYTI1YjRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcApAQCAtODEsMTQgKzgxLDIwIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGpzRXh0ZXJuYWxTdHJpbmdzW10gPSAiSlNFeHRlcm5hbFN0cmluZ3MiOwogc3RhdGljIGNvbnN0
IGNoYXIgaW5zcGVjdG9yRGF0YVtdID0gIkluc3BlY3RvckRhdGEiOwogc3RhdGljIGNvbnN0IGNo
YXIgaW5zcGVjdG9yRE9NRGF0YVtdID0gIkluc3BlY3RvckRPTURhdGEiOwogc3RhdGljIGNvbnN0
IGNoYXIgaW5zcGVjdG9ySlNIZWFwRGF0YVtdID0gIkluc3BlY3RvckpTSGVhcERhdGEiOwotc3Rh
dGljIGNvbnN0IGNoYXIgbWVtb3J5Q2FjaGVbXSA9ICJNZW1vcnlDYWNoZSI7CiBzdGF0aWMgY29u
c3QgY2hhciBwcm9jZXNzUHJpdmF0ZU1lbW9yeVtdID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsK
IAotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkSW1hZ2VzW10gPSAiQ2FjaGVkSW1hZ2VzIjsKLXN0
YXRpYyBjb25zdCBjaGFyIGNhY2hlZENzc1N0eWxlU2hlZXRzW10gPSAiQ2FjaGVkQ3NzU3R5bGVT
aGVldHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkU2NyaXB0c1tdID0gIkNhY2hlZFNjcmlw
dHMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkWHNsU3R5bGVTaGVldHNbXSA9ICJDYWNoZWRY
c2xTdHlsZVNoZWV0cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRGb250c1tdID0gIkNhY2hl
ZEZvbnRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUi
Oworc3RhdGljIGNvbnN0IGNoYXIgbWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzW10gPSAiTWVtb3J5Q2Fj
aGVTdHJ1Y3R1cmVzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlW10gPSAiQ2Fj
aGVkUmVzb3VyY2UiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VJbWFnZVtdID0g
IkNhY2hlZEltYWdlcyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZUNTU1tdID0g
IkNhY2hlZENzc1N0eWxlU2hlZXRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNl
U2NyaXB0W10gPSAiQ2FjaGVkU2NyaXB0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNv
dXJjZVhTTFtdID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNh
Y2hlZFJlc291cmNlRm9udFtdID0gIkNhY2hlZEZvbnRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNh
Y2hlZFJlc291cmNlU1ZHW10gPSAiQ2FjaGVkU1ZHR3JhcGhpY3MiOworc3RhdGljIGNvbnN0IGNo
YXIgY2FjaGVkUmVzb3VyY2VTaGFkZXJbXSA9ICJDYWNoZWRTaGFkZXJzIjsKK3N0YXRpYyBjb25z
dCBjaGFyIGNhY2hlZFJlc291cmNlWFNMVFtdID0gIkNhY2hlZFNoYWRlcnNYU0xUIjsKKwogc3Rh
dGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVlVXNlZCI7CiBzdGF0
aWMgY29uc3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVuZGVyVHJlZUFsbG9jYXRl
ZCI7CiAKQEAgLTQ2OSwxMiArNDc1LDQwIEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0UHJvZmls
ZXI6OmNvbGxlY3RCaW5kaW5nTWVtb3J5SW5mbygmbV9kb21NZW1vcnlVc2FnZSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoSW5z
cGVjdG9yRGF0YUNvdW50ZXIqIGluc3BlY3RvckRhdGEpCisgICAgdm9pZCB2aXNpdE1lbW9yeUNh
Y2hlKCkKICAgICB7Ci0gICAgICAgIGluc3BlY3RvckRhdGEtPmFkZENvbXBvbmVudChNZW1vcnlC
bG9ja05hbWU6Omluc3BlY3RvckRPTURhdGEsIG1fZG9tTWVtb3J5VXNhZ2Uuc2VsZlNpemUoKSk7
CisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UuYWRkUm9vdE9iamVjdChtZW1vcnlDYWNoZSgpKTsK
KyAgICB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9iamVj
dEZvck1lbW9yeUNhY2hlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUg
PSAwOworCisgICAgICAgIENPTVBJTEVfQVNTRVJUKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFz
dFR5cGVFbnRyeSA9PSBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCAr
IDEsIG9iamVjdF90eXBlX2VudW1fd2FzX2NoYW5nZWRfcGxlYXNlX2ZpeF90aGVfaW1wbGVtZW50
YXRpb24pOworICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1v
cnlDYWNoZVN0cnVjdHVyZXM7IGkgPCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okxhc3RUeXBlRW50
cnk7ICsraSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBtX2RvbU1lbW9yeVVzYWdlLnRvdGFs
U2l6ZShzdGF0aWNfY2FzdDxNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpKTsK
KworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6
Y3JlYXRlKCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2Rv
bU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hl
U3RydWN0dXJlcyksIE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzKTsKKyAg
ICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2Uu
dG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZFJlc291cmNlKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q2FjaGVkUmVzb3VyY2VDU1MpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNl
Q1NTKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVt
b3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VG
b250KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUZvbnQpOworICAgICAgICBhZGRN
ZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUltYWdlKSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRSZXNvdXJjZUltYWdlKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q2FjaGVkUmVzb3VyY2VTY3JpcHQpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291
cmNlU2NyaXB0KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1f
ZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2VTVkcpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlU1ZHKTsKKyAgICAgICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxT
aXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIpLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZFJlc291cmNlU2hhZGVyKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VYU0xUKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRS
ZXNvdXJjZVhTTFQpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYmxv
Y2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05h
bWU6Om1lbW9yeUNhY2hlKTsKKyAgICAgICAgYmxvY2stPnNldFNpemUodG90YWxTaXplKTsKKyAg
ICAgICAgYmxvY2stPnNldENoaWxkcmVuKGNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
dHVybiBibG9jay5yZWxlYXNlKCk7CisgICAgfQogCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JET00oKSBjb25zdAorICAgIHsKICAgICAgICAgc2l6
ZV90IHRvdGFsU2l6ZSA9IDA7Ci0gICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50
YXRpb246Ok90aGVyOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyAr
K2kpCisgICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyOyBp
IDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXM7ICsraSkKICAg
ICAgICAgICAgIHRvdGFsU2l6ZSArPSBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShzdGF0aWNf
Y2FzdDxNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpKTsKIAogICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxk
cmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7
CkBAIC00OTAsNiArNTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGRvbS5yZWxlYXNl
KCk7CiAgICAgfQogCisgICAgdm9pZCBkdW1wU3RhdGlzdGljcyhUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGlu
c3BlY3RvckRhdGEpCisgICAgeworICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVj
dEZvck1lbW9yeUNhY2hlKCkpOworICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVj
dEZvckRPTSgpKTsKKyAgICAgICAgaW5zcGVjdG9yRGF0YS0+YWRkQ29tcG9uZW50KE1lbW9yeUJs
b2NrTmFtZTo6aW5zcGVjdG9yRE9NRGF0YSwgbV9kb21NZW1vcnlVc2FnZS5zZWxmU2l6ZSgpKTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgUGFnZSogbV9wYWdlOwogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgbV9kb21NZW1vcnlVc2FnZTsKQEAgLTQ5Nyw5ICs1MzgsMTAgQEAgcHJpdmF0
ZToKIAogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tVHJl
ZUluZm8oUGFnZSogcGFnZSwgVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzLCBJbnNwZWN0
b3JEYXRhQ291bnRlciogaW5zcGVjdG9yRGF0YSkKK3N0YXRpYyB2b2lkIGNvbGxlY3REb21UcmVl
SW5mbyhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMsIFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4qIGNoaWxkcmVuLCBJbnNwZWN0b3JEYXRh
Q291bnRlciogaW5zcGVjdG9yRGF0YSkKIHsKICAgICBET01UcmVlc0l0ZXJhdG9yIGRvbVRyZWVz
SXRlcmF0b3IocGFnZSwgdmlzaXRlZE9iamVjdHMpOworCiAgICAgU2NyaXB0UHJvZmlsZXI6OnZp
c2l0Tm9kZVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9yKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBh
bGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQu
CkBAIC01MTEsOCArNTUzLDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UsIFZpc2l0ZWRPYmplY3RzJgogICAgIH0KIAogICAg
IGRvbVRyZWVzSXRlcmF0b3IudmlzaXRCaW5kaW5ncygpOworICAgIGRvbVRyZWVzSXRlcmF0b3Iu
dmlzaXRNZW1vcnlDYWNoZSgpOwogCi0gICAgcmV0dXJuIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0
YXRpc3RpY3MoaW5zcGVjdG9yRGF0YSk7CisgICAgZG9tVHJlZXNJdGVyYXRvci5kdW1wU3RhdGlz
dGljcyhjaGlsZHJlbiwgaW5zcGVjdG9yRGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZFBsYXRm
b3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4pCkBAIC01MjYsMjcgKzU2OSw2IEBAIHN0YXRpYyB2b2lk
IGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtCiAgICAgfQogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKLXsKLSAgICBNZW1vcnlDYWNoZTo6U3RhdGlzdGlj
cyBzdGF0cyA9IG1lbW9yeUNhY2hlKCktPmdldFN0YXRpc3RpY3MoKTsKLSAgICBpbnQgdG90YWxT
aXplID0gc3RhdHMuaW1hZ2VzLnNpemUgKwotICAgICAgICAgICAgICAgICAgICBzdGF0cy5jc3NT
dHlsZVNoZWV0cy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuc2NyaXB0cy5zaXpl
ICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSArCi0gICAg
ICAgICAgICAgICAgICAgIHN0YXRzLmZvbnRzLnNpemU7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck1l
bW9yeUJsb2NrPiBtZW1vcnlDYWNoZVN0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0
ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjptZW1vcnlDYWNoZSk7Ci0gICAgbWVtb3J5Q2Fj
aGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwotCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRJbWFnZXMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5j
c3NTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZENzc1N0eWxlU2hlZXRz
KTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuc2NyaXB0cy5z
aXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9j
a05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGls
ZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRGb250
cyk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4uZ2V0KCkpOwot
ICAgIHJldHVybiBtZW1vcnlDYWNoZVN0YXRzLnJlbGVhc2UoKTsKLX0KLQogc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKFZpc2l0
ZWRPYmplY3RzJiB2aXNpdGVkT2JqZWN0cykKIHsKICAgICBFeHRlcm5hbFJlc291cmNlVmlzaXRv
ciB2aXNpdG9yKHZpc2l0ZWRPYmplY3RzKTsKQEAgLTU4NSwxMCArNjA3LDkgQEAgdm9pZCBJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnMKICAgICBWaXNpdGVkT2JqZWN0cyB2aXNpdGVkT2JqZWN0czsKICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVu
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CiAg
ICAgY2hpbGRyZW4tPmFkZEl0ZW0oanNIZWFwSW5mbygpKTsKLSAgICBjaGlsZHJlbi0+YWRkSXRl
bShtZW1vcnlDYWNoZUluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUlu
Zm8obV9wYWdlKSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/Ci0gICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgJmluc3BlY3Rv
ckRhdGEpKTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJlbi0+
YWRkSXRlbShqc0V4dGVybmFsUmVzb3VyY2VzSW5mbyh2aXNpdGVkT2JqZWN0cykpOworICAgIGNv
bGxlY3REb21UcmVlSW5mbyhtX3BhZ2UsIHZpc2l0ZWRPYmplY3RzLCBjaGlsZHJlbi5nZXQoKSwg
Jmluc3BlY3RvckRhdGEpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEuZHVtcFN0YXRpc3RpY3MoKSk7CiAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oZHVtcERPTVN0b3JhZ2VDYWNoZShtX2RvbVN0b3JhZ2VBZ2VudC0+bWVt
b3J5Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUoKSkpOwogICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50
c0luZm8oY2hpbGRyZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGUxZmIwMmNmYWNmZmYwMmVhMjE4YzIyYmZhODY4
Nzk0NDgxYWZkMTUuLmM5NDgzYjFiOThiZWY5MGE3YjU1YTBjNjEyNmU3MTgwNWE3NjQ0MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgor
I2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKQEAgLTE5Miw0ICsxOTMsMTMgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzYXZlUGFyc2VkU3R5bGVTaGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
c2gKICAgICBzZXREZWNvZGVkU2l6ZShtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+ZXN0aW1hdGVk
U2l6ZUluQnl0ZXMoKSk7CiB9CiAKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkQ1NTU3R5bGVTaGVldD4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1l
bWJlcihtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CisgICAgaW5mby5hZGRTdHJpbmcobV9kZWNv
ZGVkU2hlZXRUZXh0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggOWFkNmYxNGJhMjM2OTg3OGU0ZTYxOGUyNmYy
ODc1ZWRlZjI1YjllOC4uNDM0YmE0NTYxN2JhMjdmNDA0ODEyZjg3YjIzODE1NzhhZDI5NDU4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKKyAgICBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogICAgIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiAgICAgY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKQEAgLTU4LDYgKzU5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZVBhcnNl
ZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgICAgICB2b2lkIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPik7CiAgICAgCisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3QgT1ZFUlJJREU7CisKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGNhblVzZVNoZWV0
KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVy
biBQdXJnZUxhc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAppbmRleCBmZGRkNzlkNDdlMDg1OTE1OWRjOTU1MDEyODQ5MzQ0ZmMxMDBhYWI5Li44MTg1MzMw
ZTg4YzgwZmVlNGE3NTYwZWE1YTFhMDgyZWQzZWZkMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjA2LDQgKzIwNywxNiBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVzKQogICAgIGNoZWNr
Tm90aWZ5KCk7CiB9CiAKK3ZvaWQgQ2FjaGVkRm9udDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q2FjaGVkRm9udD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnJlcG9y
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworI2lmIEVOQUJMRShTVkdfRk9OVFMpCisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9leHRlcm5hbFNWR0RvY3VtZW50KTsKKyNl
bmRpZgorI2lmZGVmIFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2ZvbnREYXRhKTsKKyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAzY2FmYzFlNTAzODg0MTliNmExMzc5Njc3ZWNlMmJl
MmY2YjNiYTM3Li5jZmYzNDJhMjVjMDAzNjg5NDgyMGNkNTdhZWU4ZGJmNWE5NmQxMGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTcwLDYgKzcwLDggQEAg
cHVibGljOgogICAgIFNWR0ZvbnRFbGVtZW50KiBnZXRTVkdGb250QnlJZChjb25zdCBTdHJpbmcm
KSBjb25zdDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKiBtX2ZvbnREYXRhOwogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggMzEzNDc1
Y2UxYmY2ZGUzMDliMTlhM2UxYTg1YTljYTIzNTUwNmFkMy4uZGQ4MThhYzEwY2ViYzg0Yzc2YTcy
NWIyN2E3MDAwMDVjZTJmMDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjcsNCArNDY3LDE0IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5n
ZWRJblJlY3QoY29uc3QgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG5v
dGlmeU9ic2VydmVycygmcmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENhY2hlZEltYWdlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSk7CisgICAgQ2FjaGVk
UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8u
YWRkTWVtYmVyKG1faW1hZ2UpOworI2lmIEVOQUJMRShTVkcpCisgICAgaW5mby5hZGRNZW1iZXIo
bV9zdmdJbWFnZUNhY2hlKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGI5OTIxNTE3MzU4
YmMxMWEzYmIyY2RjMmUzNGFiMDY1M2Q0YzM2YTkuLmUzNGMxNjQyYjQ5MTE2N2EyNjQ1ZTAwYjk3
NTNhOGU4MzVhYTk2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9u
QWR2YW5jZWQoY29uc3QgSW1hZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSosIGNvbnN0IEludFJlY3QmKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6
CiAgICAgSW1hZ2UqIGxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKaW5kZXggYjBhNzAzMzA0YjU5MzdiNjZjMDE0NDAzMmQzM2RjYjAxZTY2MDIz
Zi4uZTM4NWI3YTBlYTJmMGZjNWRhNGEyNTIyZWUzNWRkNDNlZWIyMTJjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTU5LDQgKzE2MCwxMSBAQCBib29sIENhY2hlZFJhd1Jlc291
cmNlOjpjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJhd1Jlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIENhY2hl
ZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGUyOTZhYjg3ZWFiNTUyOTc0Nzg4YThhNjI5ODlkYzQ5
OGY2NTY2ODQuLmMzNDliODY2YTM3NjZhOWEyNWMyYjgwZDc1MGU0MzkzYTUxZjUzZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC0y
OSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJj
ZUNhbGxiYWNrOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ7CitjbGFzcyBNZW1vcnlP
YmplY3RJbmZvOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZSA6IHB1YmxpYyBDYWNoZWRSZXNv
dXJjZSB7CiBwdWJsaWM6CkBAIC00NCw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2Fu
UmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNDFjZDYwMTg5NWFiZDIyMmQ4MDJlZjIxNjNlOTQ1
ZGY1MjNiZmI5Zi4uNDk2ZTQzMDI1ZDM1ZjBhZjM0YTE0NDU1Njg5YzAwZDY1ZTM2ZTA4OCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQdXJnZWFibGVCdWZmZXIuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAt
ODAwLDQgKzgwMSwyNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxi
YWNrOjp0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1fcmVzb3VyY2Ut
PmRpZEFkZENsaWVudChtX2NsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBpbmZvLmFkZEhhc2hTZXQobV9j
bGllbnRzKTsKKyAgICBpbmZvLmFkZFN0cmluZyhtX2FjY2VwdCk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIobV9sb2FkZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzcG9uc2Up
OworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZGF0YSk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9jYWNoZWRNZXRhZGF0YS5nZXQoKSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX3ByZXZJbkFsbFJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1fcHJldkluTGl2ZVJlc291cmNlc0xpc3QpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcHJveHlSZXNvdXJjZSk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRIYXNoU2V0KG1faGFuZGxlc1RvUmV2YWxpZGF0ZSk7CisKKyAgICBpZiAobV9wdXJn
ZWFibGVEYXRhICYmICFtX3B1cmdlYWJsZURhdGEtPndhc1B1cmdlZCgpKQorICAgICAgICBpbmZv
LmFkZFJhd0J1ZmZlcihtX3B1cmdlYWJsZURhdGEuZ2V0KCksIG1fcHVyZ2VhYmxlRGF0YS0+c2l6
ZSgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCBmZTNlMWZjNjNjN2IzZWQyNTNhYWJhODJlOTE3NDQ1ZTU1NmVlODM4Li40OTNi
MTY3YzUxMTRhN2I5Yzk2NTI1Y2MzMzVhNTM3ZmQ4ZGVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CitjbGFzcyBNZW1vcnlPYmplY3RJ
bmZvOwogY2xhc3MgUHVyZ2VhYmxlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTI0OSw2ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRMb2FkRmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5pc2hUaW1l
ID0gZmluaXNoVGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9hZEZpbmlzaFRpbWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGNo
ZWNrTm90aWZ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDg3MTI5MmM2MjM3ZmVjMDMyMDM1YTYyOWQ3ZTgy
Yjc1NThkNGY3ZTcuLmM0ZTdkNDQzMWI1Y2E5MjFmZjYxYmU3ZGUzOWMwYjY5NDMyM2Y1NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZTo6c2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSAKQEAgLTM5LDQgKzQx
LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOjpzZXRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRo
aXMpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2UpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcmVzb3VyY2UpOworfQorCisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKaW5kZXgg
OTVjZDBmZjdmOGFlNGIzNDA1YjkwOTg1ZmQ3NjY5MzhhOTM5MDI2My4uMTVkNDRjNzU3MWMxMWI4
NDBmOWQzZTE3MTdkMTcxOGM3ZmE1ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOworCiAgICAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIH5DYWNoZWRS
ZXNvdXJjZUhhbmRsZUJhc2UoKSB7IGlmIChtX3Jlc291cmNlKSBtX3Jlc291cmNlLT51bnJlZ2lz
dGVySGFuZGxlKHRoaXMpOyB9CkBAIC00MSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdHlwZWRlZiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNl
OjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2UgPyAmQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlOjptX3Jlc291cmNlIDogMDsgfQogCisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UoKSA6IG1fcmVzb3VyY2UoMCkge30KICAgICAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKENhY2hlZFJlc291cmNlKiByZXMpIHsgbV9yZXNvdXJjZSA9IHJl
czsgaWYgKG1fcmVzb3VyY2UpIG1fcmVzb3VyY2UtPnJlZ2lzdGVySGFuZGxlKHRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA5YTg4NzI0YTE1MGQxYWU2ZTRhODUwYTExOGE5YzRmMzhlZWU5ZTFmLi5kZTg0
NGU0NDZmMzM5MDc4NmE5ZjEzMGIzNDJjODFlMjBkZGRjMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3Nyw1
ICs4NzcsMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMo
KQogICAgICAgICBwcmludGYoIklNQUdFUzogICVkICglZCBoaXRzLCBoaXQgcmF0ZSAlZCUlKVxu
IiwgaW1hZ2VzLCBpbWFnZXMgLSBpbWFnZU1pc3NlcywgKGltYWdlcyAtIGltYWdlTWlzc2VzKSAq
IDEwMCAvIGltYWdlcyk7CiB9CiAjZW5kaWYKLSAgICAKKwordm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMb2FkZXIp
OworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzaE1hcChtX2RvY3VtZW50UmVzb3VyY2VzKTsK
KyAgICBpbmZvLmFkZEhhc2hTZXQobV92YWxpZGF0ZWRVUkxzKTsKKyAgICBpbmZvLmFkZExpc3RI
YXNoU2V0KCptX3ByZWxvYWRzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdQcmVsb2Fk
cyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKaW5kZXggNWVlYjM4NzFmMDNiNDBmODYwOTgwMDE1NDY4MWM1YjA1NmQz
YWNiNS4uM2YxYzIzM2IwMDhkZjg0MDFhOGMxYWJhMTE4MTc1ZGE3ZDgwZmI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdl
TG9hZGVyOwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CiAKIC8vIFRoZSBD
YWNoZWRSZXNvdXJjZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2Vz
L3N0eWxlc2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIENhY2hlZFJlc291cmNl
TG9hZGVyIHsKQEAgLTExOSw2ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludFByZWxv
YWRTdGF0cygpOwogICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgS1VSTCYsIGJvb2wgZm9yUHJlbG9hZCA9IGZhbHNlKTsKICAgICAKKyAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVz
b3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNl
KENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZjAzZmFkYjU3YThhZDIzZjZmMzAxODRmMWFhMDAxMjQ1ZTgw
N2IzOS4uZWM2NzdmODM4MDE5YmQ2ZmU1Y2RkNDU4NjViMzg3YWQ4ODA4Njk0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC03
MSw2ICs3MSwxNCBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZAogICAgIGNoZWNrTm90aWZ5KCk7
CiB9CiAKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZv
PENhY2hlZFNWR0RvY3VtZW50PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTVkcpOworICAgIENhY2hlZFJlc291cmNlOjpy
ZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIpOwor
fQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAppbmRleCBiMDVlZjY3ZDFjNDI3MWFhMDQ4ZGNhMmM0YTJhNjU5NzY1MTQw
NTAwLi41NGQ1YTg4ODEyZjVmNmY3MmNmNWM1MTMwNDEzNDZmYWZhYmU5NmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNiAr
NDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAppbmRleCBhMmRhNzQ0ODliZDVlNTU1ZTM3MThiYmNjYjNhN2I4MTI5MWZkZmIwLi43YzE1
OWY1ZmJlNjUzMjcyODY1YzlhZDQyMTZmNzU4MzE5Yzk1YmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMjYsNCAr
MTI3LDE1IEBAIHZvaWQgQ2FjaGVkU2NyaXB0Ojpzb3VyY2VQcm92aWRlckNhY2hlU2l6ZUNoYW5n
ZWQoaW50IGRlbHRhKQogfQogI2VuZGlmCiAKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDYWNoZWRTY3JpcHQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNjcmlwdCk7CisgICAgQ2Fj
aGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGlu
Zm8uYWRkU3RyaW5nKG1fc2NyaXB0KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIpOwor
I2lmIFVTRShKU0MpCisgICAgaW5mby5hZGRNZW1iZXIobV9zb3VyY2VQcm92aWRlckNhY2hlKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOWE0ZjM4YWQwYjNmN2JmZTMxZTc0Nzg3N2Q0
Y2VmNTY5NDI1ODJiYi4uM2RmNmJlOTM4MjQzYjg1YWQ2Zjk5NGY2YjdjODk0ZGRkMzA2Zjc1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtMzcsNiAr
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOworICAgIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiAgICAg
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogICAgIGNsYXNzIENhY2hlZFNjcmlwdCA6IHB1
YmxpYyBDYWNoZWRSZXNvdXJjZSB7CkBAIC01Nyw2ICs1OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlKiBzb3VyY2VQcm92aWRlckNhY2hl
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc291cmNlUHJvdmlkZXJDYWNoZVNpemVDaGFuZ2VkKGlu
dCBkZWx0YSk7CiAjZW5kaWYKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVy
biBQdXJnZUxhc3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hh
ZGVyLmNwcAppbmRleCBiOGQ3YzVmOWE4ODk1MDllNDg5ZDgzZGUyMTUwNzgzYjY4ODBjMDNkLi4z
ZTU0ZGVjZDBmNWVlODQ0NjdjZTljMmU5NjM1OGRmNmM1YmY0ZDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgorI2luY2x1
ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CkBAIC02Nyw2ICs2OCwxNCBAQCB2b2lkIENhY2hlZFNoYWRlcjo6ZGF0YShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAordm9pZCBD
YWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNoYWRlcj4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlU2hhZGVyKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKKyAgICBpbmZv
LmFkZFN0cmluZyhtX3NoYWRlclN0cmluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTaGFkZXIuaAppbmRleCBkMWRlMTRkNzc1ZjM4MGVlNWIzYTNlOTM1NGJhMGY3
ZTk5MDg2ZDc0Li40Mjg2NzcwYWRjZjgxMWFkODRlMmU0YTFkMDNiOTk1MWM5NTNiYTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCkBAIC0zNiw2ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIGNs
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKIGNsYXNzIENhY2hlZFNoYWRlciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CkBAIC00Niw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIHNoYWRlclN0cmluZygpOwogICAgIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRl
OgogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgU3RyaW5n
IG1fc2hhZGVyU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDMzNmZjZTRhYzYwZmYzMzgzNzQwNWU4YmViZTE3
MWRkODRiZmNhMjIuLjNjZjk1MWFkNWI0MjBkZGJlODc0MTM3NTE5NjcxMDQxYWE2Zjg1MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC05Niw2ICs5NywxNCBAQCB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVycm9yKENhY2hlZFJl
c291cmNlOjpTdGF0dXMgc3RhdHVzKQogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKK3ZvaWQgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVkWFNMU3R5
bGVTaGVldD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNhY2hlZFJlc291cmNlWFNMVCk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnJlcG9ydE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkU3RyaW5nKG1fc2hlZXQpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2Rlcik7Cit9CisKICNlbmRpZgogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCBi
OGY3MjgzZDM2NDkyOWYyODU2ZWE1OGEyN2UwNzdkODQ4ZjI4YTZiLi4yYWE4ZGZhMjUxMzJmODIy
Njc0ZTY4MTJiNjA0YjFjZTczN2FkMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOworICAgIGNsYXNz
IE1lbW9yeU9iamVjdEluZm87CiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogI2lm
IEVOQUJMRShYU0xUKQpAQCAtNTAsNiArNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7CiAgICAgICAgIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJS
SURFOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTdHJpbmcgbV9zaGVldDsKICAgICAgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDVkYzA0NzQwMmNiM2Q3NDhlZDk3MzQ3
OWU2NDIyODc1OTM3ODg5MmQuLmMxM2U2MTVjMWUxMzc0Zjc4YmMxMTg0MTc3Mzg0MjUwOGZiODdk
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKQEAgLTcxNCw2ICs3MTUsMTkgQEAg
TWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0YXRpc3RpY3MoKQogICAg
IHJldHVybiBzdGF0czsKIH0KIAordm9pZCBNZW1vcnlDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlD
bGFzc0luZm88TWVtb3J5Q2FjaGU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpOworICAgIGluZm8uYWRkSGFz
aE1hcChtX3Jlc291cmNlcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9y
IGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKENhY2hlZFJlc291cmNlTWFwOjpjb25z
dF9pdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaSAhPSBlOyArK2kpIHsKKyAgICAg
ICAgaW5mby5hZGRTdHJpbmcoaS0+Zmlyc3QpOworICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihpLT5zZWNvbmQpOworICAgIH0KKyAgICBpbmZvLmFkZFZlY3RvcihtX2FsbFJlc291
cmNlcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9saXZlRGVjb2RlZFJlc291cmNlcyk7Cit9CisK
IHZvaWQgTWVtb3J5Q2FjaGU6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgbV9k
aXNhYmxlZCA9IGRpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAppbmRleCA2Zjk4MzI2NjIyODIyNGEzOTYwMzUyNDQ0MjQ4MzRiNTQzNmJjNzExLi41YTJm
OTQ5NWU4MTU4ZmZjZmNiMDkxMDcwODM3M2Q3MTcwMWY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDYWNoZWRD
U1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIEtVUkw7CitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luSGFzaDsKQEAgLTE2OCw2ICsxNjksOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bGl2ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpdmVTaXplOyB9CiAgICAgdW5zaWduZWQgZGVh
ZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlYWRTaXplOyB9CiAKKyAgICB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBNZW1v
cnlDYWNoZSgpOwogICAgIH5NZW1vcnlDYWNoZSgpOyAvLyBOb3QgaW1wbGVtZW50ZWQgdG8gbWFr
ZSBzdXJlIG5vYm9keSBhY2NpZGVudGFsbHkgY2FsbHMgZGVsZXRlIC0tIFdlYkNvcmUgZG9lcyBu
b3QgZGVsZXRlIHNpbmdsZXRvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QdXJnZWFibGVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1
ZmZlci5oCmluZGV4IDQ2OGI5MmIyNTEyYjhiZjhiNzA0NWEyNzYxZjA4MGQ5MDAwNGQzNDEuLjgz
NDIyNDFkNGNhMDE5OWM1NTc3ZmQ0MWE2NDIxM2JlN2I5ZjgyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKICAgICBjbGFzcyBQ
dXJnZWFibGVCdWZmZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQdXJnZWFibGVC
dWZmZXIpOwogICAgIHB1YmxpYzoKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIHdhc1B1cmdlZCgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgbWFrZVB1
cmdlYWJsZShib29sIHB1cmdlYWJsZSk7Ci0gICAgICAgIAorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUHVyZ2VhYmxlQnVmZmVyKGNoYXIqIGRhdGEsIHNpemVfdCk7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156615</attachid>
            <date>2012-08-06 01:12:32 -0700</date>
            <delta_ts>2012-08-06 02:10:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91734-20120806121208.patch</filename>
            <type>text/plain</type>
            <size>37392</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg4ZjgyZjc5YTcxMGI0
NWMzN2I3YzcxYTc5YTI2MDAzYmM2ZjRjYS4uMjg1MzA3YjNkMGU3MGRjMjhiYzNmZDk3NDA4ZjMz
NmEyMWU1MTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDEyLTA4LTA2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbjogY292ZXIgTWVtb3J5Q2FjaGUgd2l0
aCBNZW1vcnlJbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNzM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT2xkIHZlcnNpb24gb2YgbmF0aXZlIG1lbW9yeSBpbnN0cnVtZW50YXRp
b24gZG9lc24ndCBtYXJrIHRoZSBtZW1vcnkgY2FjaGUgb2JqZWN0cyBhcyB2aXNpdGVkLgorICAg
ICAgICBBcyBhIHJlc3VsdCBNSSBjb3VsZCBjb3VudCB0aGUgc2FtZSBvYmplY3RzIG11bHRpcGxl
IHRpbWVzLgorICAgICAgICBUaGUgbmV3IHZlcnNpb24ganVzdCB0cmF2ZXJzZXMgdGhyb3VnaCBN
ZW1vcnlDYWNoZSB0aGUgc2FtZSB3YXkgYXMgdGhyb3VnaCBET00uCisgICAgICAgIEFsc28gbm90
IGFsbCB0aGUgY2FjaGVkIHJlc291cmNlIHR5cGVzIHdlcmUgY291bnRlZC4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVwb3J0TWVt
b3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoTWVtb3J5
QmxvY2tOYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dERvbVRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50Ojpn
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpyZXBvcnRNZW1vcnlV
c2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oOgorICAgICAgICAoQ2FjaGVkRm9udCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWNoZWRSYXdSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRS
ZXNvdXJjZUhhbmRsZUJhc2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU2NyaXB0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENhY2hlZFNjcmlwdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTaGFkZXI6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkU2hhZGVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRYU0xTdHlsZVNoZWV0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNZW1vcnlDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFB1cmdlYWJsZUJ1ZmZlcik6CisKKzIw
MTItMDgtMDYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IE5NSTogcmVwbGFjZSBhZGRTdHJpbmcgd2l0aCBhZGRNZW1iZXIg
b3ZlcmxvYWQgZnVuY3Rpb24uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzIwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkMTUyMTBlMjg5
YmVhZDgzMzU2OTkwYjAzNDdlYjkyZjQyNWQ4YmE4Li5kZWI1ZWMwYjkzZTlmYTdkZDFjY2E4NWVj
Y2MzMWEzZDVmZDhhMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYwOTUsNiArNjA5
NSw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRWZWN0b3IobV9jdXN0b21Gb250
cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb2N1bWVudFVSSSk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9iYXNlVGFyZ2V0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2ZyYW1l
KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2NhY2hlZFJlc291cmNlTG9hZGVy
KTsKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2VsZW1TaGVldCk7CiAgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9wYWdlVXNlclNoZWV0KTsKICAgICBpZiAobV9wYWdl
R3JvdXBVc2VyU2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlv
bi5oCmluZGV4IGY0ZjAzNmI2ZGQxMmMzZGFiNWRmY2JkMWMyNThlZjM5MTBhZGYzMDYuLjg4MzRk
Mzc2ODkyMjljOWFkMGJlZmEzNjQyN2VlMDg1OTVmMTlmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01
Miw2ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIENTUywKICAgICAgICAgQmluZGluZywKICAg
ICAgICAgTG9hZGVyLAorICAgICAgICBNZW1vcnlDYWNoZVN0cnVjdHVyZXMsCisgICAgICAgIENh
Y2hlZFJlc291cmNlLAorICAgICAgICBDYWNoZWRSZXNvdXJjZUNTUywKKyAgICAgICAgQ2FjaGVk
UmVzb3VyY2VGb250LAorICAgICAgICBDYWNoZWRSZXNvdXJjZUltYWdlLAorICAgICAgICBDYWNo
ZWRSZXNvdXJjZVNjcmlwdCwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTVkcsCisgICAgICAgIENh
Y2hlZFJlc291cmNlU2hhZGVyLAorICAgICAgICBDYWNoZWRSZXNvdXJjZVhTTFQsCiAgICAgICAg
IExhc3RUeXBlRW50cnkKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA5YzI4YTAzYjdlMzg1ZjY3MTE4YzNkOTMx
NGI0MjIyNjFiNWVjODgzLi5lYTUyNTRhYWI1OWUzMjRiYWNiYTk3NzdiNjZkZjM4MGEyNWI0Yzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAKQEAgLTgxLDE0ICs4MSwyMCBAQCBzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVybmFsU3Ry
aW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3RvckRP
TURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFy
IG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvY2Vz
c1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CiAKLXN0YXRpYyBjb25z
dCBjaGFyIGNhY2hlZEltYWdlc1tdID0gIkNhY2hlZEltYWdlcyI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBjYWNoZWRDc3NTdHlsZVNoZWV0c1tdID0gIkNhY2hlZENzc1N0eWxlU2hlZXRzIjsKLXN0YXRp
YyBjb25zdCBjaGFyIGNhY2hlZFNjcmlwdHNbXSA9ICJDYWNoZWRTY3JpcHRzIjsKLXN0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMi
Owotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0
aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVtdID0gIk1lbW9yeUNhY2hlIjsKK3N0YXRpYyBjb25z
dCBjaGFyIG1lbW9yeUNhY2hlU3RydWN0dXJlc1tdID0gIk1lbW9yeUNhY2hlU3RydWN0dXJlcyI7
CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVtdID0gIkNhY2hlZFJlc291cmNlIjsK
K3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlSW1hZ2VbXSA9ICJDYWNoZWRJbWFnZXMi
Oworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VDU1NbXSA9ICJDYWNoZWRDc3NTdHls
ZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNjcmlwdFtdID0gIkNh
Y2hlZFNjcmlwdHMiOworc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VYU0xbXSA9ICJD
YWNoZWRYc2xTdHlsZVNoZWV0cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZUZv
bnRbXSA9ICJDYWNoZWRGb250cyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNW
R1tdID0gIkNhY2hlZFNWR0dyYXBoaWNzIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFJlc291
cmNlU2hhZGVyW10gPSAiQ2FjaGVkU2hhZGVycyI7CitzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRS
ZXNvdXJjZVhTTFRbXSA9ICJDYWNoZWRTaGFkZXJzWFNMVCI7CisKIHN0YXRpYyBjb25zdCBjaGFy
IHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNvbnN0IGNoYXIg
cmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOwogCkBAIC00Njks
MTIgKzQ3NSw0MCBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0Qmlu
ZGluZ01lbW9yeUluZm8oJm1fZG9tTWVtb3J5VXNhZ2UpOwogICAgIH0KIAotICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKEluc3BlY3RvckRhdGFDb3Vu
dGVyKiBpbnNwZWN0b3JEYXRhKQorICAgIHZvaWQgdmlzaXRNZW1vcnlDYWNoZSgpCiAgICAgewot
ICAgICAgICBpbnNwZWN0b3JEYXRhLT5hZGRDb21wb25lbnQoTWVtb3J5QmxvY2tOYW1lOjppbnNw
ZWN0b3JET01EYXRhLCBtX2RvbU1lbW9yeVVzYWdlLnNlbGZTaXplKCkpOworICAgICAgICBtX2Rv
bU1lbW9yeVVzYWdlLmFkZFJvb3RPYmplY3QobWVtb3J5Q2FjaGUoKSk7CisgICAgfQorCisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JNZW1vcnlDYWNo
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKworICAgICAg
ICBDT01QSUxFX0FTU0VSVChNZW1vcnlJbnN0cnVtZW50YXRpb246Okxhc3RUeXBlRW50cnkgPT0g
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVhTTFQgKyAxLCBvYmplY3RfdHlw
ZV9lbnVtX3dhc19jaGFuZ2VkX3BsZWFzZV9maXhfdGhlX2ltcGxlbWVudGF0aW9uKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1
cmVzOyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5OyArK2kpCisgICAg
ICAgICAgICB0b3RhbFNpemUgKz0gbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoc3RhdGljX2Nh
c3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7CisKKyAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9
IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAg
ICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9kb21NZW1vcnlVc2FnZS50
b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpLCBN
ZW1vcnlCbG9ja05hbWU6Om1lbW9yeUNhY2hlU3RydWN0dXJlcyk7CisgICAgICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRSZXNvdXJjZSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBt
X2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlQ1NTKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFs
U2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlRm9udCksIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VGb250KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3Io
Y2hpbGRyZW4uZ2V0KCksIG1fZG9tTWVtb3J5VXNhZ2UudG90YWxTaXplKE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VJbWFnZSksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVz
b3VyY2VJbWFnZSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBt
X2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlU2NyaXB0KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNjcmlwdCk7Cisg
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdl
LnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHKSwgTWVt
b3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNWRyk7CisgICAgICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2hhZGVyKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNo
ZWRSZXNvdXJjZVNoYWRlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdl
dCgpLCBtX2RvbU1lbW9yeVVzYWdlLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNh
Y2hlZFJlc291cmNlWFNMVCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VYU0xUKTsK
KworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5zcGVjdG9y
TWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjptZW1vcnlDYWNo
ZSk7CisgICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6ZSk7CisgICAgICAgIGJsb2NrLT5z
ZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gYmxvY2sucmVs
ZWFzZSgpOworICAgIH0KIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJ1
aWxkT2JqZWN0Rm9yRE9NKCkgY29uc3QKKyAgICB7CiAgICAgICAgIHNpemVfdCB0b3RhbFNpemUg
PSAwOwotICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlcjsg
aSA8IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICBm
b3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlcjsgaSA8IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6TWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOyArK2kpCiAgICAgICAgICAgICB0b3Rh
bFNpemUgKz0gbV9kb21NZW1vcnlVc2FnZS50b3RhbFNpemUoc3RhdGljX2Nhc3Q8TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7CiAKICAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9IFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwpAQCAtNDkwLDYgKzUy
NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkb20ucmVsZWFzZSgpOwogICAgIH0KIAor
ICAgIHZvaWQgZHVtcFN0YXRpc3RpY3MoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9y
eUJsb2NrPiogY2hpbGRyZW4sIEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQor
ICAgIHsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JNZW1vcnlDYWNo
ZSgpKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JET00oKSk7Cisg
ICAgICAgIGluc3BlY3RvckRhdGEtPmFkZENvbXBvbmVudChNZW1vcnlCbG9ja05hbWU6Omluc3Bl
Y3RvckRPTURhdGEsIG1fZG9tTWVtb3J5VXNhZ2Uuc2VsZlNpemUoKSk7CisgICAgfQorCiBwcml2
YXRlOgogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1f
ZG9tTWVtb3J5VXNhZ2U7CkBAIC00OTcsOSArNTM4LDEwIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBh
Z2UsIFZpc2l0ZWRPYmplY3RzJiB2aXNpdGVkT2JqZWN0cywgSW5zcGVjdG9yRGF0YUNvdW50ZXIq
IGluc3BlY3RvckRhdGEpCitzdGF0aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8oUGFnZSogcGFn
ZSwgVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzLCBUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbiwgSW5zcGVjdG9yRGF0YUNvdW50ZXIqIGluc3Bl
Y3RvckRhdGEpCiB7CiAgICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBhZ2Us
IHZpc2l0ZWRPYmplY3RzKTsKKwogICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5vZGVXcmFwcGVy
cygmZG9tVHJlZXNJdGVyYXRvcik7CiAKICAgICAvLyBNYWtlIHN1cmUgYWxsIGRvY3VtZW50cyBy
ZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgpAQCAtNTExLDggKzU1
Myw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5m
byhQYWdlKiBwYWdlLCBWaXNpdGVkT2JqZWN0cyYKICAgICB9CiAKICAgICBkb21UcmVlc0l0ZXJh
dG9yLnZpc2l0QmluZGluZ3MoKTsKKyAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5Q2Fj
aGUoKTsKIAotICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0aXN0aWNzKGluc3Bl
Y3RvckRhdGEpOworICAgIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoY2hpbGRyZW4s
IGluc3BlY3RvckRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJ
bmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+
IGNoaWxkcmVuKQpAQCAtNTI2LDI3ICs1NjksNiBAQCBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNv
bXBvbmVudHNJbmZvKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbQog
ICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9y
eUNhY2hlSW5mbygpCi17Ci0gICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1v
cnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7Ci0gICAgaW50IHRvdGFsU2l6ZSA9IHN0YXRzLmlt
YWdlcy5zaXplICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6
ZSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRzLnNjcmlwdHMuc2l6ZSArCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUgKwotICAgICAgICAgICAgICAgICAg
ICBzdGF0cy5mb250cy5zaXplOwotICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gbWVt
b3J5Q2FjaGVTdGF0cyA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1l
bW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGUpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldFNp
emUodG90YWxTaXplKTsKLQotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVt
b3J5QmxvY2s+OjpjcmVhdGUoKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMuaW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKLSAg
ICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMu
c2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5n
ZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRY
c2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0
YXRzLmZvbnRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOwotICAgIG1lbW9y
eUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKLSAgICByZXR1cm4gbWVt
b3J5Q2FjaGVTdGF0cy5yZWxlYXNlKCk7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiBqc0V4dGVybmFsUmVzb3VyY2VzSW5mbyhWaXNpdGVkT2JqZWN0cyYgdmlz
aXRlZE9iamVjdHMpCiB7CiAgICAgRXh0ZXJuYWxSZXNvdXJjZVZpc2l0b3IgdmlzaXRvcih2aXNp
dGVkT2JqZWN0cyk7CkBAIC01ODUsMTAgKzYwNyw5IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
CiAgICAgVmlzaXRlZE9iamVjdHMgdmlzaXRlZE9iamVjdHM7CiAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwogICAgIGNoaWxkcmVuLT5h
ZGRJdGVtKGpzSGVhcEluZm8oKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2FjaGVJ
bmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1fcGFnZSkpOyAv
LyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwotICAgIGNoaWxkcmVuLT5hZGRJdGVtKGRv
bVRyZWVJbmZvKG1fcGFnZSwgdmlzaXRlZE9iamVjdHMsICZpbnNwZWN0b3JEYXRhKSk7IC8vIEZJ
WE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oanNFeHRl
cm5hbFJlc291cmNlc0luZm8odmlzaXRlZE9iamVjdHMpKTsKKyAgICBjb2xsZWN0RG9tVHJlZUlu
Zm8obV9wYWdlLCB2aXNpdGVkT2JqZWN0cywgY2hpbGRyZW4uZ2V0KCksICZpbnNwZWN0b3JEYXRh
KTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBjaGlsZHJlbi0+YWRkSXRl
bShpbnNwZWN0b3JEYXRhLmR1bXBTdGF0aXN0aWNzKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVt
KGR1bXBET01TdG9yYWdlQ2FjaGUobV9kb21TdG9yYWdlQWdlbnQtPm1lbW9yeUJ5dGVzVXNlZEJ5
U3RvcmFnZUNhY2hlKCkpKTsKICAgICBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKGNoaWxkcmVu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAppbmRleCBjMDVkNzMwYTI5YjMwOTU5MGZjMWI4ZWIyY2ZjYzQwNjJlNmU3YjIxLi5i
YWIxNzU2MTZlZmVlOTAwMzRmMjBjMjNlMTc2MGIyMDA0MmZjYThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CkBAIC0xOTgsNCArMTk5LDEzIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNl
ZFN0eWxlU2hlZXQoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHNoCiAgICAgc2V0RGVj
b2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVzdGltYXRlZFNpemVJbkJ5dGVzKCkp
OwogfQogCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENhY2hlZENTU1N0eWxlU2hlZXQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkTWVt
YmVyKG1fZGVjb2Rlcik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGVjb2RlZFNoZWV0VGV4dCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCmluZGV4IDlhZDZmMTRiYTIzNjk4NzhlNGU2MThlMjZmMjg3NWVkZWYyNWI5ZTgu
LjQzNGJhNDU2MTdiYTI3ZjQwNDgxMmY4N2IyMzgxNTc4YWQyOTQ1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VD
bGllbnQ7CisgICAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKICAgICBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAgICAgY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogICAgIGNsYXNzIFRleHRSZXNvdXJj
ZURlY29kZXI7CkBAIC01OCw2ICs1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHJlc3RvcmVQYXJzZWRTdHlsZVNoZWV0KGNv
bnN0IENTU1BhcnNlckNvbnRleHQmKTsKICAgICAgICAgdm9pZCBzYXZlUGFyc2VkU3R5bGVTaGVl
dChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4pOwogICAgIAorICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURF
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5Vc2VTaGVldChib29sIGVuZm9yY2VN
SU1FVHlwZSwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
UHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VMYXN0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZmRkZDc5
ZDQ3ZTA4NTkxNTlkYzk1NTAxMjg0OTM0NGZjMTAwYWFiOS4uODE4NTMzMGU4OGM4MGZlZTRhNzU2
MGVhNWExYTA4MmVkM2VmZDEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTIwNiw0ICsyMDcsMTYgQEAgdm9pZCBDYWNoZWRGb250OjplcnJv
cihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKICAgICBjaGVja05vdGlmeSgpOwogfQog
Cit2b2lkIENhY2hlZEZvbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZEZvbnQ+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNo
ZWRSZXNvdXJjZUZvbnQpOworICAgIENhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKKyNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fZXh0ZXJuYWxTVkdEb2N1bWVudCk7CisjZW5kaWYKKyNpZmRlZiBT
VE9SRV9GT05UX0NVU1RPTV9QTEFURk9STV9EQVRBCisgICAgaW5mby5hZGRNZW1iZXIobV9mb250
RGF0YSk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKaW5kZXggM2NhZmMxZTUwMzg4NDE5YjZhMTM3OTY3N2VjZTJiZTJmNmIzYmEzNy4uY2Zm
MzQyYTI1YzAwMzY4OTQ4MjBjZDU3YWVlOGRiZjVhOTZkMTBhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBT
VkdGb250RWxlbWVudCogZ2V0U1ZHRm9udEJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAjZW5k
aWYKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3QgT1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogbV9mb250RGF0YTsKICAgICBib29sIG1fbG9hZEluaXRpYXRlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDMxMzQ3NWNlMWJmNmRlMzA5YjE5
YTNlMWE4NWE5Y2EyMzU1MDZhZDMuLmRkODE4YWMxMGNlYmM4NGM3NmE3MjViMjdhNzAwMDA1Y2Uy
ZjA0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY3LDQgKzQ2NywxNCBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBub3RpZnlPYnNlcnZlcnMo
JnJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxDYWNoZWRJbWFnZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNhY2hlZFJlc291cmNlSW1hZ2UpOworICAgIENhY2hlZFJlc291cmNlOjpyZXBv
cnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2lt
YWdlKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGluZm8uYWRkTWVtYmVyKG1fc3ZnSW1hZ2VDYWNo
ZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBiOTkyMTUxNzM1OGJjMTFhM2JiMmNkYzJl
MzRhYjA2NTNkNGMzNmE5Li5lMzRjMTY0MmI0OTExNjdhMjY0NWUwMGI5NzUzYThlODM1YWE5NjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtOTMsNiAr
OTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0
IEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBj
b25zdCBJbnRSZWN0Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIEltYWdlKiBs
b29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmlu
ZGV4IGIwYTcwMzMwNGI1OTM3YjY2YzAxNDQwMzJkMzNkY2IwMWU2NjAyM2YuLmUzODViN2EwZWEy
ZjBmYzVkYTRhMjUyMmVlMzVkZDQzZWViMjEyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1
ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTE1OSw0ICsxNjAsMTEgQEAgYm9vbCBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxDYWNoZWRSYXdSZXNvdXJjZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCBlMjk2YWI4N2VhYjU1Mjk3NDc4OGE4YTYyOTg5ZGM0OThmNjU2Njg0Li5jMzQ5
Yjg2NmEzNzY2YTlhMjVjMmI4MGQ3NTBlNDM5M2E1MWY1M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjksNiArMjksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2VDYWxsYmFjazsKIGNs
YXNzIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50OworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGlj
OgpAQCAtNDQsNiArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblJldXNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCmluZGV4IDQxY2Q2MDE4OTVhYmQyMjJkODAyZWYyMTYzZTk0NWRmNTIzYmZiOWYuLmY1
OWYzMTE1NzBlNTRiMzdkYjE2NTljM2Y5M2MwMDg3OTJlMzI0YTIgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKQEAgLTgwMCw0ICs4MDEsMjcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6dGltZXJGaXJl
ZChUaW1lcjxDYWNoZWRSZXNvdXJjZUNhbGwKICAgICBtX3Jlc291cmNlLT5kaWRBZGRDbGllbnQo
bV9jbGllbnQpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNs
YXNzSW5mbzxDYWNoZWRSZXNvdXJjZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X3Jlc291cmNlUmVxdWVzdCk7CisgICAgaW5mby5hZGRIYXNoU2V0KG1fY2xpZW50cyk7CisgICAg
aW5mby5hZGRNZW1iZXIobV9hY2NlcHQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KG1fbG9hZGVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc3BvbnNlKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX2RhdGEpOworICAgIGluZm8uYWRkTWVtYmVyKG1fY2FjaGVk
TWV0YWRhdGEuZ2V0KCkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbmV4dElu
QWxsUmVzb3VyY2VzTGlzdCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9wcmV2
SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX25l
eHRJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX3Jlc291cmNlVG9SZXZhbGlkYXRlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX3Byb3h5UmVzb3VyY2UpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzaFNl
dChtX2hhbmRsZXNUb1JldmFsaWRhdGUpOworCisgICAgaWYgKG1fcHVyZ2VhYmxlRGF0YSAmJiAh
bV9wdXJnZWFibGVEYXRhLT53YXNQdXJnZWQoKSkKKyAgICAgICAgaW5mby5hZGRSYXdCdWZmZXIo
bV9wdXJnZWFibGVEYXRhLmdldCgpLCBtX3B1cmdlYWJsZURhdGEtPnNpemUoKSk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggZWE2
M2Y5MzhmMDI5ZjQ4NWZkM2FhY2IxYWVhNDJjM2YyNGY1NGYyMC4uZjYxYWQ1ODM0OGM1NmExYzll
NmY2MWMyMTU4ZGE2NWUyZDkxNTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VI
YW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEluc3BlY3RvclJlc291cmNlOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIGNsYXNzIFB1
cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3VicmVzb3VyY2VM
b2FkZXI7CkBAIC0yNTAsNiArMjUxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZEZpbmlz
aFRpbWUoZG91YmxlIGZpbmlzaFRpbWUpIHsgbV9sb2FkRmluaXNoVGltZSA9IGZpbmlzaFRpbWU7
IH0KICAgICBkb3VibGUgbG9hZEZpbmlzaFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRGaW5p
c2hUaW1lOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGVja05vdGlmeSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFu
ZGxlLmNwcAppbmRleCA4NzEyOTJjNjIzN2ZlYzAzMjAzNWE2MjlkN2U4MmI3NTU4ZDRmN2U3Li5j
NGU3ZDQ0MzFiNWNhOTIxZmY2MWJlN2RlMzljMGI2OTQzMjNmNTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnNldFJlc291
cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgCkBAIC0zOSw0ICs0MSwxMSBAQCB2b2lkIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTo6c2V0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRsZSh0aGlzKTsKIH0KIAordm9p
ZCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX3Jlc291cmNlKTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IDk1Y2QwZmY3ZjhhZTRi
MzQwNWI5MDk4NWZkNzY2OTM4YTkzOTAyNjMuLjE1ZDQ0Yzc1NzFjMTFiODQwZjlkM2UxNzE3ZDE3
MThjN2ZhNWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKwogICAgIGNsYXNzIENhY2hlZFJlc291cmNl
SGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB+Q2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlKCkgeyBpZiAobV9yZXNvdXJjZSkgbV9yZXNvdXJjZS0+dW5yZWdpc3RlckhhbmRsZSh0aGlz
KTsgfQpAQCAtNDEsNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVk
ZWYgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGU7CiAgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlID8gJkNhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6bV9yZXNvdXJj
ZSA6IDA7IH0KIAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlKCkgOiBtX3Jlc291cmNlKDApIHt9CiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZShDYWNoZWRSZXNvdXJjZSogcmVzKSB7IG1fcmVzb3VyY2UgPSByZXM7IGlmIChtX3Jlc291
cmNlKSBtX3Jlc291cmNlLT5yZWdpc3RlckhhbmRsZSh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOWE4
ODcyNGExNTBkMWFlNmU0YTg1MGExMThhOWM0ZjM4ZWVlOWUxZi4uMjVhYjU2MDEzODk4NGNlYzVh
ZGMwMjVjMGU4ODA2MGE5ODFjYTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NzcsNSArODc3LDE4IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50UHJlbG9hZFN0YXRzKCkKICAgICAgICAgcHJp
bnRmKCJJTUFHRVM6ICAlZCAoJWQgaGl0cywgaGl0IHJhdGUgJWQlJSlcbiIsIGltYWdlcywgaW1h
Z2VzIC0gaW1hZ2VNaXNzZXMsIChpbWFnZXMgLSBpbWFnZU1pc3NlcykgKiAxMDAgLyBpbWFnZXMp
OwogfQogI2VuZGlmCi0gICAgCisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFJlc291cmNlTG9hZGVyPiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyKTsKKyAgICBpbmZvLmFk
ZEhhc2hNYXAobV9kb2N1bWVudFJlc291cmNlcyk7CisgICAgZm9yIChEb2N1bWVudFJlc291cmNl
TWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9kb2N1bWVudFJlc291cmNlcy5iZWdpbigpOyBpICE9
IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7ICsraSkgeworICAgICAgICBpbmZvLmFkZE1lbWJl
cihpLT5maXJzdCk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGktPnNlY29u
ZCk7CisgICAgfQorICAgIGluZm8uYWRkSGFzaFNldChtX3ZhbGlkYXRlZFVSTHMpOworICAgIGlu
Zm8uYWRkTGlzdEhhc2hTZXQoKm1fcHJlbG9hZHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcGVu
ZGluZ1ByZWxvYWRzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ZWViMzg3MWYwM2I0MGY4NjA5ODAwMTU0
NjgxYzViMDU2ZDNhY2I1Li4zZjFjMjMzYjAwOGRmODQwMWE4YzFhYmExMTgxNzVkYTdkODBmYjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBLVVJMOworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsK
IAogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhlIGxvYWRpbmcgb2Ygc2Ny
aXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIgewpAQCAtMTE5LDYgKzEyMCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByaW50UHJlbG9hZFN0YXRzKCk7CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNl
OjpUeXBlLCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAorICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2
YXRlOgogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0g
ZmFsc2UpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlk
YXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBmMDNmYWRiNTdhOGFkMjNmNmYzMDE4NGYx
YWEwMDEyNDVlODA3YjM5Li5lYzY3N2Y4MzgwMTliZDZmZTVjZGQ0NTg2NWIzODdhZDg4MDg2OTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTcxLDYgKzcxLDE0IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmRhdGEoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkCiAgICAgY2hl
Y2tOb3RpZnkoKTsKIH0KIAordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88Q2FjaGVkU1ZHRG9jdW1lbnQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNWRyk7CisgICAgQ2FjaGVk
UmVzb3VyY2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fZG9jdW1lbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
ZGVjb2Rlcik7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGIwNWVmNjdkMWM0MjcxYWEwNDhkY2EyYzRh
MmE2NTk3NjUxNDA1MDAuLjU0ZDVhODg4MTJmNWY2ZjcyY2Y1YzUxMzA0MTM0NmZhZmFiZTk2ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IDA4NmZhMWIzYmQ2MDU2ZDM2MWQ1NDRkMDc0N2E3ZTFlMjBi
N2VkZWYuLjViY2IzYjZiZTQ5ZDkwYTJhNmJkMTY1ZDRmODNhYmVlODA3YWU2OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVk
ZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTEyNiw0ICsxMjcsMTUgQEAgdm9pZCBDYWNoZWRTY3JpcHQ6OnNvdXJjZVByb3ZpZGVyQ2Fj
aGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpCiB9CiAjZW5kaWYKIAordm9pZCBDYWNoZWRTY3JpcHQ6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENhY2hlZFNjcmlwdD4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2NyaXB0
KTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgaW5mby5hZGRNZW1iZXIobV9zY3JpcHQpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
ZGVjb2Rlcik7CisjaWYgVVNFKEpTQykKKyAgICBpbmZvLmFkZE1lbWJlcihtX3NvdXJjZVByb3Zp
ZGVyQ2FjaGUpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5YTRmMzhhZDBiM2Y3YmZl
MzFlNzQ3ODc3ZDRjZWY1Njk0MjU4MmJiLi4zZGY2YmU5MzgyNDNiODVhZDZmOTk0ZjZiN2M4OTRk
ZGQzMDZmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgY2xhc3MgTWVtb3J5T2JqZWN0
SW5mbzsKICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiAgICAgY2xhc3MgQ2FjaGVk
U2NyaXB0IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTU3LDYgKzU4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGUqIHNvdXJjZVBy
b3ZpZGVyQ2FjaGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzb3VyY2VQcm92aWRlckNhY2hlU2l6
ZUNoYW5nZWQoaW50IGRlbHRhKTsKICNlbmRpZgorCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNv
bnN0IHsgcmV0dXJuIFB1cmdlTGFzdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTaGFkZXIuY3BwCmluZGV4IGI4ZDdjNWY5YTg4OTUwOWU0ODlkODNkZTIxNTA3ODNi
Njg4MGMwM2QuLjVhZjljNTRiNWUxYWM2YzBiOWMwN2UyZDUxNmE5MzBkMmM1Y2QyM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogCiAjaW5jbHVkZSAiQ2FjaGVkU2hhZGVy
LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY3LDYgKzY4LDE0IEBAIHZvaWQgQ2FjaGVkU2hh
ZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwog
fQogCit2b2lkIENhY2hlZFNoYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q2FjaGVk
U2hhZGVyPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIpOworICAgIENhY2hlZFJlc291cmNlOjpyZXBvcnRNZW1v
cnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2RlY29kZXIp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fc2hhZGVyU3RyaW5nKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oCmluZGV4IGQxZGUxNGQ3NzVmMzgwZWU1YjNh
M2U5MzU0YmEwZjdlOTkwODZkNzQuLjQyODY3NzBhZGNmODExYWQ4NGUyZTRhMWQwM2I5OTUxYzk1
M2JhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgKQEAg
LTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmpl
Y3RJbmZvOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgQ2FjaGVkU2hhZGVy
IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgc2hhZGVyU3RyaW5nKCk7CiAgICAgdm9pZCBkYXRhKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIAorICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7
CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ICAgICBTdHJpbmcgbV9zaGFkZXJTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggMzM2ZmNlNGFjNjBmZjMzODM3
NDA1ZThiZWJlMTcxZGQ4NGJmY2EyMi4uMzNjOTYxMjk4Y2NlMTBmMDA5MmYyMTdjZGY0NTAzZWMy
YWY2NGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmgi
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTk2LDYgKzk3LDE0IEBAIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZXJy
b3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiAgICAgY2hlY2tOb3RpZnkoKTsKIH0K
IAordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxD
YWNoZWRYU0xTdHlsZVNoZWV0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VYU0xUKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6
cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIo
bV9zaGVldCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kZWNvZGVyKTsKK30KKwogI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oCmluZGV4IGI4ZjcyODNkMzY0OTI5ZjI4NTZlYTU4YTI3ZTA3N2Q4NDhmMjhhNmIuLjJhYThk
ZmEyNTEzMmY4MjI2NzRlNjgxMmI2MDRiMWNlNzM3YWQyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtMzIsNiArMzIsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CisgICAgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKICAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogCiAjaWYgRU5BQkxFKFhTTFQpCkBAIC01MCw2ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgY2hlY2tOb3RpZnkoKTsKICAgICAgICAgCisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3QgT1ZFUlJJREU7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cmluZyBtX3NoZWV0
OwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNWRjMDQ3NDAyY2Iz
ZDc0OGVkOTczNDc5ZTY0MjI4NzU5Mzc4ODkyZC4uMmNlMmMzZjUxNTMyMDMwMDFiZjFmZWExMGRi
NDcwMDEwOTc0YWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgpAQCAtNzE0LDYg
KzcxNSwxOSBAQCBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlz
dGljcygpCiAgICAgcmV0dXJuIHN0YXRzOwogfQogCit2b2lkIE1lbW9yeUNhY2hlOjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorewor
ICAgIE1lbW9yeUNsYXNzSW5mbzxNZW1vcnlDYWNoZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyk7CisgICAg
aW5mby5hZGRIYXNoTWFwKG1fcmVzb3VyY2VzKTsKKyAgICBDYWNoZWRSZXNvdXJjZU1hcDo6Y29u
c3RfaXRlcmF0b3IgZSA9IG1fcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoQ2FjaGVkUmVzb3Vy
Y2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsr
aSkgeworICAgICAgICBpbmZvLmFkZE1lbWJlcihpLT5maXJzdCk7CisgICAgICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKGktPnNlY29uZCk7CisgICAgfQorICAgIGluZm8uYWRkVmVjdG9y
KG1fYWxsUmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2xpdmVEZWNvZGVkUmVzb3Vy
Y2VzKTsKK30KKwogdm9pZCBNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
IHsKICAgICBtX2Rpc2FibGVkID0gZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCmluZGV4IDZmOTgzMjY2MjI4MjI0YTM5NjAzNTI0NDQyNDgzNGI1NDM2
YmM3MTEuLjVhMmY5NDk1ZTgxNThmZmNmY2IwOTEwNzA4MzczZDcxNzAxZjczYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgS1VSTDsKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoOwpAQCAtMTY4LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBsaXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KICAgICB1
bnNpZ25lZCBkZWFkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAorICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRl
OgogICAgIE1lbW9yeUNhY2hlKCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1l
bnRlZCB0byBtYWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2Vi
Q29yZSBkb2VzIG5vdCBkZWxldGUgc2luZ2xldG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHVyZ2VhYmxlQnVmZmVyLmgKaW5kZXggNDY4YjkyYjI1MTJiOGJmOGI3MDQ1YTI3NjFmMDgwZDkw
MDA0ZDM0MS4uODM0MjI0MWQ0Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwog
ICAgIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFB1cmdlYWJsZUJ1ZmZlcik7CiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgd2FzUHVyZ2VkKCkgY29uc3Q7CiAKICAgICAgICAg
Ym9vbCBtYWtlUHVyZ2VhYmxlKGJvb2wgcHVyZ2VhYmxlKTsKLSAgICAgICAgCisKICAgICBwcml2
YXRlOgogICAgICAgICBQdXJnZWFibGVCdWZmZXIoY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAK
</data>
<flag name="review"
          id="166342"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>