<?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>81153</bug_id>
          
          <creation_ts>2012-03-14 13:45:02 -0700</creation_ts>
          <short_desc>WebKit2: create sandbox extensions for files that are dropped in an input control</short_desc>
          <delta_ts>2012-03-23 09:35:07 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578725</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 13:45:02 -0700</bug_when>
    <thetext>This bug track the work required to create the sandbox extensions needed to upload files to input controls.

&lt;rdar://problem/11031207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578736</commentid>
    <comment_count>1</comment_count>
      <attachid>131916</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 13:57:15 -0700</bug_when>
    <thetext>Created attachment 131916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578753</commentid>
    <comment_count>2</comment_count>
      <attachid>131916</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-14 14:11:33 -0700</bug_when>
    <thetext>Comment on attachment 131916
Patch

Attachment 131916 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11957191</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578778</commentid>
    <comment_count>3</comment_count>
      <attachid>131916</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 14:29:17 -0700</bug_when>
    <thetext>Comment on attachment 131916
Patch

Attachment 131916 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11957198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578818</commentid>
    <comment_count>4</comment_count>
      <attachid>131916</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2012-03-14 15:02:26 -0700</bug_when>
    <thetext>Comment on attachment 131916
Patch

r- so you can fix the EWS warnings for QT and Win bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578836</commentid>
    <comment_count>5</comment_count>
      <attachid>131929</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 15:15:05 -0700</bug_when>
    <thetext>Created attachment 131929
Patch2

Fixes the Qt and Win builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578838</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 15:19:43 -0700</bug_when>
    <thetext>Attachment 131929 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/Shared/SandboxExtension.h:77:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578842</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 15:22:39 -0700</bug_when>
    <thetext>Will fix the style issue before landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578853</commentid>
    <comment_count>8</comment_count>
      <attachid>131929</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-14 15:27:53 -0700</bug_when>
    <thetext>Comment on attachment 131929
Patch2

Attachment 131929 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11957247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578874</commentid>
    <comment_count>9</comment_count>
      <attachid>131929</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-14 15:54:01 -0700</bug_when>
    <thetext>Comment on attachment 131929
Patch2

Attachment 131929 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11956301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578895</commentid>
    <comment_count>10</comment_count>
      <attachid>131949</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 16:09:54 -0700</bug_when>
    <thetext>Created attachment 131949
Patch3

One more attempt at fixing the QT, win and gtk builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578920</commentid>
    <comment_count>11</comment_count>
      <attachid>131949</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 16:35:13 -0700</bug_when>
    <thetext>Comment on attachment 131949
Patch3

Attachment 131949 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11953492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578929</commentid>
    <comment_count>12</comment_count>
      <attachid>131949</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-14 16:43:02 -0700</bug_when>
    <thetext>Comment on attachment 131949
Patch3

Attachment 131949 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11953502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578944</commentid>
    <comment_count>13</comment_count>
      <attachid>131960</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-14 16:55:13 -0700</bug_when>
    <thetext>Created attachment 131960
Patch4

One more try...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579107</commentid>
    <comment_count>14</comment_count>
      <attachid>131960</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-14 21:10:40 -0700</bug_when>
    <thetext>Comment on attachment 131960
Patch4

Attachment 131960 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11957428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579993</commentid>
    <comment_count>15</comment_count>
      <attachid>131960</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-03-15 18:19:17 -0700</bug_when>
    <thetext>Comment on attachment 131960
Patch4

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

The gtk EWS bot is still red, but patch looks good otherwise.

&gt; Source/WebCore/ChangeLog:11
&gt; +        an input type=file element. The extension are created at the time the files

Typo, &quot;extensions&quot;.

&gt; Source/WebKit2/Shared/SandboxExtension.h:86
&gt; +        Handle* m_data;
&gt; +        size_t m_size;

This should be a Vector.

&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:73
&gt; +    if (action != DragDestinationActionUpload)

This would be more clear with an early return + comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580660</commentid>
    <comment_count>16</comment_count>
      <attachid>131960</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-16 10:41:48 -0700</bug_when>
    <thetext>Comment on attachment 131960
Patch4

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

Looks good to me, too. Seems worth posting a patch with comments addressed for final pass.

&gt; Source/WebCore/page/DragActions.h:39
&gt; +        DragDestinationActionUpload  = 8,

It&apos;s quite confusing that this is a bit flag, but it&apos;s only used exclusively. I&apos;m not sure what to suggest to improve the design, but at least a comment seems necessary here.

&gt; Source/WebCore/page/DragActions.h:40
&gt;          DragDestinationActionAny     = UINT_MAX

What are the checks that match action to DragDestinationActionAny? Is it OK that we now have an additional action that&apos;s matching DragDestinationActionAny?

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Now the the pasteboard access is performed only in the UI process, it is

Typo &quot;the the&quot;.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        necessary to create sanbox extensions for each file that is dropped into

Typo: &quot;sanbox&quot;.

&gt; Source/WebKit2/Shared/SandboxExtension.h:115
&gt; +inline const SandboxExtension::Handle&amp; SandboxExtension::HandleArray::operator[](size_t) const { return *m_data; }
&gt; +inline SandboxExtension::Handle&amp; SandboxExtension::HandleArray::operator[](size_t) { return *m_data; }

This dereferences null, which is a bug.

&gt; Source/WebKit2/Shared/mac/SandboxExtensionMac.mm:145
&gt; +    for (size_t i = 0; i &lt; size; i++)
&gt; +        decoder-&gt;decode(handles[i]);

Shouldn&apos;t this also check decoding result?

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:866
&gt; +    SandboxExtension::HandleArray sandboxExtensionHandleArray;

I like to use more descriptive names in such cases. Maybe &quot;emptyArray&quot;? Ditto below.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1697
&gt; +    handles.reserve([files count]);
&gt; +    for (unsigned int i = 0; i &lt; [files count]; i++) {

s/unsigned int/unsigned/.

The name &quot;reserve&quot; is incorrect here. Reserving space in a container doesn&apos;t change its size, so handles[i] would still be a mistake after this reserve().

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1700
&gt; +        if (![[NSFileManager defaultManager] fileExistsAtPath:file])
&gt; +            continue;

Does this return YES for directories too? It&apos;s legitimate to drop directories (especially bundles).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582257</commentid>
    <comment_count>17</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-19 14:34:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 131960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131960&amp;action=review
&gt; 
&gt; The gtk EWS bot is still red, but patch looks good otherwise.
&gt; 

Uploading a new patch that should fix that too. I missed it last time.

&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        an input type=file element. The extension are created at the time the files
&gt; 
&gt; Typo, &quot;extensions&quot;.
&gt;
Done. 
&gt; &gt; Source/WebKit2/Shared/SandboxExtension.h:86
&gt; &gt; +        Handle* m_data;
&gt; &gt; +        size_t m_size;
&gt; 
&gt; This should be a Vector.

It cannot be a vector because Handle is non copyable.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:73
&gt; &gt; +    if (action != DragDestinationActionUpload)
&gt; 
&gt; This would be more clear with an early return + comment.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582314</commentid>
    <comment_count>18</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-19 15:22:30 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 131960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131960&amp;action=review
&gt; 
&gt; Looks good to me, too. Seems worth posting a patch with comments addressed for final pass.
&gt; 
&gt; &gt; Source/WebCore/page/DragActions.h:39
&gt; &gt; +        DragDestinationActionUpload  = 8,
&gt; 
&gt; It&apos;s quite confusing that this is a bit flag, but it&apos;s only used exclusively. I&apos;m not sure what to suggest to improve the design, but at least a comment seems necessary here.
&gt;

It was a bit flag already, I&apos;ve only added one value.
 
&gt; &gt; Source/WebCore/page/DragActions.h:40
&gt; &gt;          DragDestinationActionAny     = UINT_MAX
&gt; 
&gt; What are the checks that match action to DragDestinationActionAny? Is it OK that we now have an additional action that&apos;s matching DragDestinationActionAny?

Sorry, but I don&apos;t get this. DragDestinationAny was already UINT_MAX and has not changed. Could you explain?

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Now the the pasteboard access is performed only in the UI process, it is
&gt; 
&gt; Typo &quot;the the&quot;.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        necessary to create sanbox extensions for each file that is dropped into
&gt; 
&gt; Typo: &quot;sanbox&quot;.
&gt; 

All done.

&gt; &gt; Source/WebKit2/Shared/SandboxExtension.h:115
&gt; &gt; +inline const SandboxExtension::Handle&amp; SandboxExtension::HandleArray::operator[](size_t) const { return *m_data; }
&gt; &gt; +inline SandboxExtension::Handle&amp; SandboxExtension::HandleArray::operator[](size_t) { return *m_data; }
&gt; 
&gt; This dereferences null, which is a bug.
Fixed.
&gt; 
&gt; &gt; Source/WebKit2/Shared/mac/SandboxExtensionMac.mm:145
&gt; &gt; +    for (size_t i = 0; i &lt; size; i++)
&gt; &gt; +        decoder-&gt;decode(handles[i]);
&gt; 
&gt; Shouldn&apos;t this also check decoding result?
&gt; 
Yes, done.
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:866
&gt; &gt; +    SandboxExtension::HandleArray sandboxExtensionHandleArray;
&gt; 
&gt; I like to use more descriptive names in such cases. Maybe &quot;emptyArray&quot;? Ditto below.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1697
&gt; &gt; +    handles.reserve([files count]);
&gt; &gt; +    for (unsigned int i = 0; i &lt; [files count]; i++) {
&gt; 
&gt; s/unsigned int/unsigned/.
&gt; 

ok.
&gt; The name &quot;reserve&quot; is incorrect here. Reserving space in a container doesn&apos;t change its size, so handles[i] would still be a mistake after this reserve().
Ok, I&apos;ll change it to resize.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1700
&gt; &gt; +        if (![[NSFileManager defaultManager] fileExistsAtPath:file])
&gt; &gt; +            continue;
&gt; 
&gt; Does this return YES for directories too? It&apos;s legitimate to drop directories (especially bundles).
Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582322</commentid>
    <comment_count>19</comment_count>
      <attachid>132686</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-19 15:28:42 -0700</bug_when>
    <thetext>Created attachment 132686
Patch5

Fixes gtk build and addresses comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582327</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 15:31:28 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582436</commentid>
    <comment_count>21</comment_count>
      <attachid>132686</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-19 16:37:55 -0700</bug_when>
    <thetext>Comment on attachment 132686
Patch5

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

&gt; Sorry, but I don&apos;t get this. DragDestinationAny was already UINT_MAX and has not changed. Could you explain?

Had a look at this with Enrica. All these values are actually exclusive. The reason this is a bitmap is that clients provide allowed actions in the form of a single value. Eventually, it may be better to decouple WebKit1 API from WebCore logic here, and have more sensible DragAction.h.

Enrica is going to improve comments when landing.

&gt; Source/WebKit2/Shared/mac/SandboxExtensionMac.mm:111
&gt; +void SandboxExtension::HandleArray::resize(size_t size)
&gt; +{
&gt; +    if (!size)
&gt; +        return;
&gt; +
&gt; +    if (m_data)
&gt; +        delete[] m_data;
&gt; +
&gt; +    m_data = new SandboxExtension::Handle[size];
&gt; +    m_size = size;
&gt; +}

This is not a proper resize - a resize doesn&apos;t delete original data. Please rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586148</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-23 00:29:26 -0700</bug_when>
    <thetext>It seems like this patch broke editing/pasteboard/dataTransfer-setData-getData.html on Snow Leopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r111825%20(38164)/results.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=editing%2Fpasteboard%2FdataTransfer-setData-getData.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586420</commentid>
    <comment_count>23</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-03-23 09:35:07 -0700</bug_when>
    <thetext>I will look into it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131916</attachid>
            <date>2012-03-14 13:57:15 -0700</date>
            <delta_ts>2012-03-14 15:15:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>lastpasteboard.txt</filename>
            <type>text/plain</type>
            <size>26197</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogY3JlYXRlIHNh
bmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBhbiBpbnB1dCBj
b250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgdGhlIHBhc3RlYm9hcmQg
YWNjZXNzIGlzIHBlcmZvcm1lZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzLCBpdCBpcworICAgICAg
ICBuZWNlc3NhcnkgdG8gY3JlYXRlIHNhbmJveCBleHRlbnNpb25zIGZvciBlYWNoIGZpbGUgdGhh
dCBpcyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1lbnQuIFRo
ZSBleHRlbnNpb24gYXJlIGNyZWF0ZWQgYXQgdGhlIHRpbWUgdGhlIGZpbGVzCisgICAgICAgIGFy
ZSBkcm9wcGVkIGFuZCBjb25zdW1lZCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIHBhZ2UvRHJh
Z0FjdGlvbnMuaDogQWRkZWQgbmV3IGRyYWcgYWN0aW9uIHRvIGJlIHVzZWQgYnkgdGhlIFdlYkRy
YWdDbGllbnQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6IEFkZGVkIGNhbGwgdG8g
dGhlIGRyYWcgY2xpZW50IHdpdGggdGhlIG5ldyBhY3Rpb24uCisKIDIwMTItMDMtMTQgIFphbGFu
IEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgogCiAgICAgICAgIEZyYW1lIGZsYXR0ZW5pbmcg
QVNTRVJUKCFuZWVkc0xheW91dCgpKSBpbiBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhU
TUwgICA9IDEsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkICAgID0gNCwKKyAgICAgICAgRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uVXBsb2FkICA9IDgsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSAgICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMDc0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzAsNiArNDcwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
ZyhEcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGZpbGVJbnB1dC0+cmVj
ZWl2ZURyb3BwZWRGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uVXBsb2FkLCBkcmFn
RGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTYgQEAKKzIwMTItMDMtMTQgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZv
ciBmaWxlcyB0aGF0IGFyZSBkcm9wcGVkIGluIGFuIGlucHV0IGNvbnRyb2wuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE1MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTEwMzEyMDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm93IHRoZSB0aGUgcGFzdGVib2FyZCBhY2Nlc3MgaXMgcGVyZm9ybWVk
IG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisgICAgICAgIG5lY2Vzc2FyeSB0byBjcmVh
dGUgc2FuYm94IGV4dGVuc2lvbnMgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGRyb3BwZWQgaW50bwor
ICAgICAgICBhbiBpbnB1dCB0eXBlPWZpbGUgZWxlbWVudC4gVGhlIGV4dGVuc2lvbiBhcmUgY3Jl
YXRlZCBhdCB0aGUgdGltZSB0aGUgZmlsZXMKKyAgICAgICAgYXJlIGRyb3BwZWQgYW5kIGNvbnN1
bWVkIGltbWVkaWF0ZWx5LgorICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6IEFk
ZGVkIHRlbXBsYXRlIHRoYXQgdGFrZXMgOCBhcmd1bWVudHMuCisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKEhhbmRsZUFycmF5KTogQWRkZWQgbmV3IGNsYXNz
IHRvIGhhbmRsZSBhbiBhcnJheSBvZiBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGVzLgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJl
c2VydmUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bTogQWRkZWQgbmV3IGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJlc2VydmUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNh
bmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZCk6CisgICAgICAgICgtW1dLVmlldyBwZXJmb3Jt
RHJhZ09wZXJhdGlvbjpdKTogQWRkZWQgbG9naWMgdG8gY3JlYXRlIHRoZSBzYW5kYm94IGV4dGVu
c2lvbnMgZm9yIGVhY2gKKyAgICAgICAgZmlsZS9kaXJlY3RvcnkgYmVpbmcgZHJvcHBlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOiBBZGRl
ZCB0aGUgaGFuZGxlIGFycmF5IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOiBBZGRlZCBoYW5kbGluZyBvZiB0aGUgbmV3IERyYWdBY3Rpb25V
cGxvYWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFBhdGhuYW1lc0ZvclR5cGUpOiBJbXBsZW1lbnRlZCB1c2luZyBtZXNzYWdlIHRvIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbik6
IEFkZGVkIG1ldGhvZCB0aGF0IGNvbnN1bWVzIHRoZSByZWNlaXZlZCBleHRlbnNpb25zLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDMtMTQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggVUkgcHJvY2VzcyBjcmFz
aCB3aGVuIGEgcGx1Zy1pbiBwcm9jZXNzIGNyYXNoZXMgd2l0aCBhIG1vZGFsIGRpYWxvZyBzaG93
aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1l
c3NhZ2UuaAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEyIEBAIHZv
aWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czcKICAgICAob2JqZWN0LT4qZnVu
Y3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFy
Z3MuYXJndW1lbnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1l
bnQ3KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBQOD4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0
aW9uKGNvbnN0IEFyZ3VtZW50czg8UDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDcsIFA4PiYgYXJn
cywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFy
Z3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1l
bnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1lbnQ3LCBhcmdz
LmFyZ3VtZW50OCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
UDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIFA5LCB0
eXBlbmFtZSBQMTA+CiB2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHMxMDxQ
MSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDgsIFA5LCBQMTA+JiBhcmdzLCBDKiBvYmplY3Qs
IE1GIGZ1bmN0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRl
bnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwyNCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9OwogCisgICAgY2xhc3MgSGFuZGxlQXJyYXkgeworICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShIYW5kbGVBcnJheSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAg
ICAgSGFuZGxlQXJyYXkoKTsKKyAgICAgICAgfkhhbmRsZUFycmF5KCk7CisgICAgICAgIHZvaWQg
cmVzZXJ2ZShzaXplX3Qgc2l6ZSk7CisgICAgICAgIEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3Qg
aSk7CisgICAgICAgIGNvbnN0IEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7Cisg
ICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlQXJyYXkmKTsKKyAgICAgICAKKyAgICBwcml2
YXRlOgorICAgICAgICBIYW5kbGUqIG1fZGF0YTsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZTsKKyAg
ICB9OworICAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGNyZWF0
ZShjb25zdCBIYW5kbGUmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBUeXBlIHR5cGUsIEhhbmRsZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRl
SGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBI
YW5kbGUmKTsKQEAgLTkwLDYgKzEwOCwxNCBAQCBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjpIYW5kbGUoCiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkg
eyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZSYpIHsg
cmV0dXJuIHRydWU7IH0KK2lubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFu
ZGxlQXJyYXkoKSB7IH0KK2lubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhh
bmRsZUFycmF5KCkgeyB9CitpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6cmVzZXJ2ZShzaXplX3QpIHsgfQoraW5saW5lIEhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90KSB7IHJldHVybiAwOyB9CitpbmxpbmUgSGFu
ZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KK2lubGluZSBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OnNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9ICAgIAoraW5saW5lIHZvaWQgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
KSBjb25zdCB7IH0KK2lubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlQXJyYXkmKSB7IHJldHVybiB0
cnVlOyB9CiBpbmxpbmUgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJikgeyByZXR1cm4gMDsgfQogaW5saW5lIHZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBl
LCBIYW5kbGUmKSB7IH0KIGlubGluZSBTdHJpbmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5k
bGUmKSB7cmV0dXJuIFN0cmluZygpO30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtODYsNiArODYsNjYgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29k
ZShDbwogICAgIHJldHVybiB0cnVlOwogfQogCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6SGFuZGxlQXJyYXkoKQorICAgIDogbV9kYXRhKDApCisgICAgLCBtX3NpemUoMCkKK3sKK30K
KworU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6On5IYW5kbGVBcnJheSgpCit7CisgICAg
aWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10gbV9kYXRhOworfQorCit2b2lkIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpyZXNlcnZlKHNpemVfdCBzaXplKQoreworICAgIGlmICgh
c2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRl
W10gbV9kYXRhOworCisgICAgbV9kYXRhID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtz
aXplXTsKKyAgICBtX3NpemUgPSBzaXplOworfQorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKQorewor
ICAgIEFTU0VSVChpIDwgbV9zaXplKTsgICAgCisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKwor
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaSA8IG1fc2l6
ZSk7CisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKworc2l6ZV90IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCit2
b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChz
aXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAg
IGVuY29kZXItPmVuY29kZShtX2RhdGFbaV0pOworICAgIAorfQorCitib29sIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICB1aW50
NjRfdCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaGFuZGxlcy5yZXNlcnZlKHNpemUpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICBkZWNvZGVyLT5kZWNvZGUoaGFuZGxl
c1tpXSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewogICAg
IGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYzLDI3
ICs4NjMsMzAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZShjb25zdAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYWdFbnRlcmVkKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdDb250cm9sbGVyQWN0aW9uRW50ZXJlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkVudGVyZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5h
bWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGVBcnJheSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnVXBkYXRlZChEcmFnRGF0YSogZHJhZ0RhdGEs
IGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvblVwZGF0ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFn
ZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVBcnJheTsKKyAgICBwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb25VcGRhdGVkLCBkcmFnRGF0YSwgZHJh
Z1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlQXJyYXkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSog
ZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRy
YWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5OworICAgIHBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0Rh
dGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZUFycmF5KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKERy
YWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5k
Ym94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKLSAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb25QZXJmb3JtRHJhZywgZHJhZ0RhdGEsIGRyYWdTdG9yYWdl
TmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uUGVyZm9ybURyYWcsIGRyYWdEYXRhLCBkcmFnU3Rv
cmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBs
b2FkKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSogZHJh
Z0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKICAgICBpZiAo
IWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDcgKzg5Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXIKICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShHVEspCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCAqZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7CiAj
ZWxzZQotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdE
YXRhLT5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKCksIGRyYWdTdG9yYWdlTmFtZSwgZHJhZ0RhdGEtPmZsYWdzKCksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS0+Y2xpZW50
UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLT5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ1N0b3JhZ2VOYW1lLCBkcmFnRGF0YS0+ZmxhZ3Mo
KSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpLCBt
X3BhZ2VJRCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsNyArNTE2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZHJhZ0VudGVyZWQoV2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcm
IGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygpKTsKICAgICB2b2lkIGRyYWdVcGRhdGVkKFdlYkNv
cmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7
CiAgICAgdm9pZCBkcmFnRXhpdGVkKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7Ci0gICAgdm9pZCBwZXJmb3JtRHJhZyhXZWJDb3Jl
OjpEcmFnRGF0YSosIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnKFdlYkNvcmU6OkRyYWdE
YXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAg
ICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnU2Vzc2lv
bik7CiAgICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90
IG9wZXJhdGlvbik7CkBAIC04NzYsNyArODc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xl
YXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25z
dCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Jik7CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5Jik7CiAKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxl
U3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg2LDYgKzE2ODYsMjMgQEAgc3RhdGlj
IGJvb2wgbWF5YmVDcmVhdGVTYW5kYm94RXh0ZW5zaW9uRgogICAgIHJldHVybiB0cnVlOwogfQog
CitzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxl
cykKK3sKKyAgICBOU0FycmF5ICp0eXBlcyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsKKyAgICBpZiAo
IVt0eXBlcyBjb250YWluc09iamVjdDpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgTlNBcnJheSAqZmlsZXMgPSBbcGFzdGVib2FyZCBwcm9wZXJ0eUxp
c3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07CisgICAgaGFuZGxlcy5yZXNlcnZlKFtm
aWxlcyBjb3VudF0pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgW2ZpbGVzIGNv
dW50XTsgaSsrKSB7CisgICAgICAgIE5TU3RyaW5nICpmaWxlID0gW2ZpbGVzIG9iamVjdEF0SW5k
ZXg6aV07CisgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmZpbGVdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgaGFuZGxlc1tpXSk7
CisgICAgfQorfQorCiAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIEludFBvaW50IGNsaWVudChbc2VsZiBjb252ZXJ0
UG9pbnQ6W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSBmcm9tVmlldzpuaWxdKTsKQEAg
LTE2OTcsNyArMTcxNCwxMCBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNE
cmFnCiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIF9kYXRhLT5fcGFnZS0+cHJv
Y2VzcygpLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwog
Ci0gICAgX2RhdGEtPl9wYWdlLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7
CisgICAgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgCisg
ICAgX2RhdGEtPl9wYWdlLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nUGFzdGVib2FyZF0gbmFtZV0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hF
eHRlbnNpb25Gb3JVcGxvYWQpOwogCiAgICAgcmV0dXJuIFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsOCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpCiB7CiAg
ICAgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQogICAgICAgICBtX3Bh
Z2UtPndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOworICAgIGVsc2UgaWYg
KGFjdGlvbiA9PSBEcmFnRGVzdGluYXRpb25BY3Rpb25VcGxvYWQpCisgICAgICAgIG1fcGFnZS0+
cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwogfQogCiB2b2lkIFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25z
dCBJbnRQb2ludCYsIENsaXBib2FyZCopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NSwxMSArMTU1LDggQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIC8vIEZJWE1FOiB0aGlzIG5lZWRz
IHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGNvZGUgYmVsb3csIG9uY2Ugd2UgcmVzb2x2ZSB0aGUg
c2FuZGJveGluZyBpc3N1ZS4KLSAgICAvLyBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVz
Rm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6
OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMpLCAwKTsKLSAg
ICAKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFBhdGhuYW1lc0Zv
clR5cGUocGF0aG5hbWVzLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVi
b2FyZFBhdGhuYW1lc0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpX
ZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVz
KSwgMCk7CiB9CiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3RpbwogfQogCiAjZWxzZQotdm9pZCBXZWJQ
YWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwg
dWludDMyX3QgZmxhZ3MsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24oKSkpOwpAQCAtMjEyMSw2ICsyMTIxLDggQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3RpbwogICAgICAgICBBU1NFUlQoIW1fcGVu
ZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJv
eEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hh
bmRsZUFycmF5LnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lv
bnNGb3JGaWxlVXBsb2FkLmFwcGVuZChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpOwogCiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhKTsKIApAQCAtMjEzMCw3ICsyMTMyLDEwIEBAIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW8KICAgICAgICAgICAgIG1fcGVu
ZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBtX3Bl
bmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAgICAgICAgIH0KKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxv
YWQuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZp
bGVVcGxvYWRbaV0tPmludmFsaWRhdGUoKTsKIAorICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5z
aW9uc0ZvckZpbGVVcGxvYWQuY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0y
MTU5LDYgKzIxNjQsMTMgQEAgdm9pZCBXZWJQYWdlOjp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGlu
YQogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZp
bGVVcGxvYWQuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9y
RmlsZVVwbG9hZFtpXS0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CisgICAgbV9wZW5kaW5nRHJvcEV4
dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmNsZWFyKCk7Cit9CisKIFdlYlVuZG9TdGVwKiBXZWJQYWdl
Ojp3ZWJVbmRvU3RlcCh1aW50NjRfdCBzdGVwSUQpCiB7CiAgICAgcmV0dXJuIG1fdW5kb1N0ZXBN
YXAuZ2V0KHN0ZXBJRCkuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzOSwxMSArNDM5
LDEyIEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAg
dm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3Jl
OjpEcmFnRGF0YSk7CiAjZWxzZQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZs
YWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBjb25zdCBXVEY6OlN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICNlbmRpZgogICAgIHZvaWQg
ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKIAogICAgIHZvaWQgd2ls
bFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtVXBs
b2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygp
OwpAQCAtNzY1LDYgKzc2Niw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAK
ICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNp
b247CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IG1fcGVuZGluZ0Ryb3BF
eHRlbnNpb25zRm9yRmlsZVVwbG9hZDsKIAogICAgIGJvb2wgbV9jYW5SdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFFU
KSAmJiAhUExBVEZPUk0oR1RLKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBXVEY6OlN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBv
aW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFnU3RvcmFn
ZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAgICAgRHJhZ0VuZGVkKFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbnMg
Zm9yIGZpbGVzIHRoYXQgYXJlIGRyb3BwZWQgaW4gYW4gaW5wdXQgY29udHJvbC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTUzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMTAzMTIwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAg
ICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6IEF2
b2lkIGNhbGxpbmcgdGhlIGRlbGVnYXRlIHdpdGggdGhlIG5ldyBkcmFnIGFjdGlvbi4KKyAgICAg
ICAgV2Ugd2FudCB0byBhdm9pZCBhbnkgdW53YW50ZWQgc2lkZSBlZmZlY3RzIGZvciB0aGUgV2Vi
S2l0IGNsaWVudHMuCisKIDIwMTItMDMtMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4gJiYgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bHdheXMgZW5hYmxlIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHJl
dmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDggQEAgV2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbAogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmll
dyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb246KFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilhY3Rpb24gZm9yRHJh
Z2dpbmdJbmZvOmRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKV07CisgICAgaWYgKGFjdGlvbiAhPSBE
cmFnRGVzdGluYXRpb25BY3Rpb25VcGxvYWQpCisgICAgICAgIFtbbV93ZWJWaWV3IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86
ZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpXTsKIH0KIAogCg==
</data>
<flag name="review"
          id="135382"
          type_id="1"
          status="-"
          setter="adele"
    />
    <flag name="commit-queue"
          id="135387"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131929</attachid>
            <date>2012-03-14 15:15:05 -0700</date>
            <delta_ts>2012-03-14 16:09:54 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>lastpasteboard.txt</filename>
            <type>text/plain</type>
            <size>26233</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogY3JlYXRlIHNh
bmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBhbiBpbnB1dCBj
b250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgdGhlIHBhc3RlYm9hcmQg
YWNjZXNzIGlzIHBlcmZvcm1lZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzLCBpdCBpcworICAgICAg
ICBuZWNlc3NhcnkgdG8gY3JlYXRlIHNhbmJveCBleHRlbnNpb25zIGZvciBlYWNoIGZpbGUgdGhh
dCBpcyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1lbnQuIFRo
ZSBleHRlbnNpb24gYXJlIGNyZWF0ZWQgYXQgdGhlIHRpbWUgdGhlIGZpbGVzCisgICAgICAgIGFy
ZSBkcm9wcGVkIGFuZCBjb25zdW1lZCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIHBhZ2UvRHJh
Z0FjdGlvbnMuaDogQWRkZWQgbmV3IGRyYWcgYWN0aW9uIHRvIGJlIHVzZWQgYnkgdGhlIFdlYkRy
YWdDbGllbnQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6IEFkZGVkIGNhbGwgdG8g
dGhlIGRyYWcgY2xpZW50IHdpdGggdGhlIG5ldyBhY3Rpb24uCisKIDIwMTItMDMtMTQgIFphbGFu
IEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgogCiAgICAgICAgIEZyYW1lIGZsYXR0ZW5pbmcg
QVNTRVJUKCFuZWVkc0xheW91dCgpKSBpbiBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhU
TUwgICA9IDEsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkICAgID0gNCwKKyAgICAgICAgRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uVXBsb2FkICA9IDgsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSAgICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMDc0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzAsNiArNDcwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
ZyhEcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGZpbGVJbnB1dC0+cmVj
ZWl2ZURyb3BwZWRGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uVXBsb2FkLCBkcmFn
RGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTYgQEAKKzIwMTItMDMtMTQgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZv
ciBmaWxlcyB0aGF0IGFyZSBkcm9wcGVkIGluIGFuIGlucHV0IGNvbnRyb2wuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE1MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTEwMzEyMDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm93IHRoZSB0aGUgcGFzdGVib2FyZCBhY2Nlc3MgaXMgcGVyZm9ybWVk
IG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisgICAgICAgIG5lY2Vzc2FyeSB0byBjcmVh
dGUgc2FuYm94IGV4dGVuc2lvbnMgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGRyb3BwZWQgaW50bwor
ICAgICAgICBhbiBpbnB1dCB0eXBlPWZpbGUgZWxlbWVudC4gVGhlIGV4dGVuc2lvbiBhcmUgY3Jl
YXRlZCBhdCB0aGUgdGltZSB0aGUgZmlsZXMKKyAgICAgICAgYXJlIGRyb3BwZWQgYW5kIGNvbnN1
bWVkIGltbWVkaWF0ZWx5LgorICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6IEFk
ZGVkIHRlbXBsYXRlIHRoYXQgdGFrZXMgOCBhcmd1bWVudHMuCisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKEhhbmRsZUFycmF5KTogQWRkZWQgbmV3IGNsYXNz
IHRvIGhhbmRsZSBhbiBhcnJheSBvZiBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGVzLgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJl
c2VydmUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bTogQWRkZWQgbmV3IGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJlc2VydmUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNh
bmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZCk6CisgICAgICAgICgtW1dLVmlldyBwZXJmb3Jt
RHJhZ09wZXJhdGlvbjpdKTogQWRkZWQgbG9naWMgdG8gY3JlYXRlIHRoZSBzYW5kYm94IGV4dGVu
c2lvbnMgZm9yIGVhY2gKKyAgICAgICAgZmlsZS9kaXJlY3RvcnkgYmVpbmcgZHJvcHBlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOiBBZGRl
ZCB0aGUgaGFuZGxlIGFycmF5IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOiBBZGRlZCBoYW5kbGluZyBvZiB0aGUgbmV3IERyYWdBY3Rpb25V
cGxvYWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFBhdGhuYW1lc0ZvclR5cGUpOiBJbXBsZW1lbnRlZCB1c2luZyBtZXNzYWdlIHRvIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbik6
IEFkZGVkIG1ldGhvZCB0aGF0IGNvbnN1bWVzIHRoZSByZWNlaXZlZCBleHRlbnNpb25zLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDMtMTQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggVUkgcHJvY2VzcyBjcmFz
aCB3aGVuIGEgcGx1Zy1pbiBwcm9jZXNzIGNyYXNoZXMgd2l0aCBhIG1vZGFsIGRpYWxvZyBzaG93
aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1l
c3NhZ2UuaAkocmV2aXNpb24gMTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDEyIEBAIHZv
aWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czcKICAgICAob2JqZWN0LT4qZnVu
Y3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFy
Z3MuYXJndW1lbnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1l
bnQ3KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBQOD4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0
aW9uKGNvbnN0IEFyZ3VtZW50czg8UDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDcsIFA4PiYgYXJn
cywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFy
Z3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1l
bnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1lbnQ3LCBhcmdz
LmFyZ3VtZW50OCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
UDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIFA5LCB0
eXBlbmFtZSBQMTA+CiB2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHMxMDxQ
MSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDgsIFA5LCBQMTA+JiBhcmdzLCBDKiBvYmplY3Qs
IE1GIGZ1bmN0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRl
bnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwyNCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9OwogCisgICAgY2xhc3MgSGFuZGxlQXJyYXkgeworICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShIYW5kbGVBcnJheSk7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAg
ICAgSGFuZGxlQXJyYXkoKTsKKyAgICAgICAgfkhhbmRsZUFycmF5KCk7CisgICAgICAgIHZvaWQg
cmVzZXJ2ZShzaXplX3Qgc2l6ZSk7CisgICAgICAgIEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3Qg
aSk7CisgICAgICAgIGNvbnN0IEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7Cisg
ICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlQXJyYXkmKTsKKyAgICAgICAKKyAgICBwcml2
YXRlOgorICAgICAgICBIYW5kbGUqIG1fZGF0YTsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZTsKKyAg
ICB9OworICAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGNyZWF0
ZShjb25zdCBIYW5kbGUmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBUeXBlIHR5cGUsIEhhbmRsZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRl
SGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBI
YW5kbGUmKTsKQEAgLTkwLDYgKzEwOCwxNCBAQCBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjpIYW5kbGUoCiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkg
eyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZSYpIHsg
cmV0dXJuIHRydWU7IH0KK2lubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFu
ZGxlQXJyYXkoKSB7IH0KK2lubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhh
bmRsZUFycmF5KCkgeyB9CitpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6cmVzZXJ2ZShzaXplX3QpIHsgfQoraW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90KSB7IHJldHVy
biAwOyB9CitpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QpIGNvbnN0IHsgcmV0dXJuIDA7IH0KK2lu
bGluZSBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUoKSBjb25zdCB7
IHJldHVybiAwOyB9ICAgIAoraW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0KK2lubGluZSBi
b29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiwgSGFuZGxlQXJyYXkmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgUGFzc1Jl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFu
ZGxlJikgeyByZXR1cm4gMDsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7IH0KIGlubGlu
ZSBTdHJpbmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7cmV0dXJuIFN0cmluZygp
O30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0JKHJldmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNjYgQEAg
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShDbwogICAgIHJldHVybiB0cnVl
OwogfQogCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKQorICAg
IDogbV9kYXRhKDApCisgICAgLCBtX3NpemUoMCkKK3sKK30KKworU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6On5IYW5kbGVBcnJheSgpCit7CisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAg
ZGVsZXRlW10gbV9kYXRhOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpyZXNlcnZlKHNpemVfdCBzaXplKQoreworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10gbV9kYXRhOworCisgICAgbV9k
YXRhID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXplXTsKKyAgICBtX3NpemUgPSBz
aXplOworfQorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKQoreworICAgIEFTU0VSVChpIDwgbV9zaXpl
KTsgICAgCisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKworY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXpl
X3QgaSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaSA8IG1fc2l6ZSk7CisgICAgcmV0dXJuIG1fZGF0
YVtpXTsKK30KKworc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChzaXplKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgIGVuY29kZXItPmVuY29kZShtX2Rh
dGFbaV0pOworICAgIAorfQorCitib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aGFuZGxlcy5yZXNlcnZlKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKQorICAgICAgICBkZWNvZGVyLT5kZWNvZGUoaGFuZGxlc1tpXSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewogICAgIGlmICghaGFuZGxlLm1fc2FuZGJv
eEV4dGVuc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYzLDI3ICs4NjMsMzAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZShjb25zdAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdF
bnRlcmVkKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUp
CiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uRW50
ZXJlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZUFycmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbkVudGVyZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGVBcnJheSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkcmFnVXBkYXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvblVwZGF0ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRl
bnNpb25IYW5kbGVBcnJheTsKKyAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0Nv
bnRyb2xsZXJBY3Rpb25VcGRhdGVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlQXJyYXkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihEcmFnQ29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5KTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJh
ZyhEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9h
ZCkKIHsKLSAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b25QZXJmb3JtRHJhZywgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uUGVyZm9ybURyYWcsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
biBhY3Rpb24sIERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5h
bWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5k
Ym94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtODk0LDcgKzg5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJh
Z0NvbnRyb2xsZXIKICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oYWN0aW9uLCAqZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7CiAjZWxzZQotICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlv
biwgZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigp
LCBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdTdG9yYWdlTmFt
ZSwgZHJhZ0RhdGEtPmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7
CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEt
Pmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2so
KSwgZHJhZ1N0b3JhZ2VOYW1lLCBkcmFnRGF0YS0+ZmxhZ3MoKSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKIH0K
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTYsNyArNTE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhZ0VudGVy
ZWQoV2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0
cmluZygpKTsKICAgICB2b2lkIGRyYWdVcGRhdGVkKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnRXhpdGVk
KFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJp
bmcoKSk7Ci0gICAgdm9pZCBwZXJmb3JtRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0
cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsK
KyAgICB2b2lkIHBlcmZvcm1EcmFnKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnU2Vzc2lvbik7CiAgICAgdm9pZCBkcmFnRW5k
ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CkBAIC04NzYs
NyArODc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJh
Y2tzKCk7CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCBwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIFdlYkNvcmU6OkRyYWdE
YXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAg
ICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTEwNzQw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjg2LDYgKzE2ODYsMjMgQEAgc3RhdGljIGJvb2wgbWF5YmVDcmVhdGVTYW5k
Ym94RXh0ZW5zaW9uRgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVT
YW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICBOU0FycmF5ICp0
eXBlcyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsKKyAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVj
dDpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNB
cnJheSAqZmlsZXMgPSBbcGFzdGVib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVz
UGJvYXJkVHlwZV07CisgICAgaGFuZGxlcy5yZXNlcnZlKFtmaWxlcyBjb3VudF0pOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgW2ZpbGVzIGNvdW50XTsgaSsrKSB7CisgICAgICAg
IE5TU3RyaW5nICpmaWxlID0gW2ZpbGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIGlmICgh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVdKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBo
YW5kbGU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5k
Ym94RXh0ZW5zaW9uOjpSZWFkT25seSwgaGFuZGxlc1tpXSk7CisgICAgfQorfQorCiAtIChCT09M
KXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwog
ewogICAgIEludFBvaW50IGNsaWVudChbc2VsZiBjb252ZXJ0UG9pbnQ6W2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSBmcm9tVmlldzpuaWxdKTsKQEAgLTE2OTcsNyArMTcxNCwxMCBAQCAt
IChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnCiAgICAgaWYgKGNyZWF0ZWRF
eHRlbnNpb24pCiAgICAgICAgIF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLT53aWxsQWNxdWlyZVVu
aXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogCi0gICAgX2RhdGEtPl9wYWdlLT5w
ZXJmb3JtRHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0g
bmFtZV0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CisgICAgY3JlYXRlU2FuZGJveEV4
dGVuc2lvbnNGb3JGaWxlVXBsb2FkKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSwg
c2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgCisgICAgX2RhdGEtPl9wYWdlLT5wZXJm
b3JtRHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFt
ZV0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwog
CiAgICAgcmV0dXJuIFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24g
MTEwNzQwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpCiB7CiAgICAgaWYgKGFjdGlvbiA9PSBEcmFn
RGVzdGluYXRpb25BY3Rpb25Mb2FkKQogICAgICAgICBtX3BhZ2UtPndpbGxQZXJmb3JtTG9hZERy
YWdEZXN0aW5hdGlvbkFjdGlvbigpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGlu
YXRpb25BY3Rpb25VcGxvYWQpCisgICAgICAgIG1fcGFnZS0+cGVyZm9ybVVwbG9hZERyYWdEZXN0
aW5hdGlvbkFjdGlvbigpOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJh
Z1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2Fy
ZCopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAx
MTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMSArMTU1LDggQEAg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYQogCiB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQogewotICAgIC8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGgg
dGhlIGNvZGUgYmVsb3csIG9uY2Ugd2UgcmVzb2x2ZSB0aGUgc2FuZGJveGluZyBpc3N1ZS4KLSAg
ICAvLyBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUpLAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFt
ZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMpLCAwKTsKLSAgICAKLSAgICBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVzLCBwYXN0
ZWJvYXJkVHlwZSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUo
cGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKIFN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDExMDc0MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3RpbwogfQogCiAjZWxzZQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3Np
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzaywgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQz
Ml90IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Np
b24oKSkpOwpAQCAtMjEyMSw2ICsyMTIxLDggQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3RpbwogICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5z
aW9uKTsKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsr
KQorICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVu
ZChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpOwogCiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRy
YWdEYXRhKTsKIApAQCAtMjEzMCw3ICsyMTMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW8KICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5z
aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVu
c2lvbiA9IG51bGxwdHI7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCisgICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWRbaV0tPmludmFsaWRh
dGUoKTsKIAorICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuY2xl
YXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMTU5LDYgKzIxNjQsMTMgQEAgdm9p
ZCBXZWJQYWdlOjp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYQogICAgIG1fc2FuZGJveEV4dGVu
c2lvblRyYWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fcGVuZGlu
Z0Ryb3BTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cGVy
Zm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKysp
CisgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZFtpXS0+Y29uc3Vt
ZVBlcm1hbmVudGx5KCk7CisgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2Fk
LmNsZWFyKCk7Cit9CisKIFdlYlVuZG9TdGVwKiBXZWJQYWdlOjp3ZWJVbmRvU3RlcCh1aW50NjRf
dCBzdGVwSUQpCiB7CiAgICAgcmV0dXJuIG1fdW5kb1N0ZXBNYXAuZ2V0KHN0ZXBJRCkuZ2V0KCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJl
dmlzaW9uIDExMDc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzOSwxMSArNDM5LDEyIEBAIHB1YmxpYzoKICNlbGlm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSk7CiAjZWxzZQot
ICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBv
c2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFdURjo6
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1
aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrLCBjb25zdCBXVEY6OlN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFn
cywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmKTsKICNlbmRpZgogICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3Qgb3BlcmF0aW9uKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKCk7CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwpAQCAtNzY1LDYgKzc2Niw3IEBA
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKICAgICBSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4gbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb247CisgICAgVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiA+IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9h
ZDsKIAogICAgIGJvb2wgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0
OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKQogI2VuZGlm
CiAjaWYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oR1RLKQot
ICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6
OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlv
biwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFn
U3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdz
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25z
Rm9yVXBsb2FkKQogI2VuZGlmCiAgICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3Bl
cmF0aW9uKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTA3NDApCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wMy0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYktpdDI6IGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGVzIHRoYXQgYXJlIGRy
b3BwZWQgaW4gYW4gaW5wdXQgY29udHJvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAzMTIw
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6IEF2b2lkIGNhbGxpbmcgdGhlIGRlbGVn
YXRlIHdpdGggdGhlIG5ldyBkcmFnIGFjdGlvbi4KKyAgICAgICAgV2Ugd2FudCB0byBhdm9pZCBh
bnkgdW53YW50ZWQgc2lkZSBlZmZlY3RzIGZvciB0aGUgV2ViS2l0IGNsaWVudHMuCisKIDIwMTIt
MDMtMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4gJiYgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgZW5hYmxlIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHJldmlzaW9uIDExMDc0MCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDggQEAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdl
YkRyYWdDbAogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRy
YWdEYXRhKiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246KFdl
YkRyYWdEZXN0aW5hdGlvbkFjdGlvbilhY3Rpb24gZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLT5w
bGF0Zm9ybURhdGEoKV07CisgICAgaWYgKGFjdGlvbiAhPSBEcmFnRGVzdGluYXRpb25BY3Rpb25V
cGxvYWQpCisgICAgICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3
Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEtPnBsYXRmb3JtRGF0
YSgpXTsKIH0KIAogCg==
</data>
<flag name="commit-queue"
          id="135417"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131949</attachid>
            <date>2012-03-14 16:09:54 -0700</date>
            <delta_ts>2012-03-14 16:55:13 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>lastpasteboard.txt</filename>
            <type>text/plain</type>
            <size>26287</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogY3JlYXRlIHNh
bmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBhbiBpbnB1dCBj
b250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgdGhlIHBhc3RlYm9hcmQg
YWNjZXNzIGlzIHBlcmZvcm1lZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzLCBpdCBpcworICAgICAg
ICBuZWNlc3NhcnkgdG8gY3JlYXRlIHNhbmJveCBleHRlbnNpb25zIGZvciBlYWNoIGZpbGUgdGhh
dCBpcyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1lbnQuIFRo
ZSBleHRlbnNpb24gYXJlIGNyZWF0ZWQgYXQgdGhlIHRpbWUgdGhlIGZpbGVzCisgICAgICAgIGFy
ZSBkcm9wcGVkIGFuZCBjb25zdW1lZCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIHBhZ2UvRHJh
Z0FjdGlvbnMuaDogQWRkZWQgbmV3IGRyYWcgYWN0aW9uIHRvIGJlIHVzZWQgYnkgdGhlIFdlYkRy
YWdDbGllbnQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6IEFkZGVkIGNhbGwgdG8g
dGhlIGRyYWcgY2xpZW50IHdpdGggdGhlIG5ldyBhY3Rpb24uCisKIDIwMTItMDMtMTQgIEdyYWNl
IEt1ICA8Z3JhY2VrQGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIEluY29ycmVjdCBoYW5kbGlu
ZyBvZiBzaXplcyBpbiAiZW0iIHdoZW4gZmlyc3QtbGluZSBjaGFuZ2VzIGZvbnQgc2l6ZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkocmV2aXNpb24gMTEwNzcwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhU
TUwgICA9IDEsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkICAgID0gNCwKKyAgICAgICAgRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uVXBsb2FkICA9IDgsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSAgICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMDc3MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzAsNiArNDcwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
ZyhEcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGZpbGVJbnB1dC0+cmVj
ZWl2ZURyb3BwZWRGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uVXBsb2FkLCBkcmFn
RGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTEwNzcwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTYgQEAKKzIwMTItMDMtMTQgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZv
ciBmaWxlcyB0aGF0IGFyZSBkcm9wcGVkIGluIGFuIGlucHV0IGNvbnRyb2wuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE1MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTEwMzEyMDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm93IHRoZSB0aGUgcGFzdGVib2FyZCBhY2Nlc3MgaXMgcGVyZm9ybWVk
IG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisgICAgICAgIG5lY2Vzc2FyeSB0byBjcmVh
dGUgc2FuYm94IGV4dGVuc2lvbnMgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGRyb3BwZWQgaW50bwor
ICAgICAgICBhbiBpbnB1dCB0eXBlPWZpbGUgZWxlbWVudC4gVGhlIGV4dGVuc2lvbiBhcmUgY3Jl
YXRlZCBhdCB0aGUgdGltZSB0aGUgZmlsZXMKKyAgICAgICAgYXJlIGRyb3BwZWQgYW5kIGNvbnN1
bWVkIGltbWVkaWF0ZWx5LgorICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6IEFk
ZGVkIHRlbXBsYXRlIHRoYXQgdGFrZXMgOCBhcmd1bWVudHMuCisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKEhhbmRsZUFycmF5KTogQWRkZWQgbmV3IGNsYXNz
IHRvIGhhbmRsZSBhbiBhcnJheSBvZiBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGVzLgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJl
c2VydmUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bTogQWRkZWQgbmV3IGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJlc2VydmUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNh
bmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZCk6CisgICAgICAgICgtW1dLVmlldyBwZXJmb3Jt
RHJhZ09wZXJhdGlvbjpdKTogQWRkZWQgbG9naWMgdG8gY3JlYXRlIHRoZSBzYW5kYm94IGV4dGVu
c2lvbnMgZm9yIGVhY2gKKyAgICAgICAgZmlsZS9kaXJlY3RvcnkgYmVpbmcgZHJvcHBlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOiBBZGRl
ZCB0aGUgaGFuZGxlIGFycmF5IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOiBBZGRlZCBoYW5kbGluZyBvZiB0aGUgbmV3IERyYWdBY3Rpb25V
cGxvYWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFBhdGhuYW1lc0ZvclR5cGUpOiBJbXBsZW1lbnRlZCB1c2luZyBtZXNzYWdlIHRvIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbik6
IEFkZGVkIG1ldGhvZCB0aGF0IGNvbnN1bWVzIHRoZSByZWNlaXZlZCBleHRlbnNpb25zLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDMtMTQgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUHJvY2VzcyBzb21ldGltZXMg
aGl0cyBhbiBhc3NlcnRpb24gaW4gU2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFBy
b3Zpc2lvbmFsTG9hZCBhZnRlciBydW5uaW5nIHJlZ3Jlc3Npb24gdGVzdHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lv
biAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3Nh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVu
Y3Rpb24oY29uc3QgQXJndW1lbnRzNwogICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1
bWVudDEsIGFyZ3MuYXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFy
Z3MuYXJndW1lbnQ1LCBhcmdzLmFyZ3VtZW50NiwgYXJncy5hcmd1bWVudDcpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5h
bWUgUDcsIHR5cGVuYW1lIFA4Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1l
bnRzODxQMSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDg+JiBhcmdzLCBDKiBvYmplY3QsIE1G
IGZ1bmN0aW9uKQoreworICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFy
Z3MuYXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1l
bnQ1LCBhcmdzLmFyZ3VtZW50NiwgYXJncy5hcmd1bWVudDcsIGFyZ3MuYXJndW1lbnQ4KTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYs
IHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgUDksIHR5cGVuYW1lIFAxMD4KIHZv
aWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czEwPFAxLCBQMiwgUDMsIFA0LCBQ
NSwgUDYsIFA3LCBQOCwgUDksIFAxMD4mIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9u
IDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDI0IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAK
KyAgICBjbGFzcyBIYW5kbGVBcnJheSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhh
bmRsZUFycmF5KTsKKyAgICAgICAgCisgICAgcHVibGljOgorICAgICAgICBIYW5kbGVBcnJheSgp
OworICAgICAgICB+SGFuZGxlQXJyYXkoKTsKKyAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdCk7
CisgICAgICAgIEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSk7CisgICAgICAgIGNvbnN0IEhh
bmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CisgICAgICAgIHNpemVfdCBzaXplKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNv
bnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgSGFuZGxlQXJyYXkmKTsKKyAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBIYW5kbGUq
IG1fZGF0YTsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICB9OworICAgIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKICAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUs
IEhhbmRsZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmKTsKQEAgLTkwLDYgKzEw
OCwxNCBAQCBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUoCiBpbmxpbmUg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBj
b25zdCB7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KK2lubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKSB7IH0KK2lubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KCkgeyB9Citpbmxp
bmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6cmVzZXJ2ZShzaXplX3QpIHsg
fQoraW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90KSBjb25zdCB7IHJldHVybiAqbV9kYXRh
OyB9CitpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QpIHsgcmV0dXJuICptX2RhdGE7IH0KK2lubGlu
ZSBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUoKSBjb25zdCB7IHJl
dHVybiAwOyB9ICAgIAoraW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0KK2lubGluZSBib29s
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgSGFuZGxlQXJyYXkmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgUGFzc1JlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxl
JikgeyByZXR1cm4gMDsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7IH0KIGlubGluZSBT
dHJpbmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7cmV0dXJuIFN0cmluZygpO30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25N
YWMubW0JKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2Fu
ZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNjYgQEAgYm9v
bCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShDbwogICAgIHJldHVybiB0cnVlOwog
fQogCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKQorICAgIDog
bV9kYXRhKDApCisgICAgLCBtX3NpemUoMCkKK3sKK30KKworU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6On5IYW5kbGVBcnJheSgpCit7CisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVs
ZXRlW10gbV9kYXRhOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpy
ZXNlcnZlKHNpemVfdCBzaXplKQoreworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10gbV9kYXRhOworCisgICAgbV9kYXRh
ID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXplXTsKKyAgICBtX3NpemUgPSBzaXpl
OworfQorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKQoreworICAgIEFTU0VSVChpIDwgbV9zaXplKTsg
ICAgCisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKworY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3Qg
aSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaSA8IG1fc2l6ZSk7CisgICAgcmV0dXJuIG1fZGF0YVtp
XTsKK30KKworc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChzaXplKCkpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgIGVuY29kZXItPmVuY29kZShtX2RhdGFb
aV0pOworICAgIAorfQorCitib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNv
ZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaGFu
ZGxlcy5yZXNlcnZlKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KQorICAgICAgICBkZWNvZGVyLT5kZWNvZGUoaGFuZGxlc1tpXSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYzLDI3ICs4NjMsMzAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFZpZXdwb3J0U2l6ZShjb25zdAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbnRl
cmVkKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0g
ICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uRW50ZXJl
ZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFy
cmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
bkVudGVyZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGVBcnJheSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkcmFnVXBkYXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvblVwZGF0ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNp
b25IYW5kbGVBcnJheTsKKyAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRy
b2xsZXJBY3Rpb25VcGRhdGVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlQXJyYXkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZUFycmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnQ29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5KTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZyhE
cmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkK
IHsKLSAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb25Q
ZXJmb3JtRHJhZywgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uUGVyZm9ybURyYWcsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBh
Y3Rpb24sIERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRy
b2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94
RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtODk0LDcgKzg5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXIKICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
YWN0aW9uLCAqZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7CiAjZWxzZQotICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwg
ZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLCBk
cmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdTdG9yYWdlTmFtZSwg
ZHJhZ0RhdGEtPmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7Cisg
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmds
b2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwg
ZHJhZ1N0b3JhZ2VOYW1lLCBkcmFnRGF0YS0+ZmxhZ3MoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTEw
NzcwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MTYsNyArNTE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhZ0VudGVyZWQo
V2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0cmlu
ZygpKTsKICAgICB2b2lkIGRyYWdVcGRhdGVkKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnRXhpdGVkKFdl
YkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmco
KSk7Ci0gICAgdm9pZCBwZXJmb3JtRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAg
ICB2b2lkIHBlcmZvcm1EcmFnKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnU2Vzc2lvbik7CiAgICAgdm9pZCBkcmFnRW5kZWQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CkBAIC04NzYsNyAr
ODc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tz
KCk7CiAKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCBwZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRh
KiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAgICB2
b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTEwNzcwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjg2LDYgKzE2ODYsMjMgQEAgc3RhdGljIGJvb2wgbWF5YmVDcmVhdGVTYW5kYm94
RXh0ZW5zaW9uRgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVTYW5k
Ym94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICBOU0FycmF5ICp0eXBl
cyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsKKyAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpO
U0ZpbGVuYW1lc1Bib2FyZFR5cGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNBcnJh
eSAqZmlsZXMgPSBbcGFzdGVib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJv
YXJkVHlwZV07CisgICAgaGFuZGxlcy5yZXNlcnZlKFtmaWxlcyBjb3VudF0pOworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgW2ZpbGVzIGNvdW50XTsgaSsrKSB7CisgICAgICAgIE5T
U3RyaW5nICpmaWxlID0gW2ZpbGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIGlmICghW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVdKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5k
bGU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94
RXh0ZW5zaW9uOjpSZWFkT25seSwgaGFuZGxlc1tpXSk7CisgICAgfQorfQorCiAtIChCT09MKXBl
cmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewog
ICAgIEludFBvaW50IGNsaWVudChbc2VsZiBjb252ZXJ0UG9pbnQ6W2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ0xvY2F0aW9uXSBmcm9tVmlldzpuaWxdKTsKQEAgLTE2OTcsNyArMTcxNCwxMCBAQCAtIChC
T09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnCiAgICAgaWYgKGNyZWF0ZWRFeHRl
bnNpb24pCiAgICAgICAgIF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLT53aWxsQWNxdWlyZVVuaXZl
cnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogCi0gICAgX2RhdGEtPl9wYWdlLT5wZXJm
b3JtRHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFt
ZV0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CisgICAgY3JlYXRlU2FuZGJveEV4dGVu
c2lvbnNGb3JGaWxlVXBsb2FkKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgc2Fu
ZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgCisgICAgX2RhdGEtPl9wYWdlLT5wZXJmb3Jt
RHJhZygmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0s
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogCiAg
ICAgcmV0dXJuIFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gMTEw
NzcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpCiB7CiAgICAgaWYgKGFjdGlvbiA9PSBEcmFnRGVz
dGluYXRpb25BY3Rpb25Mb2FkKQogICAgICAgICBtX3BhZ2UtPndpbGxQZXJmb3JtTG9hZERyYWdE
ZXN0aW5hdGlvbkFjdGlvbigpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGluYXRp
b25BY3Rpb25VcGxvYWQpCisgICAgICAgIG1fcGFnZS0+cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5h
dGlvbkFjdGlvbigpOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCop
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMTA3
NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMSArMTU1LDggQEAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYQogCiB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIC8vIEZJWE1FOiB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhl
IGNvZGUgYmVsb3csIG9uY2Ugd2UgcmVzb2x2ZSB0aGUgc2FuZGJveGluZyBpc3N1ZS4KLSAgICAv
LyBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUpLAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlOjpSZXBseShwYXRobmFtZXMpLCAwKTsKLSAgICAKLSAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVzLCBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJk
UGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKIFN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDExMDc3MCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA5Niw3ICsyMDk2LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3RpbwogfQogCiAjZWxzZQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaywgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90
IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRf
dCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24o
KSkpOwpAQCAtMjEyMSw2ICsyMTIxLDggQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3RpbwogICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9u
KTsKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKQor
ICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVuZChT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkp
OwogCiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdE
YXRhKTsKIApAQCAtMjEzMCw3ICsyMTMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW8KICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9u
LT5pbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lv
biA9IG51bGxwdHI7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCisgICAgICAg
ICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWRbaV0tPmludmFsaWRhdGUo
KTsKIAorICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuY2xlYXIo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMTU5LDYgKzIxNjQsMTMgQEAgdm9pZCBX
ZWJQYWdlOjp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYQogICAgIG1fc2FuZGJveEV4dGVuc2lv
blRyYWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fcGVuZGluZ0Ry
b3BTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cGVyZm9y
bVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCisg
ICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZFtpXS0+Y29uc3VtZVBl
cm1hbmVudGx5KCk7CisgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmNs
ZWFyKCk7Cit9CisKIFdlYlVuZG9TdGVwKiBXZWJQYWdlOjp3ZWJVbmRvU3RlcCh1aW50NjRfdCBz
dGVwSUQpCiB7CiAgICAgcmV0dXJuIG1fdW5kb1N0ZXBNYXAuZ2V0KHN0ZXBJRCkuZ2V0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzOSwxMSArNDM5LDEyIEBAIHB1YmxpYzoKICNlbGlmIFBM
QVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSk7CiAjZWxzZQotICAg
IHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0
aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBjb25zdCBXVEY6OlN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkmKTsKICNlbmRpZgogICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBv
aW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3Qgb3BlcmF0aW9uKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCk7CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwpAQCAtNzY1LDYgKzc2Niw3IEBAIHBy
aXZhdGU6CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKICAgICBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4gbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb247CisgICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPiA+IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZDsK
IAogICAgIGJvb2wgbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKQogI2VuZGlmCiAj
aWYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oR1RLKQotICAg
IFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFnU3Rv
cmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9y
VXBsb2FkKQogI2VuZGlmCiAgICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBv
c2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0
aW9uKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMy0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YktpdDI6IGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGVzIHRoYXQgYXJlIGRyb3Bw
ZWQgaW4gYW4gaW5wdXQgY29udHJvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAzMTIwNz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6IEF2b2lkIGNhbGxpbmcgdGhlIGRlbGVnYXRl
IHdpdGggdGhlIG5ldyBkcmFnIGFjdGlvbi4KKyAgICAgICAgV2Ugd2FudCB0byBhdm9pZCBhbnkg
dW53YW50ZWQgc2lkZSBlZmZlY3RzIGZvciB0aGUgV2ViS2l0IGNsaWVudHMuCisKIDIwMTItMDMt
MTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4gJiYgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgZW5hYmxlIEVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDggQEAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRy
YWdDbAogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdE
YXRhKiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0g
d2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246KFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbilhY3Rpb24gZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLT5wbGF0
Zm9ybURhdGEoKV07CisgICAgaWYgKGFjdGlvbiAhPSBEcmFnRGVzdGluYXRpb25BY3Rpb25VcGxv
YWQpCisgICAgICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1f
d2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgp
XTsKIH0KIAogCg==
</data>
<flag name="commit-queue"
          id="135441"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131960</attachid>
            <date>2012-03-14 16:55:13 -0700</date>
            <delta_ts>2012-03-19 15:28:42 -0700</delta_ts>
            <desc>Patch4</desc>
            <filename>lastpasteboard.txt</filename>
            <type>text/plain</type>
            <size>28204</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogY3JlYXRlIHNh
bmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBhbiBpbnB1dCBj
b250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgdGhlIHBhc3RlYm9hcmQg
YWNjZXNzIGlzIHBlcmZvcm1lZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzLCBpdCBpcworICAgICAg
ICBuZWNlc3NhcnkgdG8gY3JlYXRlIHNhbmJveCBleHRlbnNpb25zIGZvciBlYWNoIGZpbGUgdGhh
dCBpcyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1lbnQuIFRo
ZSBleHRlbnNpb24gYXJlIGNyZWF0ZWQgYXQgdGhlIHRpbWUgdGhlIGZpbGVzCisgICAgICAgIGFy
ZSBkcm9wcGVkIGFuZCBjb25zdW1lZCBpbW1lZGlhdGVseS4KKworICAgICAgICAqIHBhZ2UvRHJh
Z0FjdGlvbnMuaDogQWRkZWQgbmV3IGRyYWcgYWN0aW9uIHRvIGJlIHVzZWQgYnkgdGhlIFdlYkRy
YWdDbGllbnQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6IEFkZGVkIGNhbGwgdG8g
dGhlIGRyYWcgY2xpZW50IHdpdGggdGhlIG5ldyBhY3Rpb24uCisKIDIwMTItMDMtMTQgIEdyYWNl
IEt1ICA8Z3JhY2VrQGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIEluY29ycmVjdCBoYW5kbGlu
ZyBvZiBzaXplcyBpbiAiZW0iIHdoZW4gZmlyc3QtbGluZSBjaGFuZ2VzIGZvbnQgc2l6ZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkocmV2aXNpb24gMTEwNzcwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhU
TUwgICA9IDEsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkICAgID0gNCwKKyAgICAgICAgRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uVXBsb2FkICA9IDgsCiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSAgICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMDc3MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzAsNiArNDcwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
ZyhEcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGZpbGVJbnB1dC0+cmVj
ZWl2ZURyb3BwZWRGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uVXBsb2FkLCBkcmFn
RGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTEwNzg2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDMtMTQgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZv
ciBmaWxlcyB0aGF0IGFyZSBkcm9wcGVkIGluIGFuIGlucHV0IGNvbnRyb2wuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTE1MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTEwMzEyMDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm93IHRoZSB0aGUgcGFzdGVib2FyZCBhY2Nlc3MgaXMgcGVyZm9ybWVk
IG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisgICAgICAgIG5lY2Vzc2FyeSB0byBjcmVh
dGUgc2FuYm94IGV4dGVuc2lvbnMgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGRyb3BwZWQgaW50bwor
ICAgICAgICBhbiBpbnB1dCB0eXBlPWZpbGUgZWxlbWVudC4gVGhlIGV4dGVuc2lvbiBhcmUgY3Jl
YXRlZCBhdCB0aGUgdGltZSB0aGUgZmlsZXMKKyAgICAgICAgYXJlIGRyb3BwZWQgYW5kIGNvbnN1
bWVkIGltbWVkaWF0ZWx5LgorICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6IEFk
ZGVkIHRlbXBsYXRlIHRoYXQgdGFrZXMgOCBhcmd1bWVudHMuCisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKEhhbmRsZUFycmF5KTogQWRkZWQgbmV3IGNsYXNz
IHRvIGhhbmRsZSBhbiBhcnJheSBvZiBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGVzLgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJl
c2VydmUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bTogQWRkZWQgbmV3IGNsYXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnJlc2VydmUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNh
bmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZCk6CisgICAgICAgICgtW1dLVmlldyBwZXJmb3Jt
RHJhZ09wZXJhdGlvbjpdKTogQWRkZWQgbG9naWMgdG8gY3JlYXRlIHRoZSBzYW5kYm94IGV4dGVu
c2lvbnMgZm9yIGVhY2gKKyAgICAgICAgZmlsZS9kaXJlY3RvcnkgYmVpbmcgZHJvcHBlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOiBBZGRl
ZCB0aGUgaGFuZGxlIGFycmF5IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZURyb3BFdmVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6RHJvcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24pOiBBZGRlZCBoYW5kbGluZyBvZiB0aGUgbmV3IERyYWdBY3Rp
b25VcGxvYWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBhdGhuYW1lc0ZvclR5cGUpOiBJbXBsZW1lbnRlZCB1c2luZyBtZXNzYWdlIHRvIHRoZSBV
SSBwcm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlv
bik6IEFkZGVkIG1ldGhvZCB0aGF0IGNvbnN1bWVzIHRoZSByZWNlaXZlZCBleHRlbnNpb25zLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDMtMTMgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIE5PVElGSUNBVElPTlMgYW5k
IExFR0FDWV9OT1RJRklDQVRJT05TCkBAIC04NTEsNyArOTA4LDYgQEAKIAogICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgogCi0+Pj4+Pj4+IC5yMTEwMzUy
CiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgU25vdyBMZW9wYXJkIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAxMTA3NzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29u
c3QgQXJndW1lbnRzNwogICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFy
Z3MuYXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1l
bnQ1LCBhcmdzLmFyZ3VtZW50NiwgYXJncy5hcmd1bWVudDcpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5
cGVuYW1lIFA4Pgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzODxQMSwg
UDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDg+JiBhcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQoreworICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3MuYXJndW1l
bnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1lbnQ1LCBhcmdz
LmFyZ3VtZW50NiwgYXJncy5hcmd1bWVudDcsIGFyZ3MuYXJndW1lbnQ4KTsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1l
IFA3LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgUDksIHR5cGVuYW1lIFAxMD4KIHZvaWQgY2FsbE1l
bWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czEwPFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYsIFA3
LCBQOCwgUDksIFAxMD4mIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDExMDc3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDYgKzY4LDI0IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKKyAgICBjbGFz
cyBIYW5kbGVBcnJheSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZUFycmF5
KTsKKyAgICAgICAgCisgICAgcHVibGljOgorICAgICAgICBIYW5kbGVBcnJheSgpOworICAgICAg
ICB+SGFuZGxlQXJyYXkoKTsKKyAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdCk7CisgICAgICAg
IEhhbmRsZSYgb3BlcmF0b3JbXShzaXplX3QgaSk7CisgICAgICAgIGNvbnN0IEhhbmRsZSYgb3Bl
cmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CisgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAg
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxl
QXJyYXkmKTsKKyAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBIYW5kbGUqIG1fZGF0YTsK
KyAgICAgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICB9OworICAgIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKICAgICBzdGF0aWMg
dm9pZCBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUsIEhhbmRsZSYp
OwogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmKTsKQEAgLTkwLDYgKzEwOCwxNCBAQCBp
bmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUoCiBpbmxpbmUgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0K
IGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciosIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKSB7IH0KK2lubGluZSBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KCkgeyB9CitpbmxpbmUgdm9pZCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6cmVzZXJ2ZShzaXplX3QpIHsgfQoraW5saW5l
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90KSBjb25zdCB7IHJldHVybiAqbV9kYXRhOyB9Citpbmxp
bmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6b3BlcmF0b3JbXShzaXplX3QpIHsgcmV0dXJuICptX2RhdGE7IH0KK2lubGluZSBzaXplX3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9
ICAgIAoraW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdCB7IH0KK2lubGluZSBib29sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
SGFuZGxlQXJyYXkmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgUGFzc1JlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJikgeyByZXR1
cm4gMDsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7IH0KIGlubGluZSBTdHJpbmcgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmKSB7cmV0dXJuIFN0cmluZygpO30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHJl
dmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNjYgQEAgYm9vbCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShDbwogICAgIHJldHVybiB0cnVlOwogfQogCitTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKQorICAgIDogbV9kYXRhKDAp
CisgICAgLCBtX3NpemUoMCkKK3sKK30KKworU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
On5IYW5kbGVBcnJheSgpCit7CisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10gbV9k
YXRhOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpyZXNlcnZlKHNp
emVfdCBzaXplKQoreworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10gbV9kYXRhOworCisgICAgbV9kYXRhID0gbmV3IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXplXTsKKyAgICBtX3NpemUgPSBzaXplOworfQorCitT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpv
cGVyYXRvcltdKHNpemVfdCBpKQoreworICAgIEFTU0VSVChpIDwgbV9zaXplKTsgICAgCisgICAg
cmV0dXJuIG1fZGF0YVtpXTsKK30KKworY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaSA8IG1fc2l6ZSk7CisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKwor
c2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zaXplOworfQorCit2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXItPmVuY29kZVVJbnQ2NChzaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zaXplOyArK2kpCisgICAgICAgIGVuY29kZXItPmVuY29kZShtX2RhdGFbaV0pOworICAg
IAorfQorCitib29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYgaGFuZGxlcykKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlVUludDY0KHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaGFuZGxlcy5yZXNl
cnZlKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAg
ICBkZWNvZGVyLT5kZWNvZGUoaGFuZGxlc1tpXSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBh
c3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0
IEhhbmRsZSYgaGFuZGxlKQogewogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYzLDI3ICs4NjMsMzAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFZpZXdwb3J0U2l6ZShjb25zdAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbnRlcmVkKERyYWdE
YXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUpCiB7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgcGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uRW50ZXJlZCwgZHJhZ0Rh
dGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5OworICAg
IHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkVudGVyZWQs
IGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGVBcnJheSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnVXBk
YXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQog
ewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwot
ICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvblVwZGF0
ZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwor
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVB
cnJheTsKKyAgICBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b25VcGRhdGVkLCBkcmFnRGF0YSwgZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlQXJyYXkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZUFycmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUFycmF5KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZyhEcmFnRGF0YSog
ZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKIHsKLSAgICBw
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb25QZXJmb3JtRHJh
ZywgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uUGVyZm9y
bURyYWcsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERy
YWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VO
YW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9u
c0ZvclVwbG9hZCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODk0LDcgKzg5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXIK
ICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgcHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCAq
ZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7CiAjZWxzZQotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEt
PmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS0+
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdTdG9yYWdlTmFtZSwgZHJhZ0RhdGEt
PmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
YWN0aW9uLCBkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0
aW9uKCksIGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ1N0b3Jh
Z2VOYW1lLCBkcmFnRGF0YS0+ZmxhZ3MoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJv
eEV4dGVuc2lvbnNGb3JVcGxvYWQpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTEwNzcwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MTYsNyArNTE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhZ0VudGVyZWQoV2ViQ29yZTo6
RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSA9IFN0cmluZygpKTsKICAg
ICB2b2lkIGRyYWdVcGRhdGVkKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnRXhpdGVkKFdlYkNvcmU6OkRy
YWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7Ci0gICAg
dm9pZCBwZXJmb3JtRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHBl
cmZvcm1EcmFnKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5h
bWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5Jik7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihXZWJDb3JlOjpEcmFnU2Vzc2lvbik7CiAgICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CkBAIC04NzYsNyArODc2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CiAKLSAg
ICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwg
V2ViQ29yZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAKICAgICB2b2lkIHVwZGF0
ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTEwNzcwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
Njg2LDYgKzE2ODYsMjMgQEAgc3RhdGljIGJvb2wgbWF5YmVDcmVhdGVTYW5kYm94RXh0ZW5zaW9u
RgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5z
aW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICBOU0FycmF5ICp0eXBlcyA9IFtwYXN0
ZWJvYXJkIHR5cGVzXTsKKyAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpOU0ZpbGVuYW1l
c1Bib2FyZFR5cGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNBcnJheSAqZmlsZXMg
PSBbcGFzdGVib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV07
CisgICAgaGFuZGxlcy5yZXNlcnZlKFtmaWxlcyBjb3VudF0pOworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgW2ZpbGVzIGNvdW50XTsgaSsrKSB7CisgICAgICAgIE5TU3RyaW5nICpm
aWxlID0gW2ZpbGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIGlmICghW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVdKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CisgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9u
OjpSZWFkT25seSwgaGFuZGxlc1tpXSk7CisgICAgfQorfQorCiAtIChCT09MKXBlcmZvcm1EcmFn
T3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIEludFBv
aW50IGNsaWVudChbc2VsZiBjb252ZXJ0UG9pbnQ6W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSBmcm9tVmlldzpuaWxdKTsKQEAgLTE2OTcsNyArMTcxNCwxMCBAQCAtIChCT09MKXBlcmZv
cm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnCiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAg
ICAgICAgIF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbigpOwogCi0gICAgX2RhdGEtPl9wYWdlLT5wZXJmb3JtRHJhZygm
ZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0sIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNh
bmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CisgICAgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JG
aWxlVXBsb2FkKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgc2FuZGJveEV4dGVu
c2lvbkZvclVwbG9hZCk7CisgICAgCisgICAgX2RhdGEtPl9wYWdlLT5wZXJmb3JtRHJhZygmZHJh
Z0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVib2FyZF0gbmFtZV0sIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQpOwogCiAgICAgcmV0dXJu
IFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVu
dEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIxLDcgKzIyMSw4IEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cm9wRXYKICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKICAgICBE
cmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2
LT5wb3MoKSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5w
b3NzaWJsZUFjdGlvbnMoKSkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7
Ci0gICAgbV93ZWJQYWdlUHJveHktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSwgU3RyaW5nKCksIGhh
bmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lv
bkZvclVwbG9hZDsKKyAgICBtX3dlYlBhZ2VQcm94eS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhLCBT
dHJpbmcoKSwgaGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICBldi0+c2V0
RHJvcEFjdGlvbihkcmFnT3BlcmF0aW9uVG9Ecm9wQWN0aW9uKG1fd2ViUGFnZVByb3h5LT5kcmFn
U2Vzc2lvbigpLm9wZXJhdGlvbikpOwogICAgIGV2LT5hY2NlcHQoKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMTA3NzApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzM4LDcgKzE3MzgsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OkRy
b3AoCiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVDcmVhdGVTYW5kYm94RXh0ZW5z
aW9uRnJvbURyYWdEYXRhKGRhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChj
cmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+d2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3BhZ2UtPnBlcmZvcm1E
cmFnKCZkYXRhLCBTdHJpbmcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKKyAgICBt
X3BhZ2UtPnBlcmZvcm1EcmFnKCZkYXRhLCBTdHJpbmcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gMTEwNzcwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsOCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJh
Z0Rlc3RpCiB7CiAgICAgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQog
ICAgICAgICBtX3BhZ2UtPndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwor
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBEcmFnRGVzdGluYXRpb25BY3Rpb25VcGxvYWQpCisgICAg
ICAgIG1fcGFnZS0+cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwogfQogCiB2
b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNl
QWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCopCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSwxMSArMTU1LDggQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIC8vIEZJWE1F
OiB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGNvZGUgYmVsb3csIG9uY2Ugd2Ug
cmVzb2x2ZSB0aGUgc2FuZGJveGluZyBpc3N1ZS4KLSAgICAvLyBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAotICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6
OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFt
ZXMpLCAwKTsKLSAgICAKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdl
dFBhdGhuYW1lc0ZvclR5cGUocGF0aG5hbWVzLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4
dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVw
bHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw3ICsyMDk2
LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3RpbwogfQogCiAjZWxz
ZQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0
aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
IHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Npb24oKSkpOwpAQCAtMjEyMSw2ICsyMTIx
LDggQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3RpbwogICAgICAgICBB
U1NFUlQoIW1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgICAgICBtX3BlbmRp
bmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94
RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV9wZW5kaW5n
RHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVuZChTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpOwogCiAgICAgICAgIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhKTsKIApAQCAtMjEzMCw3ICsy
MTMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW8KICAgICAg
ICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7CiAgICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9u
c0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWRbaV0tPmludmFsaWRhdGUoKTsKIAorICAgICAgICBtX3BlbmRp
bmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0yMTU5LDYgKzIxNjQsMTMgQEAgdm9pZCBXZWJQYWdlOjp3aWxsUGVyZm9ybUxv
YWREcmFnRGVzdGluYQogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIud2lsbFBlcmZvcm1M
b2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLnJl
bGVhc2UoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlv
bkFjdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fcGVuZGluZ0Ryb3BF
eHRlbnNpb25zRm9yRmlsZVVwbG9hZFtpXS0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CisgICAgbV9w
ZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmNsZWFyKCk7Cit9CisKIFdlYlVuZG9T
dGVwKiBXZWJQYWdlOjp3ZWJVbmRvU3RlcCh1aW50NjRfdCBzdGVwSUQpCiB7CiAgICAgcmV0dXJu
IG1fdW5kb1N0ZXBNYXAuZ2V0KHN0ZXBJRCkuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzOSwxMSArNDM5LDEyIEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShHVEspCiAgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0
aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSk7CiAjZWxzZQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9z
aXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IHVpbnQzMl90IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2
b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6
OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlv
biwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICNlbmRp
ZgogICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKIAog
ICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CisgICAgdm9p
ZCBwZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAKICAgICB2b2lkIGJlZ2lu
UHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBl
bmRQcmludGluZygpOwpAQCAtNzY1LDYgKzc2Niw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qg
bV9wYWdlSUQ7CiAKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9wZW5kaW5nRHJvcFNh
bmRib3hFeHRlbnNpb247CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IG1f
cGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZDsKIAogICAgIGJvb2wgbV9jYW5SdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMTA3
NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgewogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikgJiYg
IVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oR1RLKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrLCBXVEY6OlN0cmluZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZs
YWdzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXVEY6OlN0cmlu
ZyBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAgICAg
RHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTA3NzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0xNCAgRW5yaWNhIENhc3Vj
Y2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IGNyZWF0ZSBzYW5kYm94
IGV4dGVuc2lvbnMgZm9yIGZpbGVzIHRoYXQgYXJlIGRyb3BwZWQgaW4gYW4gaW5wdXQgY29udHJv
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTUz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAzMTIwNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQubW06CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbik6IEF2b2lkIGNhbGxpbmcgdGhlIGRlbGVnYXRlIHdpdGggdGhlIG5ldyBkcmFnIGFj
dGlvbi4KKyAgICAgICAgV2Ugd2FudCB0byBhdm9pZCBhbnkgdW53YW50ZWQgc2lkZSBlZmZlY3Rz
IGZvciB0aGUgV2ViS2l0IGNsaWVudHMuCisKIDIwMTItMDMtMTMgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4gJiYgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBBbHdheXMgZW5hYmxlIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQubW0JKHJldmlzaW9uIDExMDc3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDggQEAg
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbAogCiB2b2lkIFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKiBkcmFnRGF0YSkKIHsKLSAg
ICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2ls
bFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246KFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilh
Y3Rpb24gZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKV07CisgICAgaWYg
KGFjdGlvbiAhPSBEcmFnRGVzdGluYXRpb25BY3Rpb25VcGxvYWQpCisgICAgICAgIFtbbV93ZWJW
aWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JE
cmFnZ2luZ0luZm86ZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpXTsKIH0KIAogCg==
</data>
<flag name="review"
          id="135448"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="135485"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132686</attachid>
            <date>2012-03-19 15:28:42 -0700</date>
            <delta_ts>2012-03-19 16:37:54 -0700</delta_ts>
            <desc>Patch5</desc>
            <filename>lastpasteboard.txt</filename>
            <type>text/plain</type>
            <size>29182</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogY3JlYXRlIHNh
bmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBhbiBpbnB1dCBj
b250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgcGFzdGVib2FyZCBhY2Nl
c3MgaXMgcGVyZm9ybWVkIG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisgICAgICAgIG5l
Y2Vzc2FyeSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZvciBlYWNoIGZpbGUgdGhhdCBp
cyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1lbnQuIFRoZSBl
eHRlbnNpb25zIGFyZSBjcmVhdGVkIGF0IHRoZSB0aW1lIHRoZSBmaWxlcworICAgICAgICBhcmUg
ZHJvcHBlZCBhbmQgY29uc3VtZWQgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgKiBwYWdlL0RyYWdB
Y3Rpb25zLmg6IEFkZGVkIG5ldyBkcmFnIGFjdGlvbiB0byBiZSB1c2VkIGJ5IHRoZSBXZWJEcmFn
Q2xpZW50LgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBBZGRlZCBjYWxsIHRvIHRo
ZSBkcmFnIGNsaWVudCB3aXRoIHRoZSBuZXcgYWN0aW9uLgorCiAyMDEyLTAzLTE5ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE1NTMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Fj
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgJ
KHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MICAgPSAxLAogICAgICAgICBEcmFnRGVzdGlu
YXRpb25BY3Rpb25FZGl0ICAgID0gMiwKICAgICAgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9h
ZCAgICA9IDQsCisgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvblVwbG9hZCAgPSA4LAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgICAgID0gVUlOVF9NQVgKICAgICB9IERyYWdE
ZXN0aW5hdGlvbkFjdGlvbjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAxMTEyNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDYgKzQ3MCw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHIKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBmaWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZmlsZW5hbWVzKTsK
KyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdE
ZXN0aW5hdGlvbkFjdGlvblVwbG9hZCwgZHJhZ0RhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAzLTE0
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0Mjog
Y3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBpbiBh
biBpbnB1dCBjb250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGUgcGFzdGVi
b2FyZCBhY2Nlc3MgaXMgcGVyZm9ybWVkIG9ubHkgaW4gdGhlIFVJIHByb2Nlc3MsIGl0IGlzCisg
ICAgICAgIG5lY2Vzc2FyeSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb25zIGZvciBlYWNoIGZp
bGUgdGhhdCBpcyBkcm9wcGVkIGludG8KKyAgICAgICAgYW4gaW5wdXQgdHlwZT1maWxlIGVsZW1l
bnQuIFRoZSBleHRlbnNpb25zIGFyZSBjcmVhdGVkIGF0IHRoZSB0aW1lIHRoZSBmaWxlcworICAg
ICAgICBhcmUgZHJvcHBlZCBhbmQgY29uc3VtZWQgaW1tZWRpYXRlbHkuCisgICAgICAgIAorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoQ29yZUlQ
Qzo6Y2FsbE1lbWJlckZ1bmN0aW9uKTogQWRkZWQgdGVtcGxhdGUgdGhhdCB0YWtlcyA4IGFyZ3Vt
ZW50cy4KKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAgICAgICAoSGFu
ZGxlQXJyYXkpOiBBZGRlZCBuZXcgY2xhc3MgdG8gaGFuZGxlIGFuIGFycmF5IG9mIHNhbmRib3gg
ZXh0ZW5zaW9uIGhhbmRsZXMuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpIYW5kbGVBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06IEFkZGVkIG5ldyBjbGFzcyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OkhhbmRs
ZUFycmF5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
On5IYW5kbGVBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbToKKyAgICAgICAgKGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZCk6Cisg
ICAgICAgICgtW1dLVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKTogQWRkZWQgbG9naWMgdG8g
Y3JlYXRlIHRoZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGVhY2gKKyAgICAgICAgZmlsZS9kaXJl
Y3RvcnkgYmVpbmcgZHJvcHBlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW50ZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYWdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnBlcmZvcm1EcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24pOiBBZGRlZCB0aGUgaGFuZGxlIGFycmF5IHBhcmFtZXRlci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRs
ZXI6OmhhbmRsZURyb3BFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkRyb3ApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTogQWRkZWQgaGFuZGxpbmcg
b2YgdGhlIG5ldyBEcmFnQWN0aW9uVXBsb2FkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKTogSW1wbGVtZW50ZWQgdXNp
bmcgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1VcGxvYWRE
cmFnRGVzdGluYXRpb25BY3Rpb24pOiBBZGRlZCBtZXRob2QgdGhhdCBjb25zdW1lcyB0aGUgcmVj
ZWl2ZWQgZXh0ZW5zaW9ucy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTAzLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lIG1vcmUgbGlrZSBXZWJLaXQx
IHZlcnNpb24uCkBAIC0xNDIyLDcgKzE0ODAsNiBAQAogCiAgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CiAKLT4+Pj4+Pj4gLnIxMTAzNTIKIDIwMTItMDMt
MDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBTbm93IExlb3BhcmQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSwxMiBAQCB2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVu
dHM3CiAgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShhcmdzLmFyZ3VtZW50MSwgYXJncy5hcmd1bWVu
dDIsIGFyZ3MuYXJndW1lbnQzLCBhcmdzLmFyZ3VtZW50NCwgYXJncy5hcmd1bWVudDUsIGFyZ3Mu
YXJndW1lbnQ2LCBhcmdzLmFyZ3VtZW50Nyk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEMsIHR5
cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgUDg+
Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHM4PFAxLCBQMiwgUDMsIFA0
LCBQNSwgUDYsIFA3LCBQOD4mIGFyZ3MsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit7CisgICAg
KG9iamVjdC0+KmZ1bmN0aW9uKShhcmdzLmFyZ3VtZW50MSwgYXJncy5hcmd1bWVudDIsIGFyZ3Mu
YXJndW1lbnQzLCBhcmdzLmFyZ3VtZW50NCwgYXJncy5hcmd1bWVudDUsIGFyZ3MuYXJndW1lbnQ2
LCBhcmdzLmFyZ3VtZW50NywgYXJncy5hcmd1bWVudDgpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5cGVu
YW1lIFA4LCB0eXBlbmFtZSBQOSwgdHlwZW5hbWUgUDEwPgogdm9pZCBjYWxsTWVtYmVyRnVuY3Rp
b24oY29uc3QgQXJndW1lbnRzMTA8UDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDcsIFA4LCBQOSwg
UDEwPiYgYXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkocmV2aXNpb24gMTExMjQyKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsMjggQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAorICAgIGNsYXNzIEhhbmRsZUFy
cmF5IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlQXJyYXkpOworICAgICAg
ICAKKyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZUFycmF5KCk7CisgICAgICAgIH5IYW5kbGVB
cnJheSgpOworICAgICAgICB2b2lkIHJlc2l6ZShzaXplX3QpOworICAgICAgICBIYW5kbGUmIG9w
ZXJhdG9yW10oc2l6ZV90IGkpOworICAgICAgICBjb25zdCBIYW5kbGUmIG9wZXJhdG9yW10oc2l6
ZV90IGkpIGNvbnN0OworICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgICAgICB2b2lk
IGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZUFycmF5Jik7Cisg
ICAgICAgCisgICAgcHJpdmF0ZToKKyNpZiBFTkFCTEUoV0VCX1BST0NFU1NfU0FOREJPWCkKKyAg
ICAgICAgSGFuZGxlKiBtX2RhdGE7CisjZWxzZQorICAgICAgICBIYW5kbGUgbV9lbXB0eUhhbmRs
ZTsKKyNlbmRpZgorICAgICAgICBzaXplX3QgbV9zaXplOworICAgIH07CisgICAgCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IEhhbmRsZSYpOwog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlw
ZSwgSGFuZGxlJik7CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUsIEhhbmRsZSYpOwpAQCAtODUsMTEg
KzEwNywyMCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCisKICNpZiAhRU5BQkxFKFdFQl9QUk9D
RVNTX1NBTkRCT1gpCiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUoKSB7
IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKSB7IH0KIGlubGlu
ZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciopIGNvbnN0IHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlJikgeyByZXR1cm4gdHJ1
ZTsgfQoraW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSgp
IHsgfQoraW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXko
KSB7IH0KK2lubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpyZXNpemUo
c2l6ZV90KSB7IH0KK2lubGluZSBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OnNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9ICAgIAoraW5saW5lIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10o
c2l6ZV90KSBjb25zdCB7IHJldHVybiBtX2VtcHR5SGFuZGxlOyB9CitpbmxpbmUgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3Jb
XShzaXplX3QpIHsgcmV0dXJuIG1fZW1wdHlIYW5kbGU7IH0KK2lubGluZSB2b2lkIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikg
Y29uc3QgeyB9CitpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZUFycmF5JikgeyByZXR1cm4gdHJ1
ZTsgfQogaW5saW5lIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIDA7IH0KIGlubGluZSB2b2lkIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlwZSwg
SGFuZGxlJikgeyB9CiBpbmxpbmUgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdHlwZSwgSGFuZGxl
Jikge3JldHVybiBTdHJpbmcoKTt9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Nh
bmRib3hFeHRlbnNpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCShyZXZpc2lvbiAxMTEyNDIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDY3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUo
Q28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OkhhbmRsZUFycmF5KCkKKyAgICA6IG1fZGF0YSgwKQorICAgICwgbV9zaXplKDApCit7Cit9CisK
K1NhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkoKQoreworICAgIGlm
IChtX2RhdGEpCisgICAgICAgIGRlbGV0ZVtdIG1fZGF0YTsKK30KKwordm9pZCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheTo6cmVzaXplKHNpemVfdCBzaXplKQoreworICAgIGlmICghc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgZGVsZXRlW10g
bV9kYXRhOworCisgICAgbV9kYXRhID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXpl
XTsKKyAgICBtX3NpemUgPSBzaXplOworfQorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKQoreworICAg
IEFTU0VSVChpIDwgbV9zaXplKTsgICAgCisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKworY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaSA8IG1fc2l6ZSk7
CisgICAgcmV0dXJuIG1fZGF0YVtpXTsKK30KKworc2l6ZV90IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCit2b2lk
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChzaXpl
KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgIGVu
Y29kZXItPmVuY29kZShtX2RhdGFbaV0pOworICAgIAorfQorCitib29sIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3sKKyAgICB1aW50NjRf
dCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHNpemUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaGFuZGxlcy5yZXNpemUoc2l6ZSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRs
ZXNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShj
b25zdCBIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMTExMjQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2NCwyNyArODY0LDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRWaWV3cG9ydFNpemUoY29uc3QKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW50ZXJlZChE
cmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkVudGVyZWQsIGRy
YWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFy
cmF5OworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
bkVudGVyZWQsIGRyYWdEYXRhLCBkcmFnU3RvcmFnZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGVFbXB0eUFycmF5KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRyYWdVcGRhdGVkKERyYWdEYXRhKiBkcmFnRGF0YSwgY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGU7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uVXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXk7CisgICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KERyYWdDb250cm9sbGVyQWN0aW9uVXBkYXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdlTmFtZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEs
IGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIHBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbkV4aXRlZCwgZHJhZ0RhdGEsIGRyYWdTdG9yYWdl
TmFtZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZUVtcHR5QXJyYXk7CisgICAgcGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uRXhpdGVkLCBkcmFnRGF0YSwg
ZHJhZ1N0b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlRW1wdHlBcnJheSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZyhE
cmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cGVyZm9ybURyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBjb25zdCBTdHJpbmcm
IGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgc2Fu
ZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7Ci0gICAgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKERyYWdDb250cm9sbGVyQWN0aW9uUGVyZm9ybURyYWcsIGRyYWdEYXRhLCBkcmFnU3RvcmFn
ZU5hbWUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIHBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvblBlcmZvcm1EcmFnLCBkcmFnRGF0YSwgZHJhZ1N0
b3JhZ2VOYW1lLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVw
bG9hZCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnRGF0YSogZHJhZ0RhdGEsIGNvbnN0
IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZ0RhdGEqIGRy
YWdEYXRhLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg5NSw3ICs4OTgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyCiAjZWxpZiBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oR1RLKQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgKmRyYWdEYXRhKSwgbV9wYWdlSUQpOwog
I2Vsc2UKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpLCBkcmFn
RGF0YS0+Z2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpLCBkcmFnU3RvcmFnZU5hbWUsIGRyYWdEYXRhLT5mbGFncygpLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEtPmNsaWVu
dFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS0+ZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdTdG9yYWdlTmFtZSwgZHJhZ0RhdGEtPmZsYWdz
KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwg
bV9wYWdlSUQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTE2LDcgKzUxNiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRyYWdFbnRlcmVkKFdlYkNvcmU6OkRyYWdEYXRhKiwgY29uc3QgU3RyaW5n
JiBkcmFnU3RvcmFnZU5hbWUgPSBTdHJpbmcoKSk7CiAgICAgdm9pZCBkcmFnVXBkYXRlZChXZWJD
b3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkp
OwogICAgIHZvaWQgZHJhZ0V4aXRlZChXZWJDb3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lID0gU3RyaW5nKCkpOwotICAgIHZvaWQgcGVyZm9ybURyYWcoV2ViQ29y
ZTo6RHJhZ0RhdGEqLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCBwZXJmb3JtRHJhZyhXZWJDb3JlOjpEcmFn
RGF0YSosIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwogCiAg
ICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nlc3Np
b24pOwogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBvcGVyYXRpb24pOwpAQCAtODc2LDcgKzg3Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNs
ZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpOwogCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKiwgY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSosIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1l
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJs
ZVN0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDY3LDcgKzQ2Nyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3
QmFzZURyYWdEcm8KICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGhhbmRsZTsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5wZXJm
b3JtRHJhZyhkcmFnRGF0YS5nZXQoKSwgU3RyaW5nKCksIGhhbmRsZSk7CisgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKKyAgICB3ZWJW
aWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5wZXJmb3JtRHJhZyhkcmFnRGF0YS5nZXQoKSwgU3Ry
aW5nKCksIGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CiAgICAgZ3RrX2RyYWdf
ZmluaXNoKGNvbnRleHQsIFRSVUUsIEZBTFNFLCB0aW1lKTsKICAgICByZXR1cm4gVFJVRTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlz
aW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTY4Niw2ICsxNjg2LDIzIEBAIHN0YXRpYyBib29sIG1heWJl
Q3JlYXRlU2FuZGJveEV4dGVuc2lvbkYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZv
aWQgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCit7CisgICAg
TlNBcnJheSAqdHlwZXMgPSBbcGFzdGVib2FyZCB0eXBlc107CisgICAgaWYgKCFbdHlwZXMgY29u
dGFpbnNPYmplY3Q6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIE5TQXJyYXkgKmZpbGVzID0gW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpO
U0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAgIGhhbmRsZXMucmVzaXplKFtmaWxlcyBjb3VudF0p
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBbZmlsZXMgY291bnRdOyBpKyspIHsKKyAg
ICAgICAgTlNTdHJpbmcgKmZpbGUgPSBbZmlsZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6Zmls
ZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGhhbmRsZTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUs
IFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBoYW5kbGVzW2ldKTsKKyAgICB9Cit9CisKIC0g
KEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJ
bmZvCiB7CiAgICAgSW50UG9pbnQgY2xpZW50KFtzZWxmIGNvbnZlcnRQb2ludDpbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dIGZyb21WaWV3Om5pbF0pOwpAQCAtMTY5Nyw3ICsxNzE0LDEw
IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWcKICAgICBpZiAoY3Jl
YXRlZEV4dGVuc2lvbikKICAgICAgICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCktPndpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAKLSAgICBfZGF0YS0+X3Bh
Z2UtPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSwgW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJv
YXJkXSBuYW1lXSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKKyAgICBjcmVhdGVTYW5k
Ym94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bhc3RlYm9h
cmRdLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKKyAgICAKKyAgICBfZGF0YS0+X3BhZ2Ut
PnBlcmZvcm1EcmFnKCZkcmFnRGF0YSwgW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJk
XSBuYW1lXSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9h
ZCk7CiAKICAgICByZXR1cm4gWUVTOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDExMTI0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDggQEAgdm9pZCBRdFdlYlBhZ2VFdmVu
dEhhbmRsZXI6OmhhbmRsZURyb3BFdgogICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IHVzZSBRQ3Vy
c29yOjpwb3MoKQogICAgIERyYWdEYXRhIGRyYWdEYXRhKGV2LT5taW1lRGF0YSgpLCBmcm9tSXRl
bVRyYW5zZm9ybS5tYXAoZXYtPnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cGVyZm9ybURyYWcoJmRyYWdE
YXRhLCBTdHJpbmcoKSwgaGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkOworICAgIG1fd2ViUGFnZVByb3h5LT5wZXJmb3Jt
RHJhZygmZHJhZ0RhdGEsIFN0cmluZygpLCBoYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxv
YWQpOwogICAgIGV2LT5zZXREcm9wQWN0aW9uKGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24obV93
ZWJQYWdlUHJveHktPmRyYWdTZXNzaW9uKCkub3BlcmF0aW9uKSk7CiAgICAgZXYtPmFjY2VwdCgp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MzgsNyArMTczOCw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6RHJvcCgKICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUNy
ZWF0ZVNhbmRib3hFeHRlbnNpb25Gcm9tRHJhZ0RhdGEoZGF0YSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwotICAg
IG1fcGFnZS0+cGVyZm9ybURyYWcoJmRhdGEsIFN0cmluZygpLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9u
Rm9yVXBsb2FkOworICAgIG1fcGFnZS0+cGVyZm9ybURyYWcoJmRhdGEsIFN0cmluZygpLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiAxMTEyNDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6d2lsbFBlcmZvcm1EcmFnRGVzdGkKIHsKICAgICBpZiAoYWN0aW9uID09IERyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQpCiAgICAgICAgIG1fcGFnZS0+d2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKCk7CisgICAgZWxzZSBpZiAoYWN0aW9uID09IERyYWdEZXN0aW5hdGlvbkFj
dGlvblVwbG9hZCkKKyAgICAgICAgbV9wYWdlLT5wZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDExMTI0MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsOCBAQCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhCiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB7Ci0gICAgLy8gRklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgY29k
ZSBiZWxvdywgb25jZSB3ZSByZXNvbHZlIHRoZSBzYW5kYm94aW5nIGlzc3VlLgotICAgIC8vIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNv
bnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSksCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGU6OlJlcGx5KHBhdGhuYW1lcyksIDApOwotICAgIAotICAgIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRobmFtZXMsIHBhc3RlYm9hcmRU
eXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRo
bmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMpLCAwKTsKIH0KIAogU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTExMjQyKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTAzLDcgKzIxMDMsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvCiB9CiAKICNlbHNlCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3QgZmxh
Z3MsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFj
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGNv
bnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJfdCBmbGFncywgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkKIHsK
ICAgICBpZiAoIW1fcGFnZSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnU2Vzc2lvbigpKSk7
CkBAIC0yMTI4LDYgKzIxMjgsOCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvCiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pOwog
CiAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKyspCisgICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuYXBwZW5kKFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSk7CiAK
ICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEp
OwogCkBAIC0yMTM3LDcgKzIxMzksMTAgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3RpbwogICAgICAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24tPmlu
dmFsaWRhdGUoKTsKICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0g
bnVsbHB0cjsKICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVu
ZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5zaXplKCk7IGkrKykKKyAgICAgICAgICAg
IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZFtpXS0+aW52YWxpZGF0ZSgpOwog
CisgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5jbGVhcigpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIxNjYsNiArMjE3MSwxMyBAQCB2b2lkIFdlYlBh
Z2U6OndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJh
Y2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24obV9wZW5kaW5nRHJvcFNh
bmRib3hFeHRlbnNpb24ucmVsZWFzZSgpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpwZXJmb3JtVXBs
b2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5zaXplKCk7IGkrKykKKyAgICAg
ICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkW2ldLT5jb25zdW1lUGVybWFu
ZW50bHkoKTsKKyAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuY2xlYXIo
KTsKK30KKwogV2ViVW5kb1N0ZXAqIFdlYlBhZ2U6OndlYlVuZG9TdGVwKHVpbnQ2NF90IHN0ZXBJ
RCkKIHsKICAgICByZXR1cm4gbV91bmRvU3RlcE1hcC5nZXQoc3RlcElEKS5nZXQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24g
MTExMjQyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDM5LDExICs0MzksMTIgQEAgcHVibGljOgogI2VsaWYgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKTsKICNlbHNlCi0gICAgdm9p
ZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24s
IHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
IGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90
IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ss
IGNvbnN0IFdURjo6U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90IGZsYWdzLCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYpOwogI2VuZGlmCiAgICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBvcGVyYXRpb24pOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25B
Y3Rpb24oKTsKKyAgICB2b2lkIHBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsK
IAogICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mKTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CkBAIC03NjUsNiArNzY2LDcgQEAgcHJpdmF0
ZToKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbjsKKyAgICBWZWN0b3I8UmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+ID4gbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkOwogCiAg
ICAgYm9vbCBtX2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVp
bnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEpCiAjZW5kaWYKICNpZiAh
UExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShHVEspCi0gICAgUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9p
bnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50
NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdURjo6U3RyaW5nIGRyYWdTdG9yYWdl
TmFtZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVp
bnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6
OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2ssIFdURjo6U3RyaW5nIGRyYWdTdG9yYWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxv
YWQpCiAjZW5kaWYKICAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRp
b24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24p
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAz
LTE0ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0
MjogY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgZHJvcHBlZCBp
biBhbiBpbnB1dCBjb250cm9sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODExNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDMxMjA3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTogQXZvaWQgY2FsbGluZyB0aGUgZGVsZWdhdGUgd2l0
aCB0aGUgbmV3IGRyYWcgYWN0aW9uLgorICAgICAgICBXZSB3YW50IHRvIGF2b2lkIGFueSB1bndh
bnRlZCBzaWRlIGVmZmVjdHMgZm9yIHRoZSBXZWJLaXQgY2xpZW50cy4KKwogMjAxMi0wMy0xNiAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzExMDI3OTk3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxNDEyCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQubW0JKHJldmlzaW9uIDExMTI0MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDEwIEBAIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2wKIAogdm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSogZHJhZ0RhdGEp
CiB7CisgICAgLy8gVGhpcyBhY3Rpb24gaXMgdXNlZCBvbmx5IGJ5IFdlYktpdDIuIFdlIHdhbnQg
dG8gYXZvaWQgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0cyBmb3IgdGhlIFdlYktpdCBjbGllbnRz
LAorICAgIC8vIHRoZXJlZm9yZSB3ZSBhdm9pIHRoZSBkZWxlZ2F0ZSBjYWxsLgorICAgIGlmIChh
Y3Rpb24gPT0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uVXBsb2FkKQorICAgICAgICByZXR1cm47CiAg
ICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24p
YWN0aW9uIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCldOwogfQogCg==
</data>
<flag name="review"
          id="136409"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="136439"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>