<?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>112844</bug_id>
          
          <creation_ts>2013-03-20 14:32:54 -0700</creation_ts>
          <short_desc>[CSS Shaders] Remove the cache of validated programs</short_desc>
          <delta_ts>2013-04-16 10:11:42 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112602</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Max Vujovic">mvujovic</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>michelangelo</cc>
    
    <cc>mvujovic</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>859744</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-20 14:32:54 -0700</bug_when>
    <thetext>Once 112602 is fixed we could remove the redundant cache of the validated programs. We could also remove the ValidatedCustomFilterOperation as we can reference the CustomFilterValidatedProgram directly from the CustomFilterProgram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859748</commentid>
    <comment_count>1</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-03-20 14:38:44 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Once 112602 is fixed we could remove the redundant cache of the validated programs. We could also remove the ValidatedCustomFilterOperation as we can reference the CustomFilterValidatedProgram directly from the CustomFilterProgram.

Looking forward to this! It should simplify things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874985</commentid>
    <comment_count>2</comment_count>
      <attachid>197892</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-12 15:08:43 -0700</bug_when>
    <thetext>Created attachment 197892
Patch

Posting a patch for Alex&apos;s informal review. Also, Qt EWS probably won&apos;t like this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874988</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-12 15:10:54 -0700</bug_when>
    <thetext>Attachment 197892 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/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterProgram.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterProgram.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FECustomFilter.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FECustomFilter.h&apos;, u&apos;Source/WebCore/rendering/FilterEffectRenderer.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayer.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h:100:  The parameter name &quot;program&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h:112:  The parameter name &quot;mixSettings&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 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>875001</commentid>
    <comment_count>4</comment_count>
      <attachid>197892</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-12 15:36:23 -0700</bug_when>
    <thetext>Comment on attachment 197892
Patch

Attachment 197892 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/132021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875008</commentid>
    <comment_count>5</comment_count>
      <attachid>197892</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-12 15:42:41 -0700</bug_when>
    <thetext>Comment on attachment 197892
Patch

Attachment 197892 did not pass qt-wk2-ews (qt):
Output: http://webkit-queues.appspot.com/results/19168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875037</commentid>
    <comment_count>6</comment_count>
      <attachid>197892</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-04-12 16:25:14 -0700</bug_when>
    <thetext>Comment on attachment 197892
Patch

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

Looks good! Thanks for working on this!

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:77
&gt; +    if (!m_program) {

This change seems to require a test file.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.h:-78
&gt; -    CustomFilterValidatedProgramsMap m_programs;

Remove the typedef from this file.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:36
&gt; +#include &quot;CustomFilterValidatedProgram.h&quot;

Remove the CustomFilterValidatedProgram from this file.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:66
&gt; +    void setValidatedProgram(PassRefPtr&lt;CustomFilterValidatedProgram&gt; validatedProgram) { m_validatedProgram = validatedProgram; };

Move this to the .cpp file to avoid brining CustomFilterValidatedProgram in the header.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:88
&gt;      CustomFilterProgramMixSettings m_mixSettings;

Eventually we should move this out of CustomFilterProgramInfo.h.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.h:-56
&gt; -        unsigned meshRows, unsigned meshColumns, CustomFilterMeshType);

This looks like it could have been a different patch.

&gt; Source/WebCore/rendering/RenderLayer.cpp:6334
&gt; +                validatedProgram = CustomFilterValidatedProgram::create(program.get(), globalContext-&gt;mixShaderValidator(), globalContext-&gt;webglShaderValidator());

Let&apos;s extract the validation out of CustomFilterValidatedProgram into a separate class like CustomFilterValidator where we could store the mix/webgl shader validators and have all the blending code.

CustomFilterValidatedProgram should only contain the &quot;storing&quot; logic, it is just the result of the CustomFilterValidator. I think we could consolidate that with CustomFilterProgram (which is the &apos;raw&apos; program information).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876070</commentid>
    <comment_count>7</comment_count>
      <attachid>197892</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-15 14:36:14 -0700</bug_when>
    <thetext>Comment on attachment 197892
Patch

Thanks for the review, Alex!

I&apos;ll split this patch up into smaller, incremental refactors:
Bug 114640
Bug 114637
bug 114639
Bug 102529 (already existed)

And a bug to add a test:
Bug 114636

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

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:77
&gt;&gt; +    if (!m_program) {
&gt; 
&gt; This change seems to require a test file.

Yes, I won&apos;t do this change here. I&apos;ve filed bug 114636 to cover it.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.h:-78
&gt;&gt; -    CustomFilterValidatedProgramsMap m_programs;
&gt; 
&gt; Remove the typedef from this file.

Thanks!

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:36
&gt;&gt; +#include &quot;CustomFilterValidatedProgram.h&quot;
&gt; 
&gt; Remove the CustomFilterValidatedProgram from this file.

Ok.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:66
&gt;&gt; +    void setValidatedProgram(PassRefPtr&lt;CustomFilterValidatedProgram&gt; validatedProgram) { m_validatedProgram = validatedProgram; };
&gt; 
&gt; Move this to the .cpp file to avoid brining CustomFilterValidatedProgram in the header.

Ok.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:88
&gt;&gt;      CustomFilterProgramMixSettings m_mixSettings;
&gt; 
&gt; Eventually we should move this out of CustomFilterProgramInfo.h.

Yes. I filed a bug 114637.

&gt;&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.h:-56
&gt;&gt; -        unsigned meshRows, unsigned meshColumns, CustomFilterMeshType);
&gt; 
&gt; This looks like it could have been a different patch.

Yes, turns out we have bug 102529 for this.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:6334
&gt;&gt; +                validatedProgram = CustomFilterValidatedProgram::create(program.get(), globalContext-&gt;mixShaderValidator(), globalContext-&gt;webglShaderValidator());
&gt; 
&gt; Let&apos;s extract the validation out of CustomFilterValidatedProgram into a separate class like CustomFilterValidator where we could store the mix/webgl shader validators and have all the blending code.
&gt; 
&gt; CustomFilterValidatedProgram should only contain the &quot;storing&quot; logic, it is just the result of the CustomFilterValidator. I think we could consolidate that with CustomFilterProgram (which is the &apos;raw&apos; program information).

I agree. Filed bug 114639.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876073</commentid>
    <comment_count>8</comment_count>
      <attachid>198188</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-15 14:47:29 -0700</bug_when>
    <thetext>Created attachment 198188
Patch

Unlike the last patch, this patch doesn&apos;t try to refactor everything :). It just removes the mesh cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876075</commentid>
    <comment_count>9</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-15 14:48:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=198188) [details]
&gt; Patch
&gt; 
&gt; Unlike the last patch, this patch doesn&apos;t try to refactor everything :). It just removes the mesh cache.

*the validated program cache I mean. (I&apos;m thinking about too many caches..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876082</commentid>
    <comment_count>10</comment_count>
      <attachid>198188</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-04-15 15:00:52 -0700</bug_when>
    <thetext>Comment on attachment 198188
Patch

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

Looks better!

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h:-109
&gt; -    void detachFromGlobalContext() { m_globalContext = 0; }

m_globalContext is now a weakReference to the Global Context that could be deleted before this object. Not sure how that could happen, but it would be better to remove the need for this reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876135</commentid>
    <comment_count>11</comment_count>
      <attachid>198201</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-15 16:42:18 -0700</bug_when>
    <thetext>Created attachment 198201
Patch

In this patch, I&apos;ve removed the weak reference to CustomFilterGlobalContext in CustomFilterValidatedProgram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876148</commentid>
    <comment_count>12</comment_count>
      <attachid>198201</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-04-15 16:53:46 -0700</bug_when>
    <thetext>Comment on attachment 198201
Patch

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

Looks good, just one small nit.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:168
&gt;          m_customFilterRenderer-&gt;setCompiledProgram(m_validatedProgram-&gt;compiledProgram());

You could use compiledProgram.release() in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876150</commentid>
    <comment_count>13</comment_count>
      <attachid>198204</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-15 16:57:01 -0700</bug_when>
    <thetext>Created attachment 198204
Patch

In this patch, used compiledProgram.release() like Alex suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876163</commentid>
    <comment_count>14</comment_count>
      <attachid>198204</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-04-15 17:15:43 -0700</bug_when>
    <thetext>Comment on attachment 198204
Patch

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

&gt; Source/WebCore/ChangeLog:27
&gt; +        (WebCore):

My favourite comment - remove this line :)

&gt; Source/WebCore/ChangeLog:31
&gt; +        (WebCore):

And here.

&gt; Source/WebCore/ChangeLog:34
&gt; +        (WebCore):

And here.

&gt; Source/WebCore/ChangeLog:39
&gt; +        (WebCore):

And here.

&gt; Source/WebCore/ChangeLog:42
&gt; +        (WebCore):

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876581</commentid>
    <comment_count>15</comment_count>
      <attachid>198338</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-04-16 09:42:40 -0700</bug_when>
    <thetext>Created attachment 198338
Patch for Landing

Thanks for the review! The ChangeLog does look better without those lines :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876591</commentid>
    <comment_count>16</comment_count>
      <attachid>198338</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 10:11:39 -0700</bug_when>
    <thetext>Comment on attachment 198338
Patch for Landing

Clearing flags on attachment: 198338

Committed r148518: &lt;http://trac.webkit.org/changeset/148518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876592</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 10:11:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197892</attachid>
            <date>2013-04-12 15:08:43 -0700</date>
            <delta_ts>2013-04-15 14:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>112844-1.patch</filename>
            <type>text/plain</type>
            <size>30000</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OTc3MWYyLi45NTgyY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTMtMDQtMTIgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gUmVtb3ZlIHRoZSBjYWNoZSBvZiB2YWxpZGF0ZWQgcHJvZ3JhbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSBjYWNoZSBpbiBDdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LgorCisgICAgICAgIE5vd2FkYXlzLCB3ZSBhcmUgY2FjaGluZyBDdXN0b21GaWx0
ZXJQcm9ncmFtKHMpIGluIFN0eWxlUmVzb2x2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBhCisgICAgICAg
IHZhbGlkYXRlZFByb2dyYW0gcHJvcGVydHkgdG8gQ3VzdG9tRmlsdGVyUHJvZ3JhbS4gVGh1cywg
dmFsaWRhdGVkIHByb2dyYW1zIHdpbGwgYmUgY2FjaGVkCisgICAgICAgIGJlY2F1c2UgdGhleSBh
cmUgYXR0YWNoZWQgdG8gQ3VzdG9tRmlsdGVyUHJvZ3JhbShzKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gcmVtb3ZlcyBtYW55IHVzZXMgb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8sIHdo
aWNoIHVzZWQgdG8gYmUgdGhlIGhhc2gga2V5CisgICAgICAgIGZvciB0aGUgdmFsaWRhdGVkIHBy
b2dyYW0gY2FjaGUgYW5kIHdhcyBzb21ldGltZXMgdXNlZCBmb3IgdHJhbnNwb3J0aW5nIGRhdGEg
YXMgd2VsbC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
byBpcyBub3cgb25seSB1c2VkIGFzIHRoZSBoYXNoIGtleSBmb3IgdGhlCisgICAgICAgIEN1c3Rv
bUZpbHRlclByb2dyYW0gY2FjaGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IHJlZmFj
dG9yaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6On5D
dXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaDoKKyAgICAgICAgKEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4VmVydGV4U2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhGcmFnbWVudFNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp+Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21w
aWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbTo6c2V0Q29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW06OnByb2dyYW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06Om1lc2hUeXBlKToKKyAgICAgICAgKEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OkZF
Q3VzdG9tRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnByZXBhcmVGb3JEcmF3aW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmg6Cisg
ICAgICAgIChGRUN1c3RvbUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUZpbHRlckVmZmVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjb21wdXRlRmlsdGVyT3BlcmF0aW9ucyk6CisKIDIwMTMtMDQtMTIg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBtYWtlIHRoZSBjb2Rl
Z2VuZXJhdG9yIGFjdHVhbGx5IGVtaXQgcG9seW1vcnBoaXNtIGNoZWNrIGluIHRoZSAibm8gdnRh
YmxlIiBwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAK
aW5kZXggMjY5NjVkMC4uOGU1MzI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmNwcApAQCAtMzEsOCArMzEsNiBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFE
RVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtLmgiCi0gCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDE0ICs1MCwyMSBAQCBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udAogICAgICwgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uKC0xKQogICAgICwgbV9pc0lu
aXRpYWxpemVkKGZhbHNlKQogeworICAgIEFTU0VSVCghdmFsaWRhdGVkVmVydGV4U2hhZGVyLmlz
TnVsbCgpICYmICF2YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CisKICAgICBtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB2ZXJ0
ZXhTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVS
LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIpOwotICAgIGlmICghdmVydGV4U2hhZGVyKQorICAgIGlm
ICghdmVydGV4U2hhZGVyKSB7CisgICAgICAgIC8vIElmIHRoZSB2YWxpZGF0ZWQgdmVydGV4IHNo
YWRlciBkb2Vzbid0IGNvbXBpbGUgb24gaXRzIG93biwgd2UndmUgcHJvYmFibHkgaGl0IGEgZHJp
dmVyIGJ1Zy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgCiAgICAgUGxhdGZvcm0zRE9iamVjdCBmcmFnbWVudFNoYWRlciA9IGNvbXBp
bGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUiwgdmFsaWRhdGVkRnJh
Z21lbnRTaGFkZXIpOwogICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHsKKyAgICAgICAgLy8gSWYg
dGhlIHZhbGlkYXRlZCBmcmFnbWVudCBzaGFkZXIgZG9lc24ndCBjb21waWxlIG9uIGl0cyBvd24s
IHdlJ3ZlIHByb2JhYmx5IGhpdCBhIGRyaXZlciBidWcuCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjksOCArNzQsMTAgQEAgQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnQKICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwogICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKICAgICAKLSAgICBpZiAo
IW1fcHJvZ3JhbSkKKyAgICBpZiAoIW1fcHJvZ3JhbSkgeworICAgICAgICAvLyBUaGUgdmFsaWRh
dGVkIHZlcnRleCBzaGFkZXIgYW5kIGZyYWdtZW50IHNoYWRlciBhcmVuJ3QgZ3VhcmFudGVlZCB0
byBsaW5rLiBUaGlzIGlzIG5vdCBhIGRyaXZlciBidWcuCiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucyhwcm9ncmFtVHlwZSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaAppbmRleCA1ZGJm
MGQ0Li5hODA5YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
LmgKQEAgLTMyLDE1ICszMiwxMyBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0Uo
M0RfR1JBUEhJQ1MpCiAKLSNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2lu
Y2x1ZGUgIkN1c3RvbUZpbHRlckNvbnN0YW50cy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0OwotCiBjbGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW06IHB1Ymxp
YyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY3JlYXRlKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmFsaWRh
dGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQuY3BwCmluZGV4IDAyYTk2YjguLjIzMDYwNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcApAQCAtNDMsOCArNDMsNiBAQCBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCkKIAogQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6fkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKQogewot
ICAgIGZvciAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3Byb2dyYW1zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQot
ICAgICAgICBpdGVyLT52YWx1ZS0+ZGV0YWNoRnJvbUdsb2JhbENvbnRleHQoKTsKIH0KIAogQU5H
TEVXZWJLaXRCcmlkZ2UqIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OndlYmdsU2hhZGVyVmFs
aWRhdG9yKCkKQEAgLTg3LDMwICs4NSw2IEBAIHZvaWQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dDo6cHJlcGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIG1f
Y29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNUKTsKIH0KIAotUGFz
c1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZv
JiBwcm9ncmFtSW5mbykKLXsKLSAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3JhbXMuZmluZChwcm9ncmFtSW5mbyk7Ci0gICAgaWYgKGl0
ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotCi0g
ICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0g
PSBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjcmVhdGUodGhpcywgcHJvZ3JhbUluZm8p
OwotICAgIG1fcHJvZ3JhbXMuc2V0KHByb2dyYW1JbmZvLCB2YWxpZGF0ZWRQcm9ncmFtLmdldCgp
KTsKLSAgICByZXR1cm4gdmFsaWRhdGVkUHJvZ3JhbS5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbShjb25zdCBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKiBwcm9ncmFtKQotewotICAgIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dy
YW0tPnByb2dyYW1JbmZvKCkpOwotICAgIEFTU0VSVChpdGVyICE9IG1fcHJvZ3JhbXMuZW5kKCkp
OwotICAgIG1fcHJvZ3JhbXMucmVtb3ZlKGl0ZXIpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIC8v
IENoZWNrIHRoYXQgdGhlcmUncyBubyB3YXkgd2UgY291bGQgaGF2ZSB0aGUgc2FtZSBwcm9ncmFt
IHVuZGVyIGEgZGlmZmVyZW50IGtleS4KLSAgICBmb3IgKGl0ZXIgPSBtX3Byb2dyYW1zLmJlZ2lu
KCk7IGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQotICAgICAgICBBU1NFUlQoaXRl
ci0+dmFsdWUgIT0gcHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oCmluZGV4IGFlMDI3MWYuLmI5OTEx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oCkBAIC02NiwxNiAr
NjYsMTIgQEAgcHVibGljOgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKiBtaXhTaGFkZXJWYWxpZGF0
b3IoKTsKICAgICAKICAgICB2b2lkIHByZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyop
OwotCi0gICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBnZXRWYWxp
ZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7Ci0gICAgdm9pZCBy
ZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0q
KTsKIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QU5HTEVXZWJLaXRCcmlkZ2U+IGNy
ZWF0ZVNoYWRlclZhbGlkYXRvcihTaFNoYWRlclNwZWMpOwogCiAgICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPEFOR0xFV2ViS2l0QnJpZGdlPiBtX3dl
YmdsU2hhZGVyVmFsaWRhdG9yOwogICAgIE93blB0cjxBTkdMRVdlYktpdEJyaWRnZT4gbV9taXhT
aGFkZXJWYWxpZGF0b3I7Ci0gICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXAgbV9w
cm9ncmFtczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uY3BwCmluZGV4IGUwNmJiMDAuLjYwOTNhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCIK
ICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2luY2x1ZGUgIkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwx
MSArODEsNSBAQCB2b2lkIEN1c3RvbUZpbHRlclByb2dyYW06Om5vdGlmeUNsaWVudHMoKQogICAg
ICAgICBpdGVyLT5rZXktPm5vdGlmeUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQodGhpcyk7CiB9
CiAKLUN1c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1J
bmZvKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNMb2FkZWQoKSk7Ci0gICAgcmV0dXJuIEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0
cmluZygpLCBtX3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdzLCBtX21lc2hUeXBlKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggZGEzN2UxNS4uZmFlMjVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCiAKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2luY2x1ZGUg
IkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MCw4ICs0MSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQU5HTEVXZWJLaXRCcmlkZ2U7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTsK
IGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQ7CiAKIC8vIFRoaXMgaXMgdGhlIGJhc2Ug
Y2xhc3MgZm9yIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gga25vd3Mg
aG93IHRvIGtlZXAKQEAgLTU0LDggKzU1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRDbGll
bnQoQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudCopOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KEN1
c3RvbUZpbHRlclByb2dyYW1DbGllbnQqKTsKLSAgICAKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbyBwcm9ncmFtSW5mbygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdmVydGV4U2hh
ZGVyU3RyaW5nKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGZyYWdtZW50U2hhZGVy
U3RyaW5nKCkgY29uc3QgPSAwOwpAQCAtNjMsOSArNjIsMTEgQEAgcHVibGljOgogICAgIEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
bWl4U2V0dGluZ3M7IH0KICAgICBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0KIAorICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbT4gdmFsaWRhdGVkUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRh
dGVkUHJvZ3JhbTsgfTsKKyAgICB2b2lkIHNldFZhbGlkYXRlZFByb2dyYW0oUGFzc1JlZlB0cjxD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtKSB7IG1fdmFsaWRh
dGVkUHJvZ3JhbSA9IHZhbGlkYXRlZFByb2dyYW07IH07CisKIHByb3RlY3RlZDoKLSAgICAvLyBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0aGF0IHRoZSBj
YWNoZWQgcmVzb3VyY2VzIGFyZQotICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMgcmVhZHkgdG8gY3Jl
YXRlIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBvYmplY3RzLgorICAgIC8vIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBjYW4gbm90aWZ5IHRoZSBjbGllbnRzIHRoYXQgdGhlIGNhY2hlZCBy
ZXNvdXJjZXMgYXJlIGxvYWRlZCBhbmQgcmVhZHkgdG8gdXNlLgogICAgIHZvaWQgbm90aWZ5Q2xp
ZW50cygpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxIYXZlQ2xpZW50cygpID0gMDsKQEAgLTg2
LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBtX3Byb2dy
YW1UeXBlOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtX21peFNldHRpbmdz
OwogICAgIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1fbWVzaFR5cGU7CisgICAgUmVmUHRyPEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IG1fdmFsaWRhdGVkUHJvZ3JhbTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IDQwZGE5
ZjguLjY5YWQ4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dC5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW0uaCIKICNp
bmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE1NywyNCArMTU4LDI0IEBAIFN0
cmluZyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpkZWZhdWx0RnJhZ21lbnRTaGFkZXJT
dHJpbmcoKQogICAgIHJldHVybiBmcmFnbWVudFNoYWRlclN0cmluZzsKIH0KIAotQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYgcHJvZ3JhbUluZm8pCi0gICAgOiBtX2dsb2JhbENvbnRleHQoZ2xvYmFsQ29udGV4
dCkKLSAgICAsIG1fcHJvZ3JhbUluZm8ocHJvZ3JhbUluZm8pCitDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW0qIHByb2dyYW0sIEFOR0xFV2ViS2l0QnJpZGdlKiBtaXhTaGFkZXJWYWxpZGF0b3Is
IEFOR0xFV2ViS2l0QnJpZGdlKiB3ZWJnbFNoYWRlclZhbGlkYXRvcikKKyAgICA6IG1fcHJvZ3Jh
bVR5cGUocHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSkKKyAgICAsIG1fbWVzaFR5cGUocHJvZ3JhbS0+
bWVzaFR5cGUoKSkKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKIHsKICAgICBwbGF0Zm9y
bUluaXQoKTsKIAotICAgIFN0cmluZyBvcmlnaW5hbFZlcnRleFNoYWRlciA9IHByb2dyYW1JbmZv
LnZlcnRleFNoYWRlclN0cmluZygpOworICAgIFN0cmluZyBvcmlnaW5hbFZlcnRleFNoYWRlciA9
IHByb2dyYW0tPnZlcnRleFNoYWRlclN0cmluZygpOwogICAgIGlmIChvcmlnaW5hbFZlcnRleFNo
YWRlci5pc051bGwoKSkKICAgICAgICAgb3JpZ2luYWxWZXJ0ZXhTaGFkZXIgPSBkZWZhdWx0VmVy
dGV4U2hhZGVyU3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgb3JpZ2luYWxGcmFnbWVudFNoYWRlciA9
IHByb2dyYW1JbmZvLmZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CisgICAgU3RyaW5nIG9yaWdpbmFs
RnJhZ21lbnRTaGFkZXIgPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlclN0cmluZygpOwogICAgIGlm
IChvcmlnaW5hbEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKQogICAgICAgICBvcmlnaW5hbEZyYWdt
ZW50U2hhZGVyID0gZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CiAKICAgICAvLyBTaGFk
ZXJzIHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbiB1c2UgYSBkaWZmZXJlbnQg
dmFsaWRhdG9yIHRoYW4gcmVndWxhciBXZWJHTCBzaGFkZXJzLiBTZWUgQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dC5oIGZvciBtb3JlIGRldGFpbHMuCi0gICAgYm9vbCBibGVuZHNFbGVtZW50VGV4
dHVyZSA9IChwcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNf
RUxFTUVOVF9URVhUVVJFKTsKLSAgICBBTkdMRVdlYktpdEJyaWRnZSogdmFsaWRhdG9yID0gYmxl
bmRzRWxlbWVudFRleHR1cmUgPyBtX2dsb2JhbENvbnRleHQtPm1peFNoYWRlclZhbGlkYXRvcigp
IDogbV9nbG9iYWxDb250ZXh0LT53ZWJnbFNoYWRlclZhbGlkYXRvcigpOworICAgIGJvb2wgYmxl
bmRzRWxlbWVudFRleHR1cmUgPSAocHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSA9PSBQUk9HUkFNX1RZ
UEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CisgICAgQU5HTEVXZWJLaXRCcmlkZ2UqIHZhbGlk
YXRvciA9IGJsZW5kc0VsZW1lbnRUZXh0dXJlID8gbWl4U2hhZGVyVmFsaWRhdG9yIDogd2ViZ2xT
aGFkZXJWYWxpZGF0b3I7CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJhZ21lbnRTaGFk
ZXJMb2c7CiAgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiBzeW1ib2xzOwogICAgIGJvb2wg
dmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPmNvbXBpbGVTaGFkZXJTb3VyY2Uob3JpZ2lu
YWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3ZhbGlk
YXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBzeW1ib2xzKTsKQEAgLTE4NSw3ICsx
ODYsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCF2YWxpZGF0ZVN5bWJvbHMoc3ltYm9scywgbV9wcm9ncmFtSW5mby5tZXNoVHlw
ZSgpKSkgeworICAgIGlmICghdmFsaWRhdGVTeW1ib2xzKHN5bWJvbHMsIHByb2dyYW0tPm1lc2hU
eXBlKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgdmFsaWRhdGlvbiBlcnJvcnMuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNgog
ICAgICAgICByZXR1cm47CkBAIC0xOTQsMzQgKzE5NSwxNCBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2Jh
bENvbgogICAgIC8vIFdlIG5lZWQgdG8gYWRkIHRleHR1cmUgYWNjZXNzLCBibGVuZGluZywgYW5k
IGNvbXBvc2l0aW5nIGNvZGUgdG8gc2hhZGVycyB0aGF0IGFyZSByZWZlcmVuY2VkIGZyb20gdGhl
IENTUyBtaXggZnVuY3Rpb24uCiAgICAgaWYgKGJsZW5kc0VsZW1lbnRUZXh0dXJlKSB7CiAgICAg
ICAgIHJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoc3ltYm9scyk7Ci0gICAgICAgIHJld3JpdGVNaXhG
cmFnbWVudFNoYWRlcigpOworICAgICAgICByZXdyaXRlTWl4RnJhZ21lbnRTaGFkZXIocHJvZ3Jh
bS0+bWl4U2V0dGluZ3MoKSk7CiAgICAgfQogCiAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsK
IH0KIAotUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW06OmNvbXBpbGVkUHJvZ3JhbSgpCi17Ci0gICAgQVNTRVJUKG1faXNJ
bml0aWFsaXplZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKLSAgICBp
ZiAoIW1fY29tcGlsZWRQcm9ncmFtKSB7Ci0gICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0
KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBt
X3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkpOwotICAgICAgICBBU1NFUlQobV9jb21waWxlZFBy
b2dyYW0tPmlzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgICAgIEFTU0VSVChtX2NvbXBpbGVkUHJvZ3Jh
bS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEgfHwgIW5lZWRzSW5wdXRUZXh0dXJlKCkpOwotICAg
IH0KLSAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07Ci19Ci0KLWJvb2wgQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6bmVlZHNJbnB1dFRleHR1cmUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVN
RU5UX1RFWFRVUkUKLSAgICAgICAgJiYgbV9wcm9ncmFtSW5mby5taXhTZXR0aW5ncygpLmNvbXBv
c2l0ZU9wZXJhdG9yICE9IENvbXBvc2l0ZUNsZWFyCi0gICAgICAgICYmIG1fcHJvZ3JhbUluZm8u
bWl4U2V0dGluZ3MoKS5jb21wb3NpdGVPcGVyYXRvciAhPSBDb21wb3NpdGVDb3B5OwotfQotCiB2
b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIo
Y29uc3QgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiYgc3ltYm9scykKIHsKLSAgICBBU1NFUlQo
bV9wcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVO
VF9URVhUVVJFKTsKLQogICAgIC8vIElmIHRoZSBhdXRob3IgZGVmaW5lZCBhX3RleENvb3JkLCB3
ZSBjYW4gdXNlIGl0IHRvIHNodXR0bGUgdGhlIHRleHR1cmUgY29vcmRpbmF0ZSB0byB0aGUgZnJh
Z21lbnQgc2hhZGVyLgogICAgIC8vIE5vdGUgdGhhdCB2ZXJ0ZXggYXR0cmlidXRlcyBhcmUgcmVh
ZC1vbmx5IGluIEdMU0wsIHNvIHRoZSBhdXRob3IgY291bGQgbm90IGhhdmUgY2hhbmdlZCBhX3Rl
eENvb3JkJ3MgdmFsdWUuCiAgICAgLy8gQWxzbywgbm90ZSB0aGF0IHdlIHdvdWxkIGhhdmUgYWxy
ZWFkeSByZWplY3RlZCB0aGUgc2hhZGVyIGlmIHRoZSBhdXRob3IgZGVmaW5lZCBhX3RleENvb3Jk
IHdpdGggdGhlIHdyb25nIHR5cGUuCkBAIC0yNDgsMTAgKzIyOSw4IEBAIHZvaWQgQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbTo6cmV3cml0ZU1peFZlcnRleFNoYWRlcihjb25zdCBWZWN0b3I8
QU5HTEVTaGFkCiAgICAgKSk7CiB9CiAKLXZvaWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6cmV3cml0ZU1peEZyYWdtZW50U2hhZGVyKCkKK3ZvaWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cmV3cml0ZU1peEZyYWdtZW50U2hhZGVyKGNvbnN0IEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MpCiB7Ci0gICAgQVNTRVJUKG1fcHJvZ3JhbUluZm8u
cHJvZ3JhbVR5cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7Ci0K
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgLy8gQU5HTEUgY29uc2lkZXJlZCB0aGVz
ZSBzeW1ib2xzIGFzIGJ1aWx0LWlucyBkdXJpbmcgdmFsaWRhdGlvbiB1bmRlciB0aGUgU0hfQ1NT
X1NIQURFUlNfU1BFQyBmbGFnLgogICAgIC8vIE5vdywgd2UgaGF2ZSB0byBkZWZpbmUgdGhlc2Ug
c3ltYm9scyBpbiBvcmRlciB0byBtYWtlIHRoaXMgc2hhZGVyIHZhbGlkIEdMU0wuCkBAIC0yNjEs
OCArMjQwLDggQEAgdm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4
RnJhZ21lbnRTaGFkZXIoKQogICAgICAgICBtZWRpdW1wIG1hdDQgY3NzX0NvbG9yTWF0cml4ID0g
bWF0NCgxLjApOwogICAgICkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKG1fdmFsaWRhdGVkRnJhZ21l
bnRTaGFkZXIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGJsZW5kRnVuY3Rpb25TdHJpbmcobV9wcm9n
cmFtSW5mby5taXhTZXR0aW5ncygpLmJsZW5kTW9kZSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGNv
bXBvc2l0ZUZ1bmN0aW9uU3RyaW5nKG1fcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5jb21wb3Np
dGVPcGVyYXRvcikpOworICAgIGJ1aWxkZXIuYXBwZW5kKGJsZW5kRnVuY3Rpb25TdHJpbmcobWl4
U2V0dGluZ3MuYmxlbmRNb2RlKSk7CisgICAgYnVpbGRlci5hcHBlbmQoY29tcG9zaXRlRnVuY3Rp
b25TdHJpbmcobWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpKTsKICAgICAvLyBXZSBkZWZp
bmUgc3ltYm9scyBsaWtlICJjc3NfdV90ZXh0dXJlIiBhZnRlciB0aGUgYXV0aG9yJ3Mgc2hhZGVy
IGNvZGUsIHdoaWNoIG1ha2VzIHRoZW0gaW5hY2Nlc3NpYmxlIHRvIGF1dGhvciBjb2RlLgogICAg
IC8vIEluIHBhcnRpY3VsYXIsICJjc3NfdV90ZXh0dXJlIiByZXByZXNlbnRzIHRoZSBET00gZWxl
bWVudCB0ZXh0dXJlLCBzbyBpdCdzIGltcG9ydGFudCB0byBrZWVwIGl0IGluYWNjZXNzaWJsZSB0
bwogICAgIC8vIGF1dGhvciBjb2RlIGZvciBzZWN1cml0eSByZWFzb25zLgpAQCAtNTk3LDE1ICs1
NzYsNiBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcG9zaXRlRnVu
Y3Rpb25TdHJpbmcoQ29tcG9zaXRlT3BlcmF0b3IgYwogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oKQogewogICAgIHBsYXRmb3JtRGVz
dHJveSgpOwotCi0gICAgaWYgKG1fZ2xvYmFsQ29udGV4dCkKLSAgICAgICAgbV9nbG9iYWxDb250
ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwotfQotCi1DdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFtSW5m
bygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7Ci0gICAgcmV0dXJuIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvKG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRl
ZEZyYWdtZW50U2hhZGVyLCBtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCksIG1fcHJvZ3JhbUlu
Zm8ubWl4U2V0dGluZ3MoKSwgbV9wcm9ncmFtSW5mby5tZXNoVHlwZSgpKTsKIH0KIAogI2lmICFQ
TEFURk9STShCTEFDS0JFUlJZKSAmJiAhVVNFKFRFWFRVUkVfTUFQUEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRleCBjNjhmNGE3Li40OTE5OWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAtMzMsNyAr
MzMsNyBAQAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKIAogI2luY2x1ZGUgIkN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbS5oIgotI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgi
CisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTUwLDggKzUwLDkgQEAgdHlwZWRlZiBXZWJDb3JlOjpMYXllckNvbXBpbGVkUHJv
Z3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEFOR0xFU2hhZGVyU3ltYm9sOwotY2xhc3MgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
OwotY2xhc3MgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDsKK2NsYXNzIEFOR0xFV2ViS2l0QnJp
ZGdlOworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKK3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9n
cmFtTWl4U2V0dGluZ3M7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBjbGFzcyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1Db21waWxlZFByb2dyYW07CkBAIC01OSwzMiArNjAsMjAgQEAgdHlwZWRl
ZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1Db21waWxlZFByb2dyYW0gUGxhdGZvcm1Db21waWxlZFBy
b2dyYW07CiAjZW5kaWYKIAogLy8KLS8vIEEgdW5pcXVlIGNvbWJpbmF0aW9uIG9mIHZlcnRleCBz
aGFkZXIgYW5kIGZyYWdtZW50IHNoYWRlciBpcyBvbmx5IHZhbGlkYXRlZCBhbmQgY29tcGlsZWQg
b25jZS4KIC8vIEFsbCBzaGFkZXJzIGFyZSB2YWxpZGF0ZWQgdGhyb3VnaCBBTkdMRSBpbiBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtIGJlZm9yZSBiZWluZyBjb21waWxlZCBieSB0aGUgR3Jh
cGhpY3NDb250ZXh0M0QgaW4gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgogLy8gRm9yIHNo
YWRlcnMgdGhhdCB1c2UgdGhlIENTUyBtaXggZnVuY3Rpb24sIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0gYWRkcyBzaGFkZXIgY29kZSB0byBwZXJmb3JtIERPTSB0ZXh0dXJlIGFjY2Vzcywg
YmxlbmRpbmcsIGFuZCBjb21wb3NpdGluZy4KIC8vCi0vLyBUaGUgQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dCBjYWNoZXMgdGhlIHZhbGlkYXRlZCBwcm9ncmFtcy4KLS8vIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0gb3ducyBhIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBpZiB2YWxp
ZGF0aW9uIGFuZCBjb21waWxhdGlvbiBzdWNjZWVkcy4KLS8vIFRodXMsIGNvbXBpbGVkIHByb2dy
YW1zIGFyZSBjYWNoZWQgdmlhIHRoZWlyIHZhbGlkYXRlZCBwcm9ncmFtIG93bmVycy4KLS8vCi0v
LyBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSBD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLgotLy8gVGh1cywgdGhlIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0gZGVzdHJ1Y3RvciBuZWVkcyB0byBub3RpZnkgdGhlIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQgdG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20gdGhlIGNhY2hlLgotLy8g
RkVDdXN0b21GaWx0ZXIgaXMgdGhlIHJlZmVyZW5jZSBvd25lciBvZiB0aGUgQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS4KLS8vIFRodXMsIGEgdmFsaWRhdGVkIGFuZCBjb21waWxlZCBzaGFk
ZXIgaXMgb25seSBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZp
c2libGUgbGF5ZXIgdGhhdCBhcHBsaWVzIHRoZSBzaGFkZXIuCi0vLwogY2xhc3MgQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtPiBjcmVhdGUoQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xv
YmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IGNyZWF0
ZShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtLCBBTkdMRVdlYktpdEJyaWRnZSog
bWl4U2hhZGVyVmFsaWRhdG9yLCBBTkdMRVdlYktpdEJyaWRnZSogd2ViZ2xTaGFkZXJWYWxpZGF0
b3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0oZ2xvYmFsQ29udGV4dCwgcHJvZ3JhbUluZm8pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKHByb2dyYW0sIG1peFNo
YWRlclZhbGlkYXRvciwgd2ViZ2xTaGFkZXJWYWxpZGF0b3IpKTsKICAgICB9CiAKICAgICB+Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSgpOwogCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8mIHByb2dyYW1JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtSW5mbzsgfQot
ICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHZhbGlkYXRlZFByb2dyYW1JbmZvKCkgY29uc3Q7
Ci0gICAgCi0gICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBp
bGVkUHJvZ3JhbSgpOworICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
PiBjb21waWxlZFByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX2NvbXBpbGVkUHJvZ3JhbTsgfQor
ICAgIHZvaWQgc2V0Q29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0pIHsgbV9jb21waWxlZFByb2dyYW0gPSBjb21waWxl
ZFByb2dyYW07IH0KIAogICAgIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyKCkg
Y29uc3QgCiAgICAgewpAQCAtOTgsMTcgKzg3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXI7IAogICAgIH0KIAorICAgIEN1c3RvbUZpbHRlclBy
b2dyYW1UeXBlIHByb2dyYW1UeXBlKCkgeyByZXR1cm4gbV9wcm9ncmFtVHlwZTsgfTsKKyAgICBD
dXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSgpIHsgcmV0dXJuIG1fbWVzaFR5cGU7IH07CisK
ICNpZiBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgUGxh
dGZvcm1Db21waWxlZFByb2dyYW0qIHBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKCk7CiAjZW5kaWYK
IAogICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXpl
ZDsgfQogCi0gICAgLy8gJ2RldGFjaEZyb21HbG9iYWxDb250ZXh0JyBpcyBjYWxsZWQgd2hlbiB0
aGUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBpcyBkZWxldGVkLCBhbmQgdGhlcmUncyBubyBu
ZWVkIGZvciB0aGUgY2FsbGJhY2sgYW55bW9yZS4gCi0gICAgLy8gTm90ZSB0aGF0IEN1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQgZG9lcyBub3Qga2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gdGhl
IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uCi0gICAgdm9pZCBkZXRhY2hGcm9tR2xvYmFs
Q29udGV4dCgpIHsgbV9nbG9iYWxDb250ZXh0ID0gMDsgfQogcHJpdmF0ZToKLSAgICBDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQqLCBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOworICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSwgQU5HTEVXZWJLaXRCcmlkZ2Uq
IG1peFNoYWRlclZhbGlkYXRvciwgQU5HTEVXZWJLaXRCcmlkZ2UqIHdlYmdsU2hhZGVyVmFsaWRh
dG9yKTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ry
b3koKTsKQEAgLTEyMCwxNSArMTA5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyBj
b21wb3NpdGVGdW5jdGlvblN0cmluZyhDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICB2b2lkIHJl
d3JpdGVNaXhWZXJ0ZXhTaGFkZXIoY29uc3QgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiYgc3lt
Ym9scyk7Ci0gICAgdm9pZCByZXdyaXRlTWl4RnJhZ21lbnRTaGFkZXIoKTsKLQotICAgIGJvb2wg
bmVlZHNJbnB1dFRleHR1cmUoKSBjb25zdDsKLQotICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQqIG1fZ2xvYmFsQ29udGV4dDsKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBtX3Byb2dy
YW1JbmZvOworICAgIHZvaWQgcmV3cml0ZU1peEZyYWdtZW50U2hhZGVyKGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MpOwogCiAgICAgU3RyaW5nIG1fdmFs
aWRhdGVkVmVydGV4U2hhZGVyOwogICAgIFN0cmluZyBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVy
OworICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIG1fcHJvZ3JhbVR5cGU7CisgICAgQ3VzdG9t
RmlsdGVyTWVzaFR5cGUgbV9tZXNoVHlwZTsKIAogICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
IHx8IFVTRShURVhUVVJFX01BUFBFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKaW5kZXggMTU4MTMx
MS4uNWVjNTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRkVDdXN0b21GaWx0ZXI6OkZFQ3VzdG9tRmlsdGVyKEZpbHRl
ciogZmlsdGVyLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzUmVm
UHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0sIGNvbnN0
IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsCi0gICAgdW5zaWduZWQgbWVz
aFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlw
ZSkKKyAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMpCiAgICAgOiBG
aWx0ZXJFZmZlY3QoZmlsdGVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3Zh
bGlkYXRlZFByb2dyYW0odmFsaWRhdGVkUHJvZ3JhbSkKQEAgLTU5LDEzICs1OSwxMyBAQCBGRUN1
c3RvbUZpbHRlcjo6RkVDdXN0b21GaWx0ZXIoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbgogICAgICwgbV9tdWx0aXNhbXBsZURlcHRoQnVmZmVyKDApCiB7
CiAgICAgLy8gV2Ugd2lsbCBub3QgcGFzcyBhIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBo
ZXJlLCBhcyB3ZSBvbmx5IHdhbnQgdG8gY29tcGlsZSBpdCB3aGVuIHdlIGFjdHVhbGx5IG5lZWQg
aXQgaW4gdGhlIGZpcnN0IHBhaW50LgotICAgIG1fY3VzdG9tRmlsdGVyUmVuZGVyZXIgPSBDdXN0
b21GaWx0ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV92YWxpZGF0ZWRQcm9ncmFtLT5w
cm9ncmFtSW5mbygpLnByb2dyYW1UeXBlKCksIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29s
dW1ucywgbWVzaFR5cGUpOworICAgIG1fY3VzdG9tRmlsdGVyUmVuZGVyZXIgPSBDdXN0b21GaWx0
ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV92YWxpZGF0ZWRQcm9ncmFtLT5wcm9ncmFt
VHlwZSgpLCBwYXJhbWV0ZXJzLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1fdmFsaWRhdGVkUHJv
Z3JhbS0+bWVzaFR5cGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IEZFQ3Vz
dG9tRmlsdGVyOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4g
dmFsaWRhdGVkUHJvZ3JhbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1l
dGVycywKLSAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3Rv
bUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQorICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25l
ZCBtZXNoQ29sdW1ucykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFQ3VzdG9tRmlsdGVy
KGZpbHRlciwgY29udGV4dCwgdmFsaWRhdGVkUHJvZ3JhbSwgcGFyYW1ldGVycywgbWVzaFJvd3Ms
IG1lc2hDb2x1bW5zLCBtZXNoVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVDdXN0
b21GaWx0ZXIoZmlsdGVyLCBjb250ZXh0LCB2YWxpZGF0ZWRQcm9ncmFtLCBwYXJhbWV0ZXJzLCBt
ZXNoUm93cywgbWVzaENvbHVtbnMpKTsKIH0KIAogRkVDdXN0b21GaWx0ZXI6On5GRUN1c3RvbUZp
bHRlcigpCkBAIC0xNTYsOSArMTU2LDE3IEBAIGJvb2wgRkVDdXN0b21GaWx0ZXI6OnByZXBhcmVG
b3JEcmF3aW5nKCkKIHsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0g
ICAgLy8gTGF6aWx5IGluamVjdCB0aGUgY29tcGlsZWQgcHJvZ3JhbSBpbnRvIHRoZSBDdXN0b21G
aWx0ZXJSZW5kZXJlci4KLSAgICBpZiAoIW1fY3VzdG9tRmlsdGVyUmVuZGVyZXItPmNvbXBpbGVk
UHJvZ3JhbSgpKQorICAgIGlmICghbV9jdXN0b21GaWx0ZXJSZW5kZXJlci0+Y29tcGlsZWRQcm9n
cmFtKCkpIHsKKyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY29t
cGlsZWRQcm9ncmFtID0gbV92YWxpZGF0ZWRQcm9ncmFtLT5jb21waWxlZFByb2dyYW0oKTsKKyAg
ICAgICAgaWYgKCFjb21waWxlZFByb2dyYW0pIHsKKyAgICAgICAgICAgIC8vIExhemlseSBjcmVh
dGUgYSBjb21waWxlZCBwcm9ncmFtIGFuZCBsZXQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bSBob2xkIG9uIHRvIGl0LgorICAgICAgICAgICAgQVNTRVJUKG1fdmFsaWRhdGVkUHJvZ3JhbS0+
aXNJbml0aWFsaXplZCgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fY29udGV4dCwgbV92YWxpZGF0ZWRQcm9ncmFt
LT52YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIoKSwgbV92YWxpZGF0ZWRQcm9ncmFtLT52YWxpZGF0ZWRG
cmFnbWVudFNoYWRlcigpLCBtX3ZhbGlkYXRlZFByb2dyYW0tPnByb2dyYW1UeXBlKCkpOworICAg
ICAgICAgICAgbV92YWxpZGF0ZWRQcm9ncmFtLT5zZXRDb21waWxlZFByb2dyYW0oY29tcGlsZWRQ
cm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICAvLyBMYXppbHkgaW5qZWN0IHRoZSBjb21waWxl
ZCBwcm9ncmFtIGludG8gdGhlIEN1c3RvbUZpbHRlclJlbmRlcmVyLgogICAgICAgICBtX2N1c3Rv
bUZpbHRlclJlbmRlcmVyLT5zZXRDb21waWxlZFByb2dyYW0obV92YWxpZGF0ZWRQcm9ncmFtLT5j
b21waWxlZFByb2dyYW0oKSk7CisgICAgfQogCiAgICAgaWYgKCFtX2N1c3RvbUZpbHRlclJlbmRl
cmVyLT5wcmVwYXJlRm9yRHJhd2luZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9t
RmlsdGVyLmgKaW5kZXggZmUyOWI1NC4uYjNjOGYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaApAQCAt
NTMsNyArNTMsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgRkVDdXN0b21GaWx0ZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUN1c3Rv
bUZpbHRlcj4gY3JlYXRlKEZpbHRlciosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQ
YXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+LCBjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0JiwKLSAgICAgICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1l
c2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSk7CisgICAgICAgIHVuc2lnbmVkIG1lc2hS
b3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZFQ3VzdG9tRmlsdGVyKEZpbHRlciosIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0+LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiwKLSAgICAgICAgdW5z
aWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBDdXN0b21GaWx0ZXJNZXNoVHlw
ZSk7CisgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucyk7CiAg
ICAgfkZFQ3VzdG9tRmlsdGVyKCk7CiAKICAgICBib29sIGFwcGx5U2hhZGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAy
ZGU5MWM0Li41ZDViNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3RvbUZpbHRlckVmZmVjdChGaWx0ZXIqIGZpbHRlciwg
RG9jdW0KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gRkVDdXN0b21GaWx0ZXI6OmNy
ZWF0ZShmaWx0ZXIsIGdsb2JhbENvbnRleHQtPmNvbnRleHQoKSwgb3BlcmF0aW9uLT52YWxpZGF0
ZWRQcm9ncmFtKCksIG9wZXJhdGlvbi0+cGFyYW1ldGVycygpLAotICAgICAgICBvcGVyYXRpb24t
Pm1lc2hSb3dzKCksIG9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSwgIG9wZXJhdGlvbi0+bWVzaFR5
cGUoKSk7CisgICAgICAgIG9wZXJhdGlvbi0+bWVzaFJvd3MoKSwgb3BlcmF0aW9uLT5tZXNoQ29s
dW1ucygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCAwMDRjNGE5Li44ZjIxN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTYzMjcsOCArNjMyNywxNCBAQCBGaWx0ZXJPcGVyYXRpb25zIFJl
bmRlckxheWVyOjpjb21wdXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUpCiAgICAgICAgICAgICBpZiAoIXByb2dyYW0tPmlzTG9hZGVkKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEN1c3RvbUZpbHRlckdsb2Jh
bENvbnRleHQqIGdsb2JhbENvbnRleHQgPSByZW5kZXJlcigpLT52aWV3KCktPmN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtID0gZ2xvYmFsQ29udGV4dC0+Z2V0VmFsaWRhdGVk
UHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSW5mbygpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtID0gcHJvZ3JhbS0+dmFs
aWRhdGVkUHJvZ3JhbSgpOworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZWRQcm9ncmFtKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTGF6aWx5IGNyZWF0ZSBhIHZhbGlkYXRlZCBwcm9ncmFtIGFuZCBz
dG9yZSBpdCBvbiB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgICAgICAgICBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0ID0gcmVuZGVyZXIoKS0+dmlldygp
LT5jdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVk
UHJvZ3JhbSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNyZWF0ZShwcm9ncmFtLmdl
dCgpLCBnbG9iYWxDb250ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSwgZ2xvYmFsQ29udGV4dC0+
d2ViZ2xTaGFkZXJWYWxpZGF0b3IoKSk7CisgICAgICAgICAgICAgICAgcHJvZ3JhbS0+c2V0VmFs
aWRhdGVkUHJvZ3JhbSh2YWxpZGF0ZWRQcm9ncmFtKTsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgaWYgKCF2YWxpZGF0ZWRQcm9ncmFtLT5pc0luaXRpYWxpemVkKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAK
</data>
<flag name="commit-queue"
          id="219735"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198188</attachid>
            <date>2013-04-15 14:47:29 -0700</date>
            <delta_ts>2013-04-15 16:42:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>112844-2.patch</filename>
            <type>text/plain</type>
            <size>11986</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzY0NTY5Li45YWM0ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTMtMDQtMTUgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gUmVtb3ZlIHRoZSBjYWNoZSBvZiB2YWxpZGF0ZWQgcHJvZ3JhbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHdl
J3JlIGNhY2hpbmcgQ3VzdG9tRmlsdGVyUHJvZ3JhbShzKSBub3csIHdlIGRvbid0IG5lZWQgYW5v
dGhlciBjYWNoZSBmb3IKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShzKS4g
V2l0aCB0aGlzIHBhdGNoLCBDdXN0b21GaWx0ZXJQcm9ncmFtIHN0b3JlcyBhIHJlZmVyZW5jZQor
ICAgICAgICB0byBhIGxhemlseSBjcmVhdGVkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0s
IGFuZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IG5vIGxvbmdlcgorICAgICAgICBoYXMgYSB2
YWxpZGF0ZWQgcHJvZ3JhbSBjYWNoZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEp1c3QgUmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dDo6fkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6dmFsaWRhdGVkUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dy
YW06OnNldFZhbGlkYXRlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06On5D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZUZpbHRlck9wZXJhdGlvbnMpOgorCiAyMDEzLTA0LTE1
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayBzaG91bGQgY2xlYXIgdHJhY2sgY2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCAwMmE5NmI4Li40
ZjVkZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKQEAg
LTMyLDcgKzMyLDYgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElD
UykKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsOCArNDIsNiBAQCBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0OjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCkKIAogQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dDo6fkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKQogewotICAgIGZv
ciAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3By
b2dyYW1zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQotICAgICAg
ICBpdGVyLT52YWx1ZS0+ZGV0YWNoRnJvbUdsb2JhbENvbnRleHQoKTsKIH0KIAogQU5HTEVXZWJL
aXRCcmlkZ2UqIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OndlYmdsU2hhZGVyVmFsaWRhdG9y
KCkKQEAgLTg3LDMwICs4NCw2IEBAIHZvaWQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJl
cGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIG1fY29udGV4
dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNUKTsKIH0KIAotUGFzc1JlZlB0
cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
OjpnZXRWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9n
cmFtSW5mbykKLXsKLSAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6aXRlcmF0
b3IgaXRlciA9IG1fcHJvZ3JhbXMuZmluZChwcm9ncmFtSW5mbyk7Ci0gICAgaWYgKGl0ZXIgIT0g
bV9wcm9ncmFtcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotCi0gICAgUmVm
UHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0gPSBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjcmVhdGUodGhpcywgcHJvZ3JhbUluZm8pOwotICAg
IG1fcHJvZ3JhbXMuc2V0KHByb2dyYW1JbmZvLCB2YWxpZGF0ZWRQcm9ncmFtLmdldCgpKTsKLSAg
ICByZXR1cm4gdmFsaWRhdGVkUHJvZ3JhbS5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dDo6cmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbShjb25zdCBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtKiBwcm9ncmFtKQotewotICAgIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW0tPnBy
b2dyYW1JbmZvKCkpOwotICAgIEFTU0VSVChpdGVyICE9IG1fcHJvZ3JhbXMuZW5kKCkpOwotICAg
IG1fcHJvZ3JhbXMucmVtb3ZlKGl0ZXIpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIC8vIENoZWNr
IHRoYXQgdGhlcmUncyBubyB3YXkgd2UgY291bGQgaGF2ZSB0aGUgc2FtZSBwcm9ncmFtIHVuZGVy
IGEgZGlmZmVyZW50IGtleS4KLSAgICBmb3IgKGl0ZXIgPSBtX3Byb2dyYW1zLmJlZ2luKCk7IGl0
ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQotICAgICAgICBBU1NFUlQoaXRlci0+dmFs
dWUgIT0gcHJvZ3JhbSk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oCmluZGV4IGFlMDI3MWYuLjg2NmY2MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oCkBAIC0zMiwxOCArMzIsMTQg
QEAKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1
ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCi10eXBl
ZGVmIEhhc2hNYXA8Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8sIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0qPiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDsKLQogY2xhc3MgQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dCgpOwpAQCAtNjYsMTYgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBBTkdMRVdlYktpdEJy
aWRnZSogbWl4U2hhZGVyVmFsaWRhdG9yKCk7CiAgICAgCiAgICAgdm9pZCBwcmVwYXJlQ29udGV4
dElmTmVlZGVkKEhvc3RXaW5kb3cqKTsKLQotICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbT4gZ2V0VmFsaWRhdGVkUHJvZ3JhbShjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYpOwotICAgIHZvaWQgcmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbShjb25zdCBDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKik7CiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PEFOR0xFV2ViS2l0QnJpZGdlPiBjcmVhdGVTaGFkZXJWYWxpZGF0b3IoU2hTaGFkZXJTcGVjKTsK
IAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgIE93blB0cjxB
TkdMRVdlYktpdEJyaWRnZT4gbV93ZWJnbFNoYWRlclZhbGlkYXRvcjsKICAgICBPd25QdHI8QU5H
TEVXZWJLaXRCcmlkZ2U+IG1fbWl4U2hhZGVyVmFsaWRhdG9yOwotICAgIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW1zTWFwIG1fcHJvZ3JhbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAppbmRleCBlMDZiYjAwLi5mMjc2OWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaCIKICNpbmNsdWRlICJDdXN0b21G
aWx0ZXJQcm9ncmFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8u
aCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtODYsNSArODcsMTUgQEAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8g
Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8oKSBjb25zdAogICAgIHJldHVybiBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJT
dHJpbmcoKSwgbV9wcm9ncmFtVHlwZSwgbV9taXhTZXR0aW5ncywgbV9tZXNoVHlwZSk7CiB9CiAK
K1Bhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyUHJv
Z3JhbTo6dmFsaWRhdGVkUHJvZ3JhbSgpCit7CisgICAgcmV0dXJuIG1fdmFsaWRhdGVkUHJvZ3Jh
bTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRWYWxpZGF0ZWRQcm9ncmFtKFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gdmFsaWRhdGVkUHJvZ3JhbSkK
K3sKKyAgICBtX3ZhbGlkYXRlZFByb2dyYW0gPSB2YWxpZGF0ZWRQcm9ncmFtOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBkYTM3ZTE1Li43MWYwZTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW0uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOworY2xhc3MgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTsKIGNsYXNzIEN1c3RvbUZp
bHRlclByb2dyYW1DbGllbnQ7CiAKIC8vIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gga25vd3MgaG93IHRvIGtlZXAKQEAg
LTYzLDYgKzY0LDkgQEAgcHVibGljOgogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyBtaXhTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fbWl4U2V0dGluZ3M7IH0KICAgICBDdXN0
b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0K
IAorICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gdmFsaWRhdGVk
UHJvZ3JhbSgpOworICAgIHZvaWQgc2V0VmFsaWRhdGVkUHJvZ3JhbShQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0+KTsKKwogcHJvdGVjdGVkOgogICAgIC8vIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBjYW4gbm90aWZ5IHRoZSBjbGllbnRzIHRoYXQgdGhlIGNhY2hlZCBy
ZXNvdXJjZXMgYXJlCiAgICAgLy8gbG9hZGVkIGFuZCBpdCBpcyByZWFkeSB0byBjcmVhdGUgQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIG9iamVjdHMuCkBAIC04Niw2ICs5MCw3IEBAIHByaXZh
dGU6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgbV9wcm9ncmFtVHlwZTsKICAgICBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbV9taXhTZXR0aW5nczsKICAgICBDdXN0b21GaWx0
ZXJNZXNoVHlwZSBtX21lc2hUeXBlOworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtPiBtX3ZhbGlkYXRlZFByb2dyYW07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAppbmRleCA0MGRhOWY4Li4yMTllOGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKQEAgLTU5Nyw5
ICs1OTcsNiBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcG9zaXRl
RnVuY3Rpb25TdHJpbmcoQ29tcG9zaXRlT3BlcmF0b3IgYwogQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oKQogewogICAgIHBsYXRmb3Jt
RGVzdHJveSgpOwotCi0gICAgaWYgKG1fZ2xvYmFsQ29udGV4dCkKLSAgICAgICAgbV9nbG9iYWxD
b250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwogfQogCiBDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFt
SW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5o
CmluZGV4IGM2OGY0YTcuLjU3ZWIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbS5oCkBAIC02MywxNSArNjMsNiBAQCB0eXBlZGVmIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKIC8vIEFsbCBz
aGFkZXJzIGFyZSB2YWxpZGF0ZWQgdGhyb3VnaCBBTkdMRSBpbiBDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtIGJlZm9yZSBiZWluZyBjb21waWxlZCBieSB0aGUgR3JhcGhpY3NDb250ZXh0M0Qg
aW4gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgogLy8gRm9yIHNoYWRlcnMgdGhhdCB1c2Ug
dGhlIENTUyBtaXggZnVuY3Rpb24sIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0gYWRkcyBz
aGFkZXIgY29kZSB0byBwZXJmb3JtIERPTSB0ZXh0dXJlIGFjY2VzcywgYmxlbmRpbmcsIGFuZCBj
b21wb3NpdGluZy4KIC8vCi0vLyBUaGUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBjYWNoZXMg
dGhlIHZhbGlkYXRlZCBwcm9ncmFtcy4KLS8vIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0g
b3ducyBhIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBpZiB2YWxpZGF0aW9uIGFuZCBjb21w
aWxhdGlvbiBzdWNjZWVkcy4KLS8vIFRodXMsIGNvbXBpbGVkIHByb2dyYW1zIGFyZSBjYWNoZWQg
dmlhIHRoZWlyIHZhbGlkYXRlZCBwcm9ncmFtIG93bmVycy4KLS8vCi0vLyBDdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSBDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtLgotLy8gVGh1cywgdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0g
ZGVzdHJ1Y3RvciBuZWVkcyB0byBub3RpZnkgdGhlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQg
dG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20gdGhlIGNhY2hlLgotLy8gRkVDdXN0b21GaWx0ZXIg
aXMgdGhlIHJlZmVyZW5jZSBvd25lciBvZiB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS4KLS8vIFRodXMsIGEgdmFsaWRhdGVkIGFuZCBjb21waWxlZCBzaGFkZXIgaXMgb25seSBrZXB0
IGFsaXZlIGFzIGxvbmcgYXMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZpc2libGUgbGF5ZXIgdGhh
dCBhcHBsaWVzIHRoZSBzaGFkZXIuCi0vLwogY2xhc3MgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtPiBjcmVhdGUoQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29u
c3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQpAQCAtMTAzLDEwICs5NCw2
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9Ci0KLSAgICAvLyAnZGV0YWNoRnJvbUdsb2JhbENvbnRl
eHQnIGlzIGNhbGxlZCB3aGVuIHRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IGlzIGRlbGV0
ZWQsIGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZSBjYWxsYmFjayBhbnltb3JlLiAKLSAgICAv
LyBOb3RlIHRoYXQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBkb2VzIG5vdCBrZWVwIGEgc3Ry
b25nIHJlZmVyZW5jZSB0byB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS4KLSAgICB2
b2lkIGRldGFjaEZyb21HbG9iYWxDb250ZXh0KCkgeyBtX2dsb2JhbENvbnRleHQgPSAwOyB9CiBw
cml2YXRlOgogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dCosIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDE3OTRkZWQuLjgxMjUyZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjMzMiw5ICs2MzMy
LDE1IEBAIEZpbHRlck9wZXJhdGlvbnMgUmVuZGVyTGF5ZXI6OmNvbXB1dGVGaWx0ZXJPcGVyYXRp
b25zKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CiAgICAg
ICAgICAgICBpZiAoIXByb2dyYW0tPmlzTG9hZGVkKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQq
IGdsb2JhbENvbnRleHQgPSByZW5kZXJlcigpLT52aWV3KCktPmN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
PiB2YWxpZGF0ZWRQcm9ncmFtID0gZ2xvYmFsQ29udGV4dC0+Z2V0VmFsaWRhdGVkUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtSW5mbygpKTsKKworICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0gPSBwcm9ncmFtLT52YWxpZGF0ZWRQ
cm9ncmFtKCk7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlZFByb2dyYW0pIHsKKyAgICAgICAg
ICAgICAgICAvLyBMYXppbHkgY3JlYXRlIGEgdmFsaWRhdGVkIHByb2dyYW0gYW5kIHN0b3JlIGl0
IG9uIHRoZSBDdXN0b21GaWx0ZXJQcm9ncmFtLgorICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQqIGdsb2JhbENvbnRleHQgPSByZW5kZXJlcigpLT52aWV3KCktPmN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQoKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZWRQcm9ncmFt
ID0gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y3JlYXRlKGdsb2JhbENvbnRleHQsIHBy
b2dyYW0tPnByb2dyYW1JbmZvKCkpOworICAgICAgICAgICAgICAgIHByb2dyYW0tPnNldFZhbGlk
YXRlZFByb2dyYW0odmFsaWRhdGVkUHJvZ3JhbSk7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGlmICghdmFsaWRhdGVkUHJvZ3JhbS0+aXNJbml0aWFsaXplZCgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCg==
</data>
<flag name="commit-queue"
          id="219987"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198201</attachid>
            <date>2013-04-15 16:42:18 -0700</date>
            <delta_ts>2013-04-15 16:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>112844-3.patch</filename>
            <type>text/plain</type>
            <size>19266</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzY0NTY5Li5lYWZhNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTMtMDQtMTUgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gUmVtb3ZlIHRoZSBjYWNoZSBvZiB2YWxpZGF0ZWQgcHJvZ3JhbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHdl
J3JlIGNhY2hpbmcgQ3VzdG9tRmlsdGVyUHJvZ3JhbShzKSBub3csIHdlIGRvbid0IG5lZWQgYW5v
dGhlciBjYWNoZSBmb3IKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShzKS4g
V2l0aCB0aGlzIHBhdGNoLCBDdXN0b21GaWx0ZXJQcm9ncmFtIHN0b3JlcyBhIHJlZmVyZW5jZQor
ICAgICAgICB0byBhIGxhemlseSBjcmVhdGVkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0s
IGFuZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IG5vIGxvbmdlcgorICAgICAgICBoYXMgYSB2
YWxpZGF0ZWQgcHJvZ3JhbSBjYWNoZS4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHJlbW92
ZXMgdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0ncyBzdG9yZWQgcmVmZXJlbmNlIHRv
CisgICAgICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuIFRoZSByZW1vdmFsIG9mIHRoZSB2
YWxpZGF0ZWQgcHJvZ3JhbSBjYWNoZSB3b3VsZCBjYXVzZQorICAgICAgICB0aGlzIHJlZmVyZW5j
ZSB0byBiZWNvbWUgd2Vhay4gVmFsaWRhdGVkIHByb2dyYW1zIG9ubHkgbmVlZGVkIHRvIGtlZXAg
dGhlIGdsb2JhbCBjb250ZXh0CisgICAgICAgIHJlZmVyZW5jZSBpbiBvcmRlciB0byBjcmVhdGUg
YSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uIEluIHRoaXMgcGF0Y2gsIHdlIGNyZWF0ZQor
ICAgICAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0ocykgaW4gRkVDdXN0b21GaWx0ZXIg
aW5zdGVhZCBvZiBpbiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLAorICAgICAgICBzbyB2
YWxpZGF0ZWQgcHJvZ3JhbXMgZG9uJ3QgbmVlZCB0byBzdG9yZSB0aGUgZ2xvYmFsIGNvbnRleHQg
cmVmZXJlbmNlIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IFJlZmFjdG9y
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6c2V0VmFsaWRhdGVkUHJvZ3JhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21waWxl
ZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6c2V0Q29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmls
dGVyOjpwcmVwYXJlRm9yRHJhd2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVGaWx0ZXJPcGVyYXRpb25zKToKKwog
MjAxMy0wNC0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2sgc2hvdWxkIGNsZWFyIHRyYWNr
IGNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCmlu
ZGV4IDI2OTY1ZDAuLjM0Yjc1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAKQEAgLTUyLDYgKzUyLDggQEAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnQK
ICAgICAsIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1faXNJbml0aWFsaXpl
ZChmYWxzZSkKIHsKKyAgICBBU1NFUlQoIXZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAm
JiAhdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIuaXNOdWxsKCkpOworCiAgICAgbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVy
ID0gY29tcGlsZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmFsaWRh
dGVkVmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
Y3BwCmluZGV4IDAyYTk2YjguLjRmNWRkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuaCIKIAotI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw4
ICs0Miw2IEBAIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OkN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQoKQogCiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dCgpCiB7Ci0gICAgZm9yIChDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3JhbXMuYmVnaW4oKTsgaXRlciAhPSBtX3Byb2dyYW1zLmVu
ZCgpOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnZhbHVlLT5kZXRhY2hGcm9tR2xvYmFsQ29udGV4
dCgpOwogfQogCiBBTkdMRVdlYktpdEJyaWRnZSogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6
d2ViZ2xTaGFkZXJWYWxpZGF0b3IoKQpAQCAtODcsMzAgKzg0LDYgQEAgdm9pZCBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCiAgICAgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RF
U1QpOwogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IEN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQotewotICAgIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZv
KTsKLSAgICBpZiAoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7Ci0KLSAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gdmFs
aWRhdGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNyZWF0ZSh0aGlz
LCBwcm9ncmFtSW5mbyk7Ci0gICAgbV9wcm9ncmFtcy5zZXQocHJvZ3JhbUluZm8sIHZhbGlkYXRl
ZFByb2dyYW0uZ2V0KCkpOwotICAgIHJldHVybiB2YWxpZGF0ZWRQcm9ncmFtLnJlbGVhc2UoKTsK
LX0KLQotdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpyZW1vdmVWYWxpZGF0ZWRQcm9n
cmFtKGNvbnN0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0qIHByb2dyYW0pCi17Ci0gICAg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb2dy
YW1zLmZpbmQocHJvZ3JhbS0+cHJvZ3JhbUluZm8oKSk7Ci0gICAgQVNTRVJUKGl0ZXIgIT0gbV9w
cm9ncmFtcy5lbmQoKSk7Ci0gICAgbV9wcm9ncmFtcy5yZW1vdmUoaXRlcik7Ci0KLSNpZm5kZWYg
TkRFQlVHCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGVyZSdzIG5vIHdheSB3ZSBjb3VsZCBoYXZlIHRo
ZSBzYW1lIHByb2dyYW0gdW5kZXIgYSBkaWZmZXJlbnQga2V5LgotICAgIGZvciAoaXRlciA9IG1f
cHJvZ3JhbXMuYmVnaW4oKTsgaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpOyArK2l0ZXIpCi0gICAg
ICAgIEFTU0VSVChpdGVyLT52YWx1ZSAhPSBwcm9ncmFtKTsKLSNlbmRpZgotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgz
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgKaW5kZXgg
YWUwMjcxZi4uODY2ZjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
LmgKQEAgLTMyLDE4ICszMiwxNCBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0Uo
M0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKLSNpbmNsdWRlICJD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW07CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CiAKLXR5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSo+IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW1zTWFwOwotCiBjbGFzcyBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IHsKIHB1YmxpYzoKICAg
ICBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCk7CkBAIC02NiwxNiArNjIsMTIgQEAgcHVibGlj
OgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKiBtaXhTaGFkZXJWYWxpZGF0b3IoKTsKICAgICAKICAg
ICB2b2lkIHByZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyopOwotCi0gICAgUGFzc1Jl
ZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBnZXRWYWxpZGF0ZWRQcm9ncmFtKGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7Ci0gICAgdm9pZCByZW1vdmVWYWxpZGF0ZWRQ
cm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0qKTsKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8QU5HTEVXZWJLaXRCcmlkZ2U+IGNyZWF0ZVNoYWRlclZhbGlk
YXRvcihTaFNoYWRlclNwZWMpOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQ7CiAgICAgT3duUHRyPEFOR0xFV2ViS2l0QnJpZGdlPiBtX3dlYmdsU2hhZGVyVmFsaWRh
dG9yOwogICAgIE93blB0cjxBTkdMRVdlYktpdEJyaWRnZT4gbV9taXhTaGFkZXJWYWxpZGF0b3I7
Ci0gICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXAgbV9wcm9ncmFtczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCmlu
ZGV4IGUwNmJiMDAuLmYyNzY5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5o
IgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCIKICNpbmNsdWRlICJDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Niw1ICs4NywxNSBAQCBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJQcm9ncmFtOjpwcm9ncmFtSW5mbygpIGNv
bnN0CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmlu
ZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygpLCBtX3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdz
LCBtX21lc2hUeXBlKTsKIH0KIAorUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtPiBDdXN0b21GaWx0ZXJQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFtKCkKK3sKKyAgICByZXR1
cm4gbV92YWxpZGF0ZWRQcm9ncmFtOworfQorCit2b2lkIEN1c3RvbUZpbHRlclByb2dyYW06OnNl
dFZhbGlkYXRlZFByb2dyYW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
PiB2YWxpZGF0ZWRQcm9ncmFtKQoreworICAgIG1fdmFsaWRhdGVkUHJvZ3JhbSA9IHZhbGlkYXRl
ZFByb2dyYW07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBFTkFCTEUo
Q1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGRhMzdlMTUuLmFk
ODk2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC00MSw4ICs0MSw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVu
dDsKK2NsYXNzIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW07CiAKIC8vIFRoaXMgaXMgdGhl
IGJhc2UgY2xhc3MgZm9yIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gg
a25vd3MgaG93IHRvIGtlZXAKIC8vIHJlZmVyZW5jZXMgdG8gdGhlIGNhY2hlZCBzaGFkZXJzLgpA
QCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzIG1peFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5nczsgfQogICAgIEN1
c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsg
fQogCisgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0
ZWRQcm9ncmFtKCk7CisgICAgdm9pZCBzZXRWYWxpZGF0ZWRQcm9ncmFtKFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4pOworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIGNhbiBub3RpZnkgdGhlIGNsaWVudHMgdGhhdCB0aGUgY2FjaGVk
IHJlc291cmNlcyBhcmUKICAgICAvLyBsb2FkZWQgYW5kIGl0IGlzIHJlYWR5IHRvIGNyZWF0ZSBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gb2JqZWN0cy4KQEAgLTg2LDYgKzg5LDcgQEAgcHJp
dmF0ZToKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1
c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtX21peFNldHRpbmdzOwogICAgIEN1c3RvbUZp
bHRlck1lc2hUeXBlIG1fbWVzaFR5cGU7CisgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0+IG1fdmFsaWRhdGVkUHJvZ3JhbTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IDQwZGE5ZjguLjc3MGE1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKIAog
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmgiCkBAIC0xNTgsOCArMTU5LDcgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW06OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpCiB9CiAKIEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQotICAgIDogbV9nbG9iYWxDb250ZXh0KGdsb2JhbENv
bnRleHQpCi0gICAgLCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQorICAgIDogbV9wcm9ncmFt
SW5mbyhwcm9ncmFtSW5mbykKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKIHsKICAgICBw
bGF0Zm9ybUluaXQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENv
bgogCiAgICAgLy8gU2hhZGVycyByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24g
dXNlIGEgZGlmZmVyZW50IHZhbGlkYXRvciB0aGFuIHJlZ3VsYXIgV2ViR0wgc2hhZGVycy4gU2Vl
IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBmb3IgbW9yZSBkZXRhaWxzLgogICAgIGJvb2wg
YmxlbmRzRWxlbWVudFRleHR1cmUgPSAocHJvZ3JhbUluZm8ucHJvZ3JhbVR5cGUoKSA9PSBQUk9H
UkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7Ci0gICAgQU5HTEVXZWJLaXRCcmlkZ2Uq
IHZhbGlkYXRvciA9IGJsZW5kc0VsZW1lbnRUZXh0dXJlID8gbV9nbG9iYWxDb250ZXh0LT5taXhT
aGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFkZXJWYWxpZGF0b3Io
KTsKKyAgICBBTkdMRVdlYktpdEJyaWRnZSogdmFsaWRhdG9yID0gYmxlbmRzRWxlbWVudFRleHR1
cmUgPyBnbG9iYWxDb250ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IGdsb2JhbENvbnRleHQt
PndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJh
Z21lbnRTaGFkZXJMb2c7CiAgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiBzeW1ib2xzOwog
ICAgIGJvb2wgdmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPmNvbXBpbGVTaGFkZXJTb3Vy
Y2Uob3JpZ2luYWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVY
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBzeW1ib2xzKTsKQEAg
LTIwMiwxNSArMjAyLDE0IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAKIFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
Ojpjb21waWxlZFByb2dyYW0oKQogewotICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQgJiYgbV9n
bG9iYWxDb250ZXh0ICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAmJiAhbV92
YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7Ci0gICAgaWYgKCFtX2NvbXBpbGVkUHJv
Z3JhbSkgewotICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRlZFZl
cnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgbV9wcm9ncmFtSW5mby5wcm9n
cmFtVHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKG1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxp
emVkKCkpOwotICAgICAgICBBU1NFUlQobV9jb21waWxlZFByb2dyYW0tPnNhbXBsZXJMb2NhdGlv
bigpICE9IC0xIHx8ICFuZWVkc0lucHV0VGV4dHVyZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIG1f
Y29tcGlsZWRQcm9ncmFtOwogfQogCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnNldENvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bT4gY29tcGlsZWRQcm9ncmFtKQoreworICAgIG1fY29tcGlsZWRQcm9ncmFtID0gY29tcGlsZWRQ
cm9ncmFtOworfQorCiBib29sIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06Om5lZWRzSW5w
dXRUZXh0dXJlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm9ncmFtSW5mby5wcm9ncmFtVHlw
ZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFCkBAIC01OTcsOSArNTk2
LDYgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBvc2l0ZUZ1bmN0
aW9uU3RyaW5nKENvbXBvc2l0ZU9wZXJhdG9yIGMKIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKIHsKICAgICBwbGF0Zm9ybURlc3Ry
b3koKTsKLQotICAgIGlmIChtX2dsb2JhbENvbnRleHQpCi0gICAgICAgIG1fZ2xvYmFsQ29udGV4
dC0+cmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbSh0aGlzKTsKIH0KIAogQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6dmFsaWRhdGVkUHJvZ3JhbUluZm8o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRl
eCBjNjhmNGE3Li5lZjc5MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0uaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQog
Ci0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02MywxNSArNjIsNiBAQCB0eXBlZGVmIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsK
IC8vIEFsbCBzaGFkZXJzIGFyZSB2YWxpZGF0ZWQgdGhyb3VnaCBBTkdMRSBpbiBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtIGJlZm9yZSBiZWluZyBjb21waWxlZCBieSB0aGUgR3JhcGhpY3ND
b250ZXh0M0QgaW4gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgogLy8gRm9yIHNoYWRlcnMg
dGhhdCB1c2UgdGhlIENTUyBtaXggZnVuY3Rpb24sIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0gYWRkcyBzaGFkZXIgY29kZSB0byBwZXJmb3JtIERPTSB0ZXh0dXJlIGFjY2VzcywgYmxlbmRp
bmcsIGFuZCBjb21wb3NpdGluZy4KIC8vCi0vLyBUaGUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dCBjYWNoZXMgdGhlIHZhbGlkYXRlZCBwcm9ncmFtcy4KLS8vIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0gb3ducyBhIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBpZiB2YWxpZGF0aW9u
IGFuZCBjb21waWxhdGlvbiBzdWNjZWVkcy4KLS8vIFRodXMsIGNvbXBpbGVkIHByb2dyYW1zIGFy
ZSBjYWNoZWQgdmlhIHRoZWlyIHZhbGlkYXRlZCBwcm9ncmFtIG93bmVycy4KLS8vCi0vLyBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSBDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLgotLy8gVGh1cywgdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0gZGVzdHJ1Y3RvciBuZWVkcyB0byBub3RpZnkgdGhlIEN1c3RvbUZpbHRlckdsb2Jh
bENvbnRleHQgdG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20gdGhlIGNhY2hlLgotLy8gRkVDdXN0
b21GaWx0ZXIgaXMgdGhlIHJlZmVyZW5jZSBvd25lciBvZiB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS4KLS8vIFRodXMsIGEgdmFsaWRhdGVkIGFuZCBjb21waWxlZCBzaGFkZXIgaXMg
b25seSBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZpc2libGUg
bGF5ZXIgdGhhdCBhcHBsaWVzIHRoZSBzaGFkZXIuCi0vLwogY2xhc3MgQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtPiBjcmVhdGUoQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29u
dGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQpAQCAtODUs
NiArNzUsNyBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gdmFsaWRhdGVk
UHJvZ3JhbUluZm8oKSBjb25zdDsKICAgICAKICAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbT4gY29tcGlsZWRQcm9ncmFtKCk7CisgICAgdm9pZCBzZXRDb21waWxlZFBy
b2dyYW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+KTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyKCkgY29uc3QgCiAgICAgewpAQCAtMTAz
LDEwICs5NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9Ci0KLSAgICAvLyAnZGV0YWNoRnJvbUds
b2JhbENvbnRleHQnIGlzIGNhbGxlZCB3aGVuIHRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
IGlzIGRlbGV0ZWQsIGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZSBjYWxsYmFjayBhbnltb3Jl
LiAKLSAgICAvLyBOb3RlIHRoYXQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBkb2VzIG5vdCBr
ZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS4KLSAgICB2b2lkIGRldGFjaEZyb21HbG9iYWxDb250ZXh0KCkgeyBtX2dsb2JhbENvbnRleHQg
PSAwOyB9CiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dCosIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CiAK
QEAgLTEyNCw3ICsxMTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBuZWVkc0lucHV0VGV4dHVy
ZSgpIGNvbnN0OwogCi0gICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogbV9nbG9iYWxDb250
ZXh0OwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIG1fcHJvZ3JhbUluZm87CiAKICAgICBT
dHJpbmcgbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4
IDE1ODEzMTEuLjU3NGVhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVk
ZSAiRkVDdXN0b21GaWx0ZXIuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgpA
QCAtMTU2LDkgKzE1NywxNiBAQCBib29sIEZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJlRm9yRHJhd2lu
ZygpCiB7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIC8vIExh
emlseSBpbmplY3QgdGhlIGNvbXBpbGVkIHByb2dyYW0gaW50byB0aGUgQ3VzdG9tRmlsdGVyUmVu
ZGVyZXIuCi0gICAgaWYgKCFtX2N1c3RvbUZpbHRlclJlbmRlcmVyLT5jb21waWxlZFByb2dyYW0o
KSkKKyAgICBpZiAoIW1fY3VzdG9tRmlsdGVyUmVuZGVyZXItPmNvbXBpbGVkUHJvZ3JhbSgpKSB7
CisgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVkUHJv
Z3JhbSA9IG1fdmFsaWRhdGVkUHJvZ3JhbS0+Y29tcGlsZWRQcm9ncmFtKCk7CisgICAgICAgIGlm
ICghY29tcGlsZWRQcm9ncmFtKSB7CisgICAgICAgICAgICAvLyBMYXppbHkgY3JlYXRlIGEgY29t
cGlsZWQgcHJvZ3JhbSBhbmQgbGV0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0gaG9sZCBv
biB0byBpdC4KKyAgICAgICAgICAgIGNvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbTo6Y3JlYXRlKG1fY29udGV4dCwgbV92YWxpZGF0ZWRQcm9ncmFtLT52YWxpZGF0
ZWRWZXJ0ZXhTaGFkZXIoKSwgbV92YWxpZGF0ZWRQcm9ncmFtLT52YWxpZGF0ZWRGcmFnbWVudFNo
YWRlcigpLCBtX3ZhbGlkYXRlZFByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5cGUoKSk7
CisgICAgICAgICAgICBtX3ZhbGlkYXRlZFByb2dyYW0tPnNldENvbXBpbGVkUHJvZ3JhbShjb21w
aWxlZFByb2dyYW0pOworICAgICAgICB9CisgICAgICAgIC8vIExhemlseSBpbmplY3QgdGhlIGNv
bXBpbGVkIHByb2dyYW0gaW50byB0aGUgQ3VzdG9tRmlsdGVyUmVuZGVyZXIuCiAgICAgICAgIG1f
Y3VzdG9tRmlsdGVyUmVuZGVyZXItPnNldENvbXBpbGVkUHJvZ3JhbShtX3ZhbGlkYXRlZFByb2dy
YW0tPmNvbXBpbGVkUHJvZ3JhbSgpKTsKKyAgICB9CiAKICAgICBpZiAoIW1fY3VzdG9tRmlsdGVy
UmVuZGVyZXItPnByZXBhcmVGb3JEcmF3aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmlu
ZGV4IDJkZTkxYzQuLmE3ODM1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkN1
c3RvbUZpbHRlclByb2dyYW0uaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmgiCiAjaW5jbHVkZSAiRkVDdXN0b21GaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJWYWxpZGF0ZWRD
dXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMTc5NGRlZC4uODEyNTJkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02MzMyLDkgKzYzMzIsMTUgQEAgRmlsdGVyT3Bl
cmF0aW9ucyBSZW5kZXJMYXllcjo6Y29tcHV0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQogICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHBy
b2dyYW0gPSBjdXN0b21PcGVyYXRpb24tPnByb2dyYW0oKTsKICAgICAgICAgICAgIGlmICghcHJv
Z3JhbS0+aXNMb2FkZWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCA9
IHJlbmRlcmVyKCktPnZpZXcoKS0+Y3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCgpOwotICAgICAg
ICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dy
YW0gPSBnbG9iYWxDb250ZXh0LT5nZXRWYWxpZGF0ZWRQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1J
bmZvKCkpOworCisgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bT4gdmFsaWRhdGVkUHJvZ3JhbSA9IHByb2dyYW0tPnZhbGlkYXRlZFByb2dyYW0oKTsKKyAgICAg
ICAgICAgIGlmICghdmFsaWRhdGVkUHJvZ3JhbSkgeworICAgICAgICAgICAgICAgIC8vIExhemls
eSBjcmVhdGUgYSB2YWxpZGF0ZWQgcHJvZ3JhbSBhbmQgc3RvcmUgaXQgb24gdGhlIEN1c3RvbUZp
bHRlclByb2dyYW0uCisgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCog
Z2xvYmFsQ29udGV4dCA9IHJlbmRlcmVyKCktPnZpZXcoKS0+Y3VzdG9tRmlsdGVyR2xvYmFsQ29u
dGV4dCgpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtOjpjcmVhdGUoZ2xvYmFsQ29udGV4dCwgcHJvZ3JhbS0+cHJvZ3JhbUlu
Zm8oKSk7CisgICAgICAgICAgICAgICAgcHJvZ3JhbS0+c2V0VmFsaWRhdGVkUHJvZ3JhbSh2YWxp
ZGF0ZWRQcm9ncmFtKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCF2YWxpZGF0
ZWRQcm9ncmFtLT5pc0luaXRpYWxpemVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
</data>
<flag name="commit-queue"
          id="220003"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198204</attachid>
            <date>2013-04-15 16:57:01 -0700</date>
            <delta_ts>2013-04-16 09:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>112844-4.patch</filename>
            <type>text/plain</type>
            <size>19346</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzY0NTY5Li5lYWZhNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTMtMDQtMTUgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gUmVtb3ZlIHRoZSBjYWNoZSBvZiB2YWxpZGF0ZWQgcHJvZ3JhbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHdl
J3JlIGNhY2hpbmcgQ3VzdG9tRmlsdGVyUHJvZ3JhbShzKSBub3csIHdlIGRvbid0IG5lZWQgYW5v
dGhlciBjYWNoZSBmb3IKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShzKS4g
V2l0aCB0aGlzIHBhdGNoLCBDdXN0b21GaWx0ZXJQcm9ncmFtIHN0b3JlcyBhIHJlZmVyZW5jZQor
ICAgICAgICB0byBhIGxhemlseSBjcmVhdGVkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0s
IGFuZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IG5vIGxvbmdlcgorICAgICAgICBoYXMgYSB2
YWxpZGF0ZWQgcHJvZ3JhbSBjYWNoZS4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHJlbW92
ZXMgdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0ncyBzdG9yZWQgcmVmZXJlbmNlIHRv
CisgICAgICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuIFRoZSByZW1vdmFsIG9mIHRoZSB2
YWxpZGF0ZWQgcHJvZ3JhbSBjYWNoZSB3b3VsZCBjYXVzZQorICAgICAgICB0aGlzIHJlZmVyZW5j
ZSB0byBiZWNvbWUgd2Vhay4gVmFsaWRhdGVkIHByb2dyYW1zIG9ubHkgbmVlZGVkIHRvIGtlZXAg
dGhlIGdsb2JhbCBjb250ZXh0CisgICAgICAgIHJlZmVyZW5jZSBpbiBvcmRlciB0byBjcmVhdGUg
YSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uIEluIHRoaXMgcGF0Y2gsIHdlIGNyZWF0ZQor
ICAgICAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0ocykgaW4gRkVDdXN0b21GaWx0ZXIg
aW5zdGVhZCBvZiBpbiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLAorICAgICAgICBzbyB2
YWxpZGF0ZWQgcHJvZ3JhbXMgZG9uJ3QgbmVlZCB0byBzdG9yZSB0aGUgZ2xvYmFsIGNvbnRleHQg
cmVmZXJlbmNlIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IFJlZmFjdG9y
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6c2V0VmFsaWRhdGVkUHJvZ3JhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21waWxl
ZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6c2V0Q29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmls
dGVyOjpwcmVwYXJlRm9yRHJhd2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVGaWx0ZXJPcGVyYXRpb25zKToKKwog
MjAxMy0wNC0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2sgc2hvdWxkIGNsZWFyIHRyYWNr
IGNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCmlu
ZGV4IDI2OTY1ZDAuLjM0Yjc1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAKQEAgLTUyLDYgKzUyLDggQEAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnQK
ICAgICAsIG1fY29udGVudFNhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1faXNJbml0aWFsaXpl
ZChmYWxzZSkKIHsKKyAgICBBU1NFUlQoIXZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAm
JiAhdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIuaXNOdWxsKCkpOworCiAgICAgbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVy
ID0gY29tcGlsZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmFsaWRh
dGVkVmVydGV4U2hhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
Y3BwCmluZGV4IDAyYTk2YjguLjRmNWRkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuaCIKIAotI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw4
ICs0Miw2IEBAIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OkN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQoKQogCiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dCgpCiB7Ci0gICAgZm9yIChDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3JhbXMuYmVnaW4oKTsgaXRlciAhPSBtX3Byb2dyYW1zLmVu
ZCgpOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnZhbHVlLT5kZXRhY2hGcm9tR2xvYmFsQ29udGV4
dCgpOwogfQogCiBBTkdMRVdlYktpdEJyaWRnZSogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6
d2ViZ2xTaGFkZXJWYWxpZGF0b3IoKQpAQCAtODcsMzAgKzg0LDYgQEAgdm9pZCBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCiAgICAgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RF
U1QpOwogfQogCi1QYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IEN1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQotewotICAgIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZv
KTsKLSAgICBpZiAoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7Ci0KLSAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gdmFs
aWRhdGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNyZWF0ZSh0aGlz
LCBwcm9ncmFtSW5mbyk7Ci0gICAgbV9wcm9ncmFtcy5zZXQocHJvZ3JhbUluZm8sIHZhbGlkYXRl
ZFByb2dyYW0uZ2V0KCkpOwotICAgIHJldHVybiB2YWxpZGF0ZWRQcm9ncmFtLnJlbGVhc2UoKTsK
LX0KLQotdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpyZW1vdmVWYWxpZGF0ZWRQcm9n
cmFtKGNvbnN0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0qIHByb2dyYW0pCi17Ci0gICAg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb2dy
YW1zLmZpbmQocHJvZ3JhbS0+cHJvZ3JhbUluZm8oKSk7Ci0gICAgQVNTRVJUKGl0ZXIgIT0gbV9w
cm9ncmFtcy5lbmQoKSk7Ci0gICAgbV9wcm9ncmFtcy5yZW1vdmUoaXRlcik7Ci0KLSNpZm5kZWYg
TkRFQlVHCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGVyZSdzIG5vIHdheSB3ZSBjb3VsZCBoYXZlIHRo
ZSBzYW1lIHByb2dyYW0gdW5kZXIgYSBkaWZmZXJlbnQga2V5LgotICAgIGZvciAoaXRlciA9IG1f
cHJvZ3JhbXMuYmVnaW4oKTsgaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpOyArK2l0ZXIpCi0gICAg
ICAgIEFTU0VSVChpdGVyLT52YWx1ZSAhPSBwcm9ncmFtKTsKLSNlbmRpZgotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgz
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgKaW5kZXgg
YWUwMjcxZi4uODY2ZjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
LmgKQEAgLTMyLDE4ICszMiwxNCBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0Uo
M0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKLSNpbmNsdWRlICJD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW07CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CiAKLXR5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSo+IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW1zTWFwOwotCiBjbGFzcyBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IHsKIHB1YmxpYzoKICAg
ICBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCk7CkBAIC02NiwxNiArNjIsMTIgQEAgcHVibGlj
OgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKiBtaXhTaGFkZXJWYWxpZGF0b3IoKTsKICAgICAKICAg
ICB2b2lkIHByZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyopOwotCi0gICAgUGFzc1Jl
ZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBnZXRWYWxpZGF0ZWRQcm9ncmFtKGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7Ci0gICAgdm9pZCByZW1vdmVWYWxpZGF0ZWRQ
cm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0qKTsKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8QU5HTEVXZWJLaXRCcmlkZ2U+IGNyZWF0ZVNoYWRlclZhbGlk
YXRvcihTaFNoYWRlclNwZWMpOwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQ7CiAgICAgT3duUHRyPEFOR0xFV2ViS2l0QnJpZGdlPiBtX3dlYmdsU2hhZGVyVmFsaWRh
dG9yOwogICAgIE93blB0cjxBTkdMRVdlYktpdEJyaWRnZT4gbV9taXhTaGFkZXJWYWxpZGF0b3I7
Ci0gICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXAgbV9wcm9ncmFtczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCmlu
ZGV4IGUwNmJiMDAuLmYyNzY5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5o
IgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCIKICNpbmNsdWRlICJDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Niw1ICs4NywxNSBAQCBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJQcm9ncmFtOjpwcm9ncmFtSW5mbygpIGNv
bnN0CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmlu
ZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygpLCBtX3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdz
LCBtX21lc2hUeXBlKTsKIH0KIAorUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtPiBDdXN0b21GaWx0ZXJQcm9ncmFtOjp2YWxpZGF0ZWRQcm9ncmFtKCkKK3sKKyAgICByZXR1
cm4gbV92YWxpZGF0ZWRQcm9ncmFtOworfQorCit2b2lkIEN1c3RvbUZpbHRlclByb2dyYW06OnNl
dFZhbGlkYXRlZFByb2dyYW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
PiB2YWxpZGF0ZWRQcm9ncmFtKQoreworICAgIG1fdmFsaWRhdGVkUHJvZ3JhbSA9IHZhbGlkYXRl
ZFByb2dyYW07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBFTkFCTEUo
Q1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGRhMzdlMTUuLmFk
ODk2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC00MSw4ICs0MSw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVu
dDsKK2NsYXNzIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW07CiAKIC8vIFRoaXMgaXMgdGhl
IGJhc2UgY2xhc3MgZm9yIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gg
a25vd3MgaG93IHRvIGtlZXAKIC8vIHJlZmVyZW5jZXMgdG8gdGhlIGNhY2hlZCBzaGFkZXJzLgpA
QCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzIG1peFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5nczsgfQogICAgIEN1
c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsg
fQogCisgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0
ZWRQcm9ncmFtKCk7CisgICAgdm9pZCBzZXRWYWxpZGF0ZWRQcm9ncmFtKFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4pOworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIGNhbiBub3RpZnkgdGhlIGNsaWVudHMgdGhhdCB0aGUgY2FjaGVk
IHJlc291cmNlcyBhcmUKICAgICAvLyBsb2FkZWQgYW5kIGl0IGlzIHJlYWR5IHRvIGNyZWF0ZSBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gb2JqZWN0cy4KQEAgLTg2LDYgKzg5LDcgQEAgcHJp
dmF0ZToKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1
c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtX21peFNldHRpbmdzOwogICAgIEN1c3RvbUZp
bHRlck1lc2hUeXBlIG1fbWVzaFR5cGU7CisgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0+IG1fdmFsaWRhdGVkUHJvZ3JhbTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IDQwZGE5ZjguLjc3MGE1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKIAog
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmgiCkBAIC0xNTgsOCArMTU5LDcgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW06OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpCiB9CiAKIEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQotICAgIDogbV9nbG9iYWxDb250ZXh0KGdsb2JhbENv
bnRleHQpCi0gICAgLCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQorICAgIDogbV9wcm9ncmFt
SW5mbyhwcm9ncmFtSW5mbykKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKIHsKICAgICBw
bGF0Zm9ybUluaXQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENv
bgogCiAgICAgLy8gU2hhZGVycyByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24g
dXNlIGEgZGlmZmVyZW50IHZhbGlkYXRvciB0aGFuIHJlZ3VsYXIgV2ViR0wgc2hhZGVycy4gU2Vl
IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBmb3IgbW9yZSBkZXRhaWxzLgogICAgIGJvb2wg
YmxlbmRzRWxlbWVudFRleHR1cmUgPSAocHJvZ3JhbUluZm8ucHJvZ3JhbVR5cGUoKSA9PSBQUk9H
UkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7Ci0gICAgQU5HTEVXZWJLaXRCcmlkZ2Uq
IHZhbGlkYXRvciA9IGJsZW5kc0VsZW1lbnRUZXh0dXJlID8gbV9nbG9iYWxDb250ZXh0LT5taXhT
aGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFkZXJWYWxpZGF0b3Io
KTsKKyAgICBBTkdMRVdlYktpdEJyaWRnZSogdmFsaWRhdG9yID0gYmxlbmRzRWxlbWVudFRleHR1
cmUgPyBnbG9iYWxDb250ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IGdsb2JhbENvbnRleHQt
PndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJh
Z21lbnRTaGFkZXJMb2c7CiAgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiBzeW1ib2xzOwog
ICAgIGJvb2wgdmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPmNvbXBpbGVTaGFkZXJTb3Vy
Y2Uob3JpZ2luYWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVY
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBzeW1ib2xzKTsKQEAg
LTIwMiwxNSArMjAyLDE0IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAKIFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
Ojpjb21waWxlZFByb2dyYW0oKQogewotICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQgJiYgbV9n
bG9iYWxDb250ZXh0ICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAmJiAhbV92
YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7Ci0gICAgaWYgKCFtX2NvbXBpbGVkUHJv
Z3JhbSkgewotICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRlZFZl
cnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlciwgbV9wcm9ncmFtSW5mby5wcm9n
cmFtVHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKG1fY29tcGlsZWRQcm9ncmFtLT5pc0luaXRpYWxp
emVkKCkpOwotICAgICAgICBBU1NFUlQobV9jb21waWxlZFByb2dyYW0tPnNhbXBsZXJMb2NhdGlv
bigpICE9IC0xIHx8ICFuZWVkc0lucHV0VGV4dHVyZSgpKTsKLSAgICB9CiAgICAgcmV0dXJuIG1f
Y29tcGlsZWRQcm9ncmFtOwogfQogCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnNldENvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bT4gY29tcGlsZWRQcm9ncmFtKQoreworICAgIG1fY29tcGlsZWRQcm9ncmFtID0gY29tcGlsZWRQ
cm9ncmFtOworfQorCiBib29sIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06Om5lZWRzSW5w
dXRUZXh0dXJlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm9ncmFtSW5mby5wcm9ncmFtVHlw
ZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFCkBAIC01OTcsOSArNTk2
LDYgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBvc2l0ZUZ1bmN0
aW9uU3RyaW5nKENvbXBvc2l0ZU9wZXJhdG9yIGMKIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKIHsKICAgICBwbGF0Zm9ybURlc3Ry
b3koKTsKLQotICAgIGlmIChtX2dsb2JhbENvbnRleHQpCi0gICAgICAgIG1fZ2xvYmFsQ29udGV4
dC0+cmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbSh0aGlzKTsKIH0KIAogQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6dmFsaWRhdGVkUHJvZ3JhbUluZm8o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRl
eCBjNjhmNGE3Li5lZjc5MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0uaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQog
Ci0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02MywxNSArNjIsNiBAQCB0eXBlZGVmIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsK
IC8vIEFsbCBzaGFkZXJzIGFyZSB2YWxpZGF0ZWQgdGhyb3VnaCBBTkdMRSBpbiBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtIGJlZm9yZSBiZWluZyBjb21waWxlZCBieSB0aGUgR3JhcGhpY3ND
b250ZXh0M0QgaW4gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLgogLy8gRm9yIHNoYWRlcnMg
dGhhdCB1c2UgdGhlIENTUyBtaXggZnVuY3Rpb24sIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0gYWRkcyBzaGFkZXIgY29kZSB0byBwZXJmb3JtIERPTSB0ZXh0dXJlIGFjY2VzcywgYmxlbmRp
bmcsIGFuZCBjb21wb3NpdGluZy4KIC8vCi0vLyBUaGUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dCBjYWNoZXMgdGhlIHZhbGlkYXRlZCBwcm9ncmFtcy4KLS8vIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0gb3ducyBhIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBpZiB2YWxpZGF0aW9u
IGFuZCBjb21waWxhdGlvbiBzdWNjZWVkcy4KLS8vIFRodXMsIGNvbXBpbGVkIHByb2dyYW1zIGFy
ZSBjYWNoZWQgdmlhIHRoZWlyIHZhbGlkYXRlZCBwcm9ncmFtIG93bmVycy4KLS8vCi0vLyBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSBDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLgotLy8gVGh1cywgdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0gZGVzdHJ1Y3RvciBuZWVkcyB0byBub3RpZnkgdGhlIEN1c3RvbUZpbHRlckdsb2Jh
bENvbnRleHQgdG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20gdGhlIGNhY2hlLgotLy8gRkVDdXN0
b21GaWx0ZXIgaXMgdGhlIHJlZmVyZW5jZSBvd25lciBvZiB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS4KLS8vIFRodXMsIGEgdmFsaWRhdGVkIGFuZCBjb21waWxlZCBzaGFkZXIgaXMg
b25seSBrZXB0IGFsaXZlIGFzIGxvbmcgYXMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZpc2libGUg
bGF5ZXIgdGhhdCBhcHBsaWVzIHRoZSBzaGFkZXIuCi0vLwogY2xhc3MgQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtPiBjcmVhdGUoQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29u
dGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQpAQCAtODUs
NiArNzUsNyBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gdmFsaWRhdGVk
UHJvZ3JhbUluZm8oKSBjb25zdDsKICAgICAKICAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbT4gY29tcGlsZWRQcm9ncmFtKCk7CisgICAgdm9pZCBzZXRDb21waWxlZFBy
b2dyYW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+KTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyKCkgY29uc3QgCiAgICAgewpAQCAtMTAz
LDEwICs5NCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9Ci0KLSAgICAvLyAnZGV0YWNoRnJvbUds
b2JhbENvbnRleHQnIGlzIGNhbGxlZCB3aGVuIHRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
IGlzIGRlbGV0ZWQsIGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZSBjYWxsYmFjayBhbnltb3Jl
LiAKLSAgICAvLyBOb3RlIHRoYXQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBkb2VzIG5vdCBr
ZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS4KLSAgICB2b2lkIGRldGFjaEZyb21HbG9iYWxDb250ZXh0KCkgeyBtX2dsb2JhbENvbnRleHQg
PSAwOyB9CiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dCosIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CiAK
QEAgLTEyNCw3ICsxMTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBuZWVkc0lucHV0VGV4dHVy
ZSgpIGNvbnN0OwogCi0gICAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogbV9nbG9iYWxDb250
ZXh0OwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIG1fcHJvZ3JhbUluZm87CiAKICAgICBT
dHJpbmcgbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4
IDE1ODEzMTEuLmMyMmY1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVk
ZSAiRkVDdXN0b21GaWx0ZXIuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgpA
QCAtMTU2LDkgKzE1NywxNiBAQCBib29sIEZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJlRm9yRHJhd2lu
ZygpCiB7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIC8vIExh
emlseSBpbmplY3QgdGhlIGNvbXBpbGVkIHByb2dyYW0gaW50byB0aGUgQ3VzdG9tRmlsdGVyUmVu
ZGVyZXIuCi0gICAgaWYgKCFtX2N1c3RvbUZpbHRlclJlbmRlcmVyLT5jb21waWxlZFByb2dyYW0o
KSkKLSAgICAgICAgbV9jdXN0b21GaWx0ZXJSZW5kZXJlci0+c2V0Q29tcGlsZWRQcm9ncmFtKG1f
dmFsaWRhdGVkUHJvZ3JhbS0+Y29tcGlsZWRQcm9ncmFtKCkpOworICAgIGlmICghbV9jdXN0b21G
aWx0ZXJSZW5kZXJlci0+Y29tcGlsZWRQcm9ncmFtKCkpIHsKKyAgICAgICAgUmVmUHRyPEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY29tcGlsZWRQcm9ncmFtID0gbV92YWxpZGF0ZWRQcm9n
cmFtLT5jb21waWxlZFByb2dyYW0oKTsKKyAgICAgICAgaWYgKCFjb21waWxlZFByb2dyYW0pIHsK
KyAgICAgICAgICAgIC8vIExhemlseSBjcmVhdGUgYSBjb21waWxlZCBwcm9ncmFtIGFuZCBsZXQg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSBob2xkIG9uIHRvIGl0LgorICAgICAgICAgICAg
Y29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV9j
b250ZXh0LCBtX3ZhbGlkYXRlZFByb2dyYW0tPnZhbGlkYXRlZFZlcnRleFNoYWRlcigpLCBtX3Zh
bGlkYXRlZFByb2dyYW0tPnZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKCksIG1fdmFsaWRhdGVkUHJv
Z3JhbS0+cHJvZ3JhbUluZm8oKS5wcm9ncmFtVHlwZSgpKTsKKyAgICAgICAgICAgIG1fdmFsaWRh
dGVkUHJvZ3JhbS0+c2V0Q29tcGlsZWRQcm9ncmFtKGNvbXBpbGVkUHJvZ3JhbSk7CisgICAgICAg
IH0KKyAgICAgICAgLy8gTGF6aWx5IGluamVjdCB0aGUgY29tcGlsZWQgcHJvZ3JhbSBpbnRvIHRo
ZSBDdXN0b21GaWx0ZXJSZW5kZXJlci4KKyAgICAgICAgbV9jdXN0b21GaWx0ZXJSZW5kZXJlci0+
c2V0Q29tcGlsZWRQcm9ncmFtKGNvbXBpbGVkUHJvZ3JhbS5yZWxlYXNlKCkpOworICAgIH0KIAog
ICAgIGlmICghbV9jdXN0b21GaWx0ZXJSZW5kZXJlci0+cHJlcGFyZUZvckRyYXdpbmcoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMmRlOTFjNC4uYTc4MzViYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKICNpbmNsdWRlICJGRUN1c3RvbUZpbHRlci5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlZhbGlkYXRlZEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxNzk0ZGVkLi44MTI1
MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTYzMzIs
OSArNjMzMiwxNSBAQCBGaWx0ZXJPcGVyYXRpb25zIFJlbmRlckxheWVyOjpjb21wdXRlRmlsdGVy
T3BlcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgp
OwogICAgICAgICAgICAgaWYgKCFwcm9ncmFtLT5pc0xvYWRlZCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0KiBnbG9iYWxDb250ZXh0ID0gcmVuZGVyZXIoKS0+dmlldygpLT5jdXN0b21GaWx0ZXJH
bG9iYWxDb250ZXh0KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbT4gdmFsaWRhdGVkUHJvZ3JhbSA9IGdsb2JhbENvbnRleHQtPmdldFZhbGlkYXRlZFBy
b2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUluZm8oKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtID0gcHJvZ3JhbS0+dmFs
aWRhdGVkUHJvZ3JhbSgpOworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZWRQcm9ncmFtKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTGF6aWx5IGNyZWF0ZSBhIHZhbGlkYXRlZCBwcm9ncmFtIGFuZCBz
dG9yZSBpdCBvbiB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgICAgICAgICBDdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0ID0gcmVuZGVyZXIoKS0+dmlldygp
LT5jdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVk
UHJvZ3JhbSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNyZWF0ZShnbG9iYWxDb250
ZXh0LCBwcm9ncmFtLT5wcm9ncmFtSW5mbygpKTsKKyAgICAgICAgICAgICAgICBwcm9ncmFtLT5z
ZXRWYWxpZGF0ZWRQcm9ncmFtKHZhbGlkYXRlZFByb2dyYW0pOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBpZiAoIXZhbGlkYXRlZFByb2dyYW0tPmlzSW5pdGlhbGl6ZWQoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAo=
</data>
<flag name="review"
          id="220008"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="220009"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198338</attachid>
            <date>2013-04-16 09:42:40 -0700</date>
            <delta_ts>2013-04-16 10:11:39 -0700</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>112844-5.patch</filename>
            <type>text/plain</type>
            <size>19249</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTFhZjk0Li44YmQ3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMDQtMTYgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gUmVtb3ZlIHRoZSBjYWNoZSBvZiB2YWxpZGF0ZWQgcHJvZ3JhbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBTaW5jZSB3ZSdy
ZSBjYWNoaW5nIEN1c3RvbUZpbHRlclByb2dyYW0ocykgbm93LCB3ZSBkb24ndCBuZWVkIGFub3Ro
ZXIgY2FjaGUgZm9yCisgICAgICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0ocykuIFdp
dGggdGhpcyBwYXRjaCwgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBzdG9yZXMgYSByZWZlcmVuY2UKKyAg
ICAgICAgdG8gYSBsYXppbHkgY3JlYXRlZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLCBh
bmQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCBubyBsb25nZXIKKyAgICAgICAgaGFzIGEgdmFs
aWRhdGVkIHByb2dyYW0gY2FjaGUuCisKKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCByZW1vdmVz
IHRoZSBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtJ3Mgc3RvcmVkIHJlZmVyZW5jZSB0bwor
ICAgICAgICBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LiBUaGUgcmVtb3ZhbCBvZiB0aGUgdmFs
aWRhdGVkIHByb2dyYW0gY2FjaGUgd291bGQgY2F1c2UKKyAgICAgICAgdGhpcyByZWZlcmVuY2Ug
dG8gYmVjb21lIHdlYWsuIFZhbGlkYXRlZCBwcm9ncmFtcyBvbmx5IG5lZWRlZCB0byBrZWVwIHRo
ZSBnbG9iYWwgY29udGV4dAorICAgICAgICByZWZlcmVuY2UgaW4gb3JkZXIgdG8gY3JlYXRlIGEg
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLiBJbiB0aGlzIHBhdGNoLCB3ZSBjcmVhdGUKKyAg
ICAgICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKHMpIGluIEZFQ3VzdG9tRmlsdGVyIGlu
c3RlYWQgb2YgaW4gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwKKyAgICAgICAgc28gdmFs
aWRhdGVkIHByb2dyYW1zIGRvbid0IG5lZWQgdG8gc3RvcmUgdGhlIGdsb2JhbCBjb250ZXh0IHJl
ZmVyZW5jZSBhbnltb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBSZWZhY3Rvcmlu
Zy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6fkN1c3RvbUZpbHRlckdsb2Jh
bENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dC5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW06OnZhbGlkYXRlZFBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6c2V0VmFsaWRh
dGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnNl
dENvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtOjp+Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmg6Cisg
ICAgICAgIChDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ3VzdG9tRmlsdGVyOjpwcmVwYXJlRm9yRHJhd2luZyk6CisgICAgICAgICogcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVGaWx0ZXJPcGVy
YXRpb25zKToKKwogMjAxMy0wNC0xNiAgQW50aG9ueSBTY2lhbiAgPGFzY2lhbkBibGFja2JlcnJ5
LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTGF5ZXJUZXh0dXJlOiBjaGVjayBpZiB0aGUg
Z3JhcGhpY3MgY29udGV4dCBpcyBOVUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAKaW5kZXggMjY5NjVkMC4uMzRiNzU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcApAQCAtNTIsNiArNTIsOCBAQCBDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW06OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbShQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udAogICAgICwgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uKC0xKQogICAg
ICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogeworICAgIEFTU0VSVCghdmFsaWRhdGVkVmVydGV4
U2hhZGVyLmlzTnVsbCgpICYmICF2YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CisK
ICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgUGxhdGZvcm0zRE9i
amVjdCB2ZXJ0ZXhTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpWRVJU
RVhfU0hBREVSLCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyR2xvYmFsQ29udGV4dC5jcHAKaW5kZXggMDJhOTZiOC4uNGY1ZGQyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaWYg
RU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dC5oIgogCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzLDggKzQyLDYgQEAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6Q3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dCgpCiAKIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6On5D
dXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KCkKIHsKLSAgICBmb3IgKEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5iZWdpbigpOyBpdGVy
ICE9IG1fcHJvZ3JhbXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgaXRlci0+dmFsdWUtPmRldGFj
aEZyb21HbG9iYWxDb250ZXh0KCk7CiB9CiAKIEFOR0xFV2ViS2l0QnJpZGdlKiBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0Ojp3ZWJnbFNoYWRlclZhbGlkYXRvcigpCkBAIC04NywzMCArODQsNiBA
QCB2b2lkIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnByZXBhcmVDb250ZXh0SWZOZWVkZWQo
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfVEVTVCk7CiB9CiAKLVBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6Z2V0VmFsaWRhdGVkUHJvZ3Jh
bShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCi17Ci0gICAgQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb2dyYW1z
LmZpbmQocHJvZ3JhbUluZm8pOwotICAgIGlmIChpdGVyICE9IG1fcHJvZ3JhbXMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKLQotICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbTo6Y3JlYXRlKHRoaXMsIHByb2dyYW1JbmZvKTsKLSAgICBtX3Byb2dyYW1zLnNldChwcm9n
cmFtSW5mbywgdmFsaWRhdGVkUHJvZ3JhbS5nZXQoKSk7Ci0gICAgcmV0dXJuIHZhbGlkYXRlZFBy
b2dyYW0ucmVsZWFzZSgpOwotfQotCi12b2lkIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnJl
bW92ZVZhbGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSog
cHJvZ3JhbSkKLXsKLSAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6aXRlcmF0
b3IgaXRlciA9IG1fcHJvZ3JhbXMuZmluZChwcm9ncmFtLT5wcm9ncmFtSW5mbygpKTsKLSAgICBB
U1NFUlQoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKTsKLSAgICBtX3Byb2dyYW1zLnJlbW92ZShp
dGVyKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAvLyBDaGVjayB0aGF0IHRoZXJlJ3Mgbm8gd2F5
IHdlIGNvdWxkIGhhdmUgdGhlIHNhbWUgcHJvZ3JhbSB1bmRlciBhIGRpZmZlcmVudCBrZXkuCi0g
ICAgZm9yIChpdGVyID0gbV9wcm9ncmFtcy5iZWdpbigpOyBpdGVyICE9IG1fcHJvZ3JhbXMuZW5k
KCk7ICsraXRlcikKLSAgICAgICAgQVNTRVJUKGl0ZXItPnZhbHVlICE9IHByb2dyYW0pOwotI2Vu
ZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
U0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2Jh
bENvbnRleHQuaAppbmRleCBhZTAyNzFmLi44NjZmNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQuaApAQCAtMzIsMTggKzMyLDE0IEBACiAKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRn
ZS5oIgotI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTsKIGNsYXNzIEhvc3RXaW5k
b3c7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAotdHlwZWRlZiBIYXNoTWFwPEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvLCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKj4gQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA7Ci0KIGNsYXNzIEN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQgewogcHVibGljOgogICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKTsKQEAgLTY2LDE2
ICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UqIG1peFNoYWRlclZhbGlk
YXRvcigpOwogICAgIAogICAgIHZvaWQgcHJlcGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2luZG93
Kik7Ci0KLSAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IGdldFZh
bGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lk
IHJlbW92ZVZhbGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bSopOwogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093blB0cjxBTkdMRVdlYktpdEJyaWRnZT4g
Y3JlYXRlU2hhZGVyVmFsaWRhdG9yKFNoU2hhZGVyU3BlYyk7CiAKICAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBPd25QdHI8QU5HTEVXZWJLaXRCcmlkZ2U+IG1f
d2ViZ2xTaGFkZXJWYWxpZGF0b3I7CiAgICAgT3duUHRyPEFOR0xFV2ViS2l0QnJpZGdlPiBtX21p
eFNoYWRlclZhbGlkYXRvcjsKLSAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcCBt
X3Byb2dyYW1zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyUHJvZ3JhbS5jcHAKaW5kZXggZTA2YmIwMC4uZjI3NjlmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5o
IgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCisjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2
LDUgKzg3LDE1IEBAIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06
OnByb2dyYW1JbmZvKCkgY29uc3QKICAgICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8o
dmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hhZGVyU3RyaW5nKCksIG1fcHJvZ3JhbVR5
cGUsIG1fbWl4U2V0dGluZ3MsIG1fbWVzaFR5cGUpOwogfQogCitQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0+IEN1c3RvbUZpbHRlclByb2dyYW06OnZhbGlkYXRlZFByb2dy
YW0oKQoreworICAgIHJldHVybiBtX3ZhbGlkYXRlZFByb2dyYW07Cit9CisKK3ZvaWQgQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6c2V0VmFsaWRhdGVkUHJvZ3JhbShQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0pCit7CisgICAgbV92YWxpZGF0ZWRQ
cm9ncmFtID0gdmFsaWRhdGVkUHJvZ3JhbTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgK
aW5kZXggZGEzN2UxNS4uYWQ4OTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAg
LTQxLDggKzQxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7Ci1jbGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW07CiBjbGFzcyBDdXN0b21G
aWx0ZXJQcm9ncmFtQ2xpZW50OworY2xhc3MgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTsK
IAogLy8gVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbSBjbGFzcyB3aGljaCBrbm93cyBob3cgdG8ga2VlcAogLy8gcmVmZXJlbmNlcyB0byB0aGUg
Y2FjaGVkIHNoYWRlcnMuCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX21peFNl
dHRpbmdzOyB9CiAgICAgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX21lc2hUeXBlOyB9CiAKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0+IHZhbGlkYXRlZFByb2dyYW0oKTsKKyAgICB2b2lkIHNldFZhbGlkYXRlZFByb2dy
YW0oUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPik7CisKIHByb3RlY3Rl
ZDoKICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50
cyB0aGF0IHRoZSBjYWNoZWQgcmVzb3VyY2VzIGFyZQogICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMg
cmVhZHkgdG8gY3JlYXRlIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBvYmplY3RzLgpAQCAt
ODYsNiArODksNyBAQCBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIG1fcHJv
Z3JhbVR5cGU7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1fbWl4U2V0dGlu
Z3M7CiAgICAgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbV9tZXNoVHlwZTsKKyAgICBSZWZQdHI8Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gbV92YWxpZGF0ZWRQcm9ncmFtOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXggNDBk
YTlmOC4uNzcwYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS5oIgogCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKKyNpbmNsdWRl
ICJDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJD
b25zdGFudHMuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgiCiAjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKQEAgLTE1OCw4ICsxNTksNyBAQCBTdHJp
bmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3Ry
aW5nKCkKIH0KIAogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0LCBj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCi0gICAgOiBtX2dsb2Jh
bENvbnRleHQoZ2xvYmFsQ29udGV4dCkKLSAgICAsIG1fcHJvZ3JhbUluZm8ocHJvZ3JhbUluZm8p
CisgICAgOiBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQogICAgICwgbV9pc0luaXRpYWxpemVk
KGZhbHNlKQogewogICAgIHBsYXRmb3JtSW5pdCgpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIEN1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29uCiAKICAgICAvLyBTaGFkZXJzIHJlZmVyZW5jZWQgZnJvbSB0aGUg
Q1NTIG1peCBmdW5jdGlvbiB1c2UgYSBkaWZmZXJlbnQgdmFsaWRhdG9yIHRoYW4gcmVndWxhciBX
ZWJHTCBzaGFkZXJzLiBTZWUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGZvciBtb3JlIGRl
dGFpbHMuCiAgICAgYm9vbCBibGVuZHNFbGVtZW50VGV4dHVyZSA9IChwcm9ncmFtSW5mby5wcm9n
cmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKTsKLSAgICBB
TkdMRVdlYktpdEJyaWRnZSogdmFsaWRhdG9yID0gYmxlbmRzRWxlbWVudFRleHR1cmUgPyBtX2ds
b2JhbENvbnRleHQtPm1peFNoYWRlclZhbGlkYXRvcigpIDogbV9nbG9iYWxDb250ZXh0LT53ZWJn
bFNoYWRlclZhbGlkYXRvcigpOworICAgIEFOR0xFV2ViS2l0QnJpZGdlKiB2YWxpZGF0b3IgPSBi
bGVuZHNFbGVtZW50VGV4dHVyZSA/IGdsb2JhbENvbnRleHQtPm1peFNoYWRlclZhbGlkYXRvcigp
IDogZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFkZXJWYWxpZGF0b3IoKTsKICAgICBTdHJpbmcgdmVy
dGV4U2hhZGVyTG9nLCBmcmFnbWVudFNoYWRlckxvZzsKICAgICBWZWN0b3I8QU5HTEVTaGFkZXJT
eW1ib2w+IHN5bWJvbHM7CiAgICAgYm9vbCB2ZXJ0ZXhTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+
Y29tcGlsZVNoYWRlclNvdXJjZShvcmlnaW5hbFZlcnRleFNoYWRlci51dGY4KCkuZGF0YSgpLCBT
SEFERVJfVFlQRV9WRVJURVgsIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCB2ZXJ0ZXhTaGFkZXJM
b2csIHN5bWJvbHMpOwpAQCAtMjAyLDE1ICsyMDIsMTQgQEAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxD
b24KIAogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW06OmNvbXBpbGVkUHJvZ3JhbSgpCiB7Ci0gICAgQVNTRVJUKG1faXNJ
bml0aWFsaXplZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKLSAgICBp
ZiAoIW1fY29tcGlsZWRQcm9ncmFtKSB7Ci0gICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0
KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLCBt
X3Byb2dyYW1JbmZvLnByb2dyYW1UeXBlKCkpOwotICAgICAgICBBU1NFUlQobV9jb21waWxlZFBy
b2dyYW0tPmlzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgICAgIEFTU0VSVChtX2NvbXBpbGVkUHJvZ3Jh
bS0+c2FtcGxlckxvY2F0aW9uKCkgIT0gLTEgfHwgIW5lZWRzSW5wdXRUZXh0dXJlKCkpOwotICAg
IH0KICAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07CiB9CiAKK3ZvaWQgQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6c2V0Q29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0pCit7CisgICAgbV9jb21waWxlZFBy
b2dyYW0gPSBjb21waWxlZFByb2dyYW07Cit9CisKIGJvb2wgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6bmVlZHNJbnB1dFRleHR1cmUoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb2dy
YW1JbmZvLnByb2dyYW1UeXBlKCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRV
UkUKQEAgLTU5Nyw5ICs1OTYsNiBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6Y29tcG9zaXRlRnVuY3Rpb25TdHJpbmcoQ29tcG9zaXRlT3BlcmF0b3IgYwogQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oKQogewog
ICAgIHBsYXRmb3JtRGVzdHJveSgpOwotCi0gICAgaWYgKG1fZ2xvYmFsQ29udGV4dCkKLSAgICAg
ICAgbV9nbG9iYWxDb250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwogfQogCiBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp2YWxp
ZGF0ZWRQcm9ncmFtSW5mbygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS5oCmluZGV4IGM2OGY0YTcuLmVmNzkxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJv
Z3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oCkBAIC0zMiw3ICszMiw2IEBACiAKICNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCiAKLSNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0u
aCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTYzLDE1ICs2Miw2
IEBAIHR5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIFBsYXRmb3Jt
Q29tcGlsZWRQcm9ncmFtOwogLy8gQWxsIHNoYWRlcnMgYXJlIHZhbGlkYXRlZCB0aHJvdWdoIEFO
R0xFIGluIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0gYmVmb3JlIGJlaW5nIGNvbXBpbGVk
IGJ5IHRoZSBHcmFwaGljc0NvbnRleHQzRCBpbiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0u
CiAvLyBGb3Igc2hhZGVycyB0aGF0IHVzZSB0aGUgQ1NTIG1peCBmdW5jdGlvbiwgQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbSBhZGRzIHNoYWRlciBjb2RlIHRvIHBlcmZvcm0gRE9NIHRleHR1
cmUgYWNjZXNzLCBibGVuZGluZywgYW5kIGNvbXBvc2l0aW5nLgogLy8KLS8vIFRoZSBDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0IGNhY2hlcyB0aGUgdmFsaWRhdGVkIHByb2dyYW1zLgotLy8gQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSBvd25zIGEgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtIGlmIHZhbGlkYXRpb24gYW5kIGNvbXBpbGF0aW9uIHN1Y2NlZWRzLgotLy8gVGh1cywgY29t
cGlsZWQgcHJvZ3JhbXMgYXJlIGNhY2hlZCB2aWEgdGhlaXIgdmFsaWRhdGVkIHByb2dyYW0gb3du
ZXJzLgotLy8KLS8vIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQgaGFzIGEgd2VhayByZWZlcmVu
Y2UgdG8gdGhlIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uCi0vLyBUaHVzLCB0aGUgQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSBkZXN0cnVjdG9yIG5lZWRzIHRvIG5vdGlmeSB0aGUg
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCB0byByZW1vdmUgdGhlIHByb2dyYW0gZnJvbSB0aGUg
Y2FjaGUuCi0vLyBGRUN1c3RvbUZpbHRlciBpcyB0aGUgcmVmZXJlbmNlIG93bmVyIG9mIHRoZSBD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLgotLy8gVGh1cywgYSB2YWxpZGF0ZWQgYW5kIGNv
bXBpbGVkIHNoYWRlciBpcyBvbmx5IGtlcHQgYWxpdmUgYXMgbG9uZyBhcyB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgdmlzaWJsZSBsYXllciB0aGF0IGFwcGxpZXMgdGhlIHNoYWRlci4KLS8vCiBjbGFz
cyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IGNyZWF0ZShDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0KiBnbG9iYWxDb250ZXh0LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJv
Z3JhbUluZm8pCkBAIC04NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyB2YWxpZGF0ZWRQcm9ncmFtSW5mbygpIGNvbnN0OwogICAgIAogICAgIFBhc3NSZWZQ
dHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0oKTsKKyAgICB2
b2lkIHNldENvbXBpbGVkUHJvZ3JhbShQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIoKSBjb25z
dCAKICAgICB7CkBAIC0xMDMsMTAgKzk0LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29s
IGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7IH0KLQotICAg
IC8vICdkZXRhY2hGcm9tR2xvYmFsQ29udGV4dCcgaXMgY2FsbGVkIHdoZW4gdGhlIEN1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQgaXMgZGVsZXRlZCwgYW5kIHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhl
IGNhbGxiYWNrIGFueW1vcmUuIAotICAgIC8vIE5vdGUgdGhhdCBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0IGRvZXMgbm90IGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtLgotICAgIHZvaWQgZGV0YWNoRnJvbUdsb2JhbENvbnRleHQoKSB7
IG1fZ2xvYmFsQ29udGV4dCA9IDA7IH0KIHByaXZhdGU6CiAgICAgQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mKTsKIApAQCAtMTI0LDcgKzExMSw2IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG5lZWRzSW5wdXRUZXh0dXJlKCkgY29uc3Q7CiAKLSAgICBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0KiBtX2dsb2JhbENvbnRleHQ7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gbV9wcm9n
cmFtSW5mbzsKIAogICAgIFN0cmluZyBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3Rv
bUZpbHRlci5jcHAKaW5kZXggMTU4MTMxMS4uYzIyZjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9H
UkFQSElDUykKICNpbmNsdWRlICJGRUN1c3RvbUZpbHRlci5oIgogCisjaW5jbHVkZSAiQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUmVuZGVyZXIu
aCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCiAjaW5jbHVkZSAi
RXh0ZW5zaW9uczNELmgiCkBAIC0xNTYsOSArMTU3LDE2IEBAIGJvb2wgRkVDdXN0b21GaWx0ZXI6
OnByZXBhcmVGb3JEcmF3aW5nKCkKIHsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOwogCi0gICAgLy8gTGF6aWx5IGluamVjdCB0aGUgY29tcGlsZWQgcHJvZ3JhbSBpbnRvIHRo
ZSBDdXN0b21GaWx0ZXJSZW5kZXJlci4KLSAgICBpZiAoIW1fY3VzdG9tRmlsdGVyUmVuZGVyZXIt
PmNvbXBpbGVkUHJvZ3JhbSgpKQotICAgICAgICBtX2N1c3RvbUZpbHRlclJlbmRlcmVyLT5zZXRD
b21waWxlZFByb2dyYW0obV92YWxpZGF0ZWRQcm9ncmFtLT5jb21waWxlZFByb2dyYW0oKSk7Cisg
ICAgaWYgKCFtX2N1c3RvbUZpbHRlclJlbmRlcmVyLT5jb21waWxlZFByb2dyYW0oKSkgeworICAg
ICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0g
PSBtX3ZhbGlkYXRlZFByb2dyYW0tPmNvbXBpbGVkUHJvZ3JhbSgpOworICAgICAgICBpZiAoIWNv
bXBpbGVkUHJvZ3JhbSkgeworICAgICAgICAgICAgLy8gTGF6aWx5IGNyZWF0ZSBhIGNvbXBpbGVk
IHByb2dyYW0gYW5kIGxldCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtIGhvbGQgb24gdG8g
aXQuCisgICAgICAgICAgICBjb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW06OmNyZWF0ZShtX2NvbnRleHQsIG1fdmFsaWRhdGVkUHJvZ3JhbS0+dmFsaWRhdGVkVmVy
dGV4U2hhZGVyKCksIG1fdmFsaWRhdGVkUHJvZ3JhbS0+dmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIo
KSwgbV92YWxpZGF0ZWRQcm9ncmFtLT5wcm9ncmFtSW5mbygpLnByb2dyYW1UeXBlKCkpOworICAg
ICAgICAgICAgbV92YWxpZGF0ZWRQcm9ncmFtLT5zZXRDb21waWxlZFByb2dyYW0oY29tcGlsZWRQ
cm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICAvLyBMYXppbHkgaW5qZWN0IHRoZSBjb21waWxl
ZCBwcm9ncmFtIGludG8gdGhlIEN1c3RvbUZpbHRlclJlbmRlcmVyLgorICAgICAgICBtX2N1c3Rv
bUZpbHRlclJlbmRlcmVyLT5zZXRDb21waWxlZFByb2dyYW0oY29tcGlsZWRQcm9ncmFtLnJlbGVh
c2UoKSk7CisgICAgfQogCiAgICAgaWYgKCFtX2N1c3RvbUZpbHRlclJlbmRlcmVyLT5wcmVwYXJl
Rm9yRHJhd2luZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAyZGU5MWM0Li5hNzgz
NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFt
LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oIgogI2luY2x1ZGUg
IkZFQ3VzdG9tRmlsdGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVmFsaWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDE3OTRkZWQuLjgxMjUyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtNjMzMiw5ICs2MzMyLDE1IEBAIEZpbHRlck9wZXJhdGlvbnMgUmVuZGVyTGF5
ZXI6OmNvbXB1dGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAg
ICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3Bl
cmF0aW9uLT5wcm9ncmFtKCk7CiAgICAgICAgICAgICBpZiAoIXByb2dyYW0tPmlzTG9hZGVkKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQqIGdsb2JhbENvbnRleHQgPSByZW5kZXJlcigpLT52aWV3
KCktPmN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiB2YWxpZGF0ZWRQcm9ncmFtID0gZ2xvYmFsQ29udGV4
dC0+Z2V0VmFsaWRhdGVkUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSW5mbygpKTsKKworICAgICAg
ICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IHZhbGlkYXRlZFByb2dy
YW0gPSBwcm9ncmFtLT52YWxpZGF0ZWRQcm9ncmFtKCk7CisgICAgICAgICAgICBpZiAoIXZhbGlk
YXRlZFByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICAvLyBMYXppbHkgY3JlYXRlIGEgdmFsaWRh
dGVkIHByb2dyYW0gYW5kIHN0b3JlIGl0IG9uIHRoZSBDdXN0b21GaWx0ZXJQcm9ncmFtLgorICAg
ICAgICAgICAgICAgIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQqIGdsb2JhbENvbnRleHQgPSBy
ZW5kZXJlcigpLT52aWV3KCktPmN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKTsKKyAgICAgICAg
ICAgICAgICB2YWxpZGF0ZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6
Y3JlYXRlKGdsb2JhbENvbnRleHQsIHByb2dyYW0tPnByb2dyYW1JbmZvKCkpOworICAgICAgICAg
ICAgICAgIHByb2dyYW0tPnNldFZhbGlkYXRlZFByb2dyYW0odmFsaWRhdGVkUHJvZ3JhbSk7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghdmFsaWRhdGVkUHJvZ3JhbS0+aXNJbml0
aWFsaXplZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>