<?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>102967</bug_id>
          
          <creation_ts>2012-11-21 11:46:50 -0800</creation_ts>
          <short_desc>Make CachedSVGDocumentReference independent of FilterOperation</short_desc>
          <delta_ts>2012-11-28 18:13:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>103108</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773150</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 11:46:50 -0800</bug_when>
    <thetext>Make CachedSVGDocumentReference independent of FilterOperation to reuse it on clip-path and masking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773155</commentid>
    <comment_count>1</comment_count>
      <attachid>175495</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 11:55:00 -0800</bug_when>
    <thetext>Created attachment 175495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773385</commentid>
    <comment_count>2</comment_count>
      <attachid>175495</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 16:13:32 -0800</bug_when>
    <thetext>Comment on attachment 175495
Patch

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

r=me

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:-169
&gt; -    class Data {
&gt; -    public:
&gt; -        virtual ~Data() { }
&gt; -    };

Huh. Good to kill this.

&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:125
&gt;  PassRefPtr&lt;FilterEffect&gt; FilterEffectRenderer::buildReferenceFilter(Document* document, PassRefPtr&lt;FilterEffect&gt; previousEffect, ReferenceFilterOperation* op)

&apos;filterOperation&apos; would be a better name than &apos;op&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773402</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 16:29:22 -0800</bug_when>
    <thetext>Committed r135455: &lt;http://trac.webkit.org/changeset/135455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774689</commentid>
    <comment_count>4</comment_count>
      <attachid>175495</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-23 13:07:17 -0800</bug_when>
    <thetext>Comment on attachment 175495
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:-169
&gt;&gt; -    };
&gt; 
&gt; Huh. Good to kill this.

The reason there was this done this way in the first place was to avoid a layering violation, by having platform depend on css or SVG.  This change adds a dependency on loader/, which seems to have lots of dependencies on SVG.  So this definitely seems like a layering violation too.

That being said, it looks like platform/ -&gt; loader/ are pretty common, so this is already a pretty leaky boat.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774944</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-24 22:30:56 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 175495 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:-169
&gt; &gt;&gt; -    };
&gt; &gt; 
&gt; &gt; Huh. Good to kill this.
&gt; 
&gt; The reason there was this done this way in the first place was to avoid a layering violation, by having platform depend on css or SVG.  This change adds a dependency on loader/, which seems to have lots of dependencies on SVG.  So this definitely seems like a layering violation too.
&gt; 
&gt; That being said, it looks like platform/ -&gt; loader/ are pretty common, so this is already a pretty leaky boat.  :(

Please do not add to this! There should be no new layering violations please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774977</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-25 07:13:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 175495 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:-169
&gt; &gt; &gt;&gt; -    };
&gt; &gt; &gt; 
&gt; &gt; &gt; Huh. Good to kill this.
&gt; &gt; 
&gt; &gt; The reason there was this done this way in the first place was to avoid a layering violation, by having platform depend on css or SVG.  This change adds a dependency on loader/, which seems to have lots of dependencies on SVG.  So this definitely seems like a layering violation too.
&gt; &gt; 
&gt; &gt; That being said, it looks like platform/ -&gt; loader/ are pretty common, so this is already a pretty leaky boat.  :(
&gt; 
&gt; Please do not add to this! There should be no new layering violations please.

There was already a violation before. I prefer readable code before code that just hides this issue. Can you open a new bug report for fixing the violation in a proper way please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775002</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-25 10:07:59 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 175495 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:-169
&gt; &gt; &gt; &gt;&gt; -    };
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Huh. Good to kill this.
&gt; &gt; &gt; 
&gt; &gt; &gt; The reason there was this done this way in the first place was to avoid a layering violation, by having platform depend on css or SVG.  This change adds a dependency on loader/, which seems to have lots of dependencies on SVG.  So this definitely seems like a layering violation too.
&gt; &gt; &gt; 
&gt; &gt; &gt; That being said, it looks like platform/ -&gt; loader/ are pretty common, so this is already a pretty leaky boat.  :(
&gt; &gt; 
&gt; &gt; Please do not add to this! There should be no new layering violations please.
&gt; 
&gt; There was already a violation before. I prefer readable code before code that just hides this issue. Can you open a new bug report for fixing the violation in a proper way please?

Can you explain what the existing issue was, as I don&apos;t see it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775570</commentid>
    <comment_count>8</comment_count>
      <attachid>175495</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-26 09:46:08 -0800</bug_when>
    <thetext>Comment on attachment 175495
Patch

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

&gt; Source/WebCore/css/CachedSVGDocumentReference.h:-37
&gt; -class CachedSVGDocumentReference : public ReferenceFilterOperation::Data, public CachedSVGDocumentClient {

CachedSVGDocumentReference that inherits from Data, defined in ReferenceFilterOperation and CachedSVGDocumentClient, but is stored in a member variable of ReferenceFilterOperation in comparison to CachedSVGDocumentReference which just inherits from CachedSVGDocumentClient and is still stored in a member variable in ReferenceFilterOperation? Not much of a difference, with the exception that this looks a lot cleaner IMO.

This makes it possible to reuse this class for ReferenceMaskOperation and ReferenceClipPathOperation. Alternatives could be:

class CachedSVGDocumentReference : public ReferenceFilterOperation::Data, public ReferenceMaskOperation::Data, public ReferenceClipPathOperation::Data, public CachedSVGDocumentClient ...

, or create a base class and add multiple inheritances to the former named classes.

Of course you could see the old CachedSVGDocumentReference as some kind of behavioral design pattern, but in general it makes it harder to understand the code. I am happy to find a proper solution and don&apos;t think that RenferenceFilterOperation should have access to the document at all IMO.

I would prefer a new bug report to fix this issue since I plan other changes over the next weeks and months anyway. But if you feel strongly about it, we can roll the patch out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775722</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-26 11:39:03 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 175495 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CachedSVGDocumentReference.h:-37
&gt; &gt; -class CachedSVGDocumentReference : public ReferenceFilterOperation::Data, public CachedSVGDocumentClient {
&gt; 
&gt; CachedSVGDocumentReference that inherits from Data, defined in ReferenceFilterOperation and CachedSVGDocumentClient, but is stored in a member variable of ReferenceFilterOperation in comparison to CachedSVGDocumentReference which just inherits from CachedSVGDocumentClient and is still stored in a member variable in ReferenceFilterOperation? Not much of a difference, with the exception that this looks a lot cleaner IMO.


You misunderstand, the issue is that platform/ cannot #include non-platform/, not the other way around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777181</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-27 13:43:19 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 175495 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CachedSVGDocumentReference.h:-37
&gt; &gt; &gt; -class CachedSVGDocumentReference : public ReferenceFilterOperation::Data, public CachedSVGDocumentClient {
&gt; &gt; 
&gt; &gt; CachedSVGDocumentReference that inherits from Data, defined in ReferenceFilterOperation and CachedSVGDocumentClient, but is stored in a member variable of ReferenceFilterOperation in comparison to CachedSVGDocumentReference which just inherits from CachedSVGDocumentClient and is still stored in a member variable in ReferenceFilterOperation? Not much of a difference, with the exception that this looks a lot cleaner IMO.
&gt; 
&gt; 
&gt; You misunderstand, the issue is that platform/ cannot #include non-platform/, not the other way around.

Yes, I think I am confused when I look at it. The files are not dependent on content in platform/ and have nothing platform dependent, neither CachedSVGDocument nor CachedSVGDocumentClient. But I didn&apos;t check if there are inheriting classes from CachedResource. Why should CachedSVGDocument be platform dependent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778048</commentid>
    <comment_count>11</comment_count>
      <attachid>175495</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-28 10:39:43 -0800</bug_when>
    <thetext>Comment on attachment 175495
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:31
&gt; +#include &quot;CachedSVGDocumentReference.h&quot;

Here&apos;s your layering violation right here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778049</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-28 10:40:14 -0800</bug_when>
    <thetext>I agree with Sam: this patch is adding a new layering violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778543</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-28 17:42:26 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 175495 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:31
&gt; &gt; +#include &quot;CachedSVGDocumentReference.h&quot;
&gt; 
&gt; Here&apos;s your layering violation right here.

Ah sorry, that is right. Thought that the file is in WebCore/css/style where it belongs to IMO. There is no reason why this file is in platform. Same for FilterOperations. Would you be ok to move these files to the proper locations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778557</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-28 17:52:29 -0800</bug_when>
    <thetext>Aren&apos;t they in platform/ because GraphicsLayer needs them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778561</commentid>
    <comment_count>15</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-28 17:55:25 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 175495 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:31
&gt; &gt; &gt; +#include &quot;CachedSVGDocumentReference.h&quot;
&gt; &gt; 
&gt; &gt; Here&apos;s your layering violation right here.
&gt; 
&gt; Ah sorry, that is right. Thought that the file is in WebCore/css/style where it belongs to IMO. There is no reason why this file is in platform. Same for FilterOperations. Would you be ok to move these files to the proper locations?

That doesn&apos;t work either, because lots of files in platform/ depend on these files, e.g., platform/graphics/GraphicsLayer.h
platform/graphics/ca/PlatformCAAnimation.h
platform/graphics/texmap/TextureMapper.h
etc.

So then those would become layer violations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778572</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-28 18:13:38 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (From update of attachment 175495 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:31
&gt; &gt; &gt; &gt; +#include &quot;CachedSVGDocumentReference.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Here&apos;s your layering violation right here.
&gt; &gt; 
&gt; &gt; Ah sorry, that is right. Thought that the file is in WebCore/css/style where it belongs to IMO. There is no reason why this file is in platform. Same for FilterOperations. Would you be ok to move these files to the proper locations?
&gt; 
&gt; That doesn&apos;t work either, because lots of files in platform/ depend on these files, e.g., platform/graphics/GraphicsLayer.h
&gt; platform/graphics/ca/PlatformCAAnimation.h
&gt; platform/graphics/texmap/TextureMapper.h
&gt; etc.
&gt; 
&gt; So then those would become layer violations.

Right, let me think about that. Then the code is actually not that 
(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (From update of attachment 175495 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175495&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:31
&gt; &gt; &gt; &gt; +#include &quot;CachedSVGDocumentReference.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Here&apos;s your layering violation right here.
&gt; &gt; 
&gt; &gt; Ah sorry, that is right. Thought that the file is in WebCore/css/style where it belongs to IMO. There is no reason why this file is in platform. Same for FilterOperations. Would you be ok to move these files to the proper locations?
&gt; 
&gt; That doesn&apos;t work either, because lots of files in platform/ depend on these files, e.g., platform/graphics/GraphicsLayer.h
&gt; platform/graphics/ca/PlatformCAAnimation.h
&gt; platform/graphics/texmap/TextureMapper.h
&gt; etc.
&gt; 
&gt; So then those would become layer violations.

Ah right, there is a bad dependency graph on FilterOperations. Hm... I&apos;ll look into it tomorrow again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175495</attachid>
            <date>2012-11-21 11:55:00 -0800</date>
            <delta_ts>2012-11-28 10:39:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102967-20121121115247.patch</filename>
            <type>text/plain</type>
            <size>23534</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU2MDE4NjliNzcwODNk
MTdiYmFhMmJiODVhYzBiMWIzMGI2NjJjMS4uOWVkODFkZWQ1ZjJjNzczOWRjNjNhNzg4MDQ4MTE3
NDA1MTNkODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTExLTIxICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZSBpbmRlcGVuZGVudCBvZiBGaWx0ZXJPcGVyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UgaW5kZXBlbmRlbnQgb2YgRmlsdGVyT3BlcmF0aW9uIHRvIHJldXNlIHRoZSBj
b2RlIGZvciBjbGlwLXBhdGggYW5kIG1hc2tpbmcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWZhY3RvcmluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IE1vdmUgQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgdG8gaXQncyBwcm9wZXIgbG9jYXRpb24gYW5kIGl0IHRvIHRo
ZSBwcm9qZWN0cy4gCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6ZG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6IFJlbmFtZSBkYXRhKCkgYW5kIHNl
dERhdGEoKSB0bworICAgICAgICAgICAgY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBhbmQg
aXRzIHNldHRlci4gQWRhcHQgb3RoZXIgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbjo6c2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAo
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6
dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cyk6CisKIDIwMTItMTEtMjAgIE1pa2UgV2VzdCAg
PG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgJyNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmgiJyBpbmNsdWRlIHdoZW4gdW5uZWNlc3NhcnkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCBmZWE3ZWZjOWI1MmZiMjNlMTVhMzQ1MjFlZGIzNDNjZjdk
MTkwMTdjLi4xMzg4NDMwYTQzYTU5NzZhYWNkOWQ4NGNhNTQwYTMxM2E5MDVkNTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM4NDAsNiArMzg0MCw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDQwMjllZThiYThmYmEzZTc5YTAxNmIyMTg1ZjA0NzNmZTAzZjcwZTMuLjVk
MDVmMWM2YWJmYmFkNDBlMDdhZWU5ZmEyNjc5MmQxYmJiNTQ3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTMwNDgsNiArMzA0OCw3IEBACiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
JywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCcsCisgICAg
ICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgnLAogICAg
ICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwJywKICAgICAgICAgICAg
ICdsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQwMTg3ODlmY2IxMTQ5NjdhNDBkYzVhODlmZjgy
ZGQ0ODlmY2JkYTYuLjUxZTlmZTEwY2YzMzhlYzk2NDIxMTUwYzY4MDg3ZDBkMDcyM2ExMjUgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yODI3
Nyw2ICsyODI3NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxs
b2FkZXJcY2FjaGVcQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGFhMTI1YzRmODkxOWM2MjE2MDRiZGI2MjgxNmVkN2Y3YzhhZjE2MS4uYzUzMWViMWFk
MDA3MjE0NWM4NTg1N2YxZjdlZjI3NmI2YjViMWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ0NSw3ICszNDQ1LDYgQEAK
IAkJOTcxMkE1QUUxNTAwNEVEQTAwNDhBRjEwIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxMkE1NTUx
NTAwNEVEQTAwNDhBRjEwIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oICovOyB9OwogCQk5
NzEyQTVCMDE1MDA0RURBMDA0OEFGMTAgLyogSURCQW55LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNTU3MTUwMDRFREEwMDQ4QUYxMCAvKiBJ
REJBbnkuY3BwICovOyB9OwogCQk5NzEyQTVCMTE1MDA0RURBMDA0OEFGMTAgLyogSURCQW55Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU1ODE1
MDA0RURBMDA0OEFGMTAgLyogSURCQW55LmggKi87IH07Ci0JCTk3MTJBNUU1MTUwMDRFREEwMDQ4
QUYxMCAvKiBJREJCYWNraW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTcxMkE1OEMxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkJhY2tpbmdT
dG9yZS5jcHAgKi87IH07CiAJCTk3MTJBNUIzMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
MTJBNTVBMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKIAkJOTcx
MkE1QjQxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxMkE1NUIxNTAwNEVEQTAwNDhBRjEwIC8q
IElEQkNhbGxiYWNrcy5oICovOyB9OwogCQk5NzEyQTVCNTE1MDA0RURBMDA0OEFGMTAgLyogSURC
Q3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3MTJBNTVDMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJDdXJzb3IuY3BwICovOyB9OwpAQCAtMzQ4
NSw2ICszNDg0LDcgQEAKIAkJOTcxMkE1REYxNTAwNEVEQTAwNDhBRjEwIC8qIElEQktleVBhdGgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNTg2
MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlQYXRoLmggKi87IH07CiAJCTk3MTJBNUUyMTUwMDRF
REEwMDQ4QUYxMCAvKiBJREJLZXlSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU4OTE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5UmFu
Z2UuY3BwICovOyB9OwogCQk5NzEyQTVFMzE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5UmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNThB
MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlSYW5nZS5oICovOyB9OworCQk5NzEyQTVFNTE1MDA0
RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNThDMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJC
YWNraW5nU3RvcmUuY3BwICovOyB9OwogCQk5NzEyQTVFNzE1MDA0RURBMDA0OEFGMTAgLyogSURC
TGV2ZWxEQkNvZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzEyQTU4RTE1MDA0RURBMDA0OEFGMTAgLyogSURCTGV2ZWxEQkNvZGluZy5jcHAg
Ki87IH07CiAJCTk3MTJBNUU4MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU4RjE1
MDA0RURBMDA0OEFGMTAgLyogSURCTGV2ZWxEQkNvZGluZy5oICovOyB9OwogCQk5NzEyQTVFOTE1
MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxMkE1OTAxNTAwNEVEQTAwNDhBRjEwIC8qIElE
Qk9iamVjdFN0b3JlLmNwcCAqLzsgfTsKQEAgLTYzNzMsNiArNjM3Myw3IEBACiAJCUZBQkU3MkY5
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRjIxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTE1hdGhFbGVtZW50LmggKi87IH07CiAJCUZBQkU3MkZEMTA1OUMyMTEwMEQ5OTlERCAv
KiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuY3BwICovOyB9OwogCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1M
TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkFCRTcyRkMxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCAqLzsgfTsKKwkJRkIy
QzE1QzMxNjVENjQ5RDAwMzlDOUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjJDMTVDMjE2NUQ2
NDkwMDAzOUM5RjggLyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQjc4QUQyRTE1MUJGNUU2MDBG
RTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQjky
REY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTJERjQ5MTVGRUQwODcwMDk5NDQz
MyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZCQzIyMERGMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwICovOyB9OwpAQCAtOTA5OSw4ICs5MTAwLDggQEAKIAkJNjVGODA2OTcwNTREOUY4NjAw
OEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1RkVB
ODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QzYzODg5NEE5NkND
RUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycy5jcHA7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8q
IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJl
c291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3ND
b250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZDMTEx
MjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRENHLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDczNSw3ICsxMDczNiw2IEBACiAJCTk3MTJBNThBMTUwMDRFREEwMDQ4
QUYxMCAvKiBJREJLZXlSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJ
REJLZXlSYW5nZS5oOyBwYXRoID0gTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxMkE1OEIxNTAwNEVEQTAwNDhBRjEwIC8qIElE
QktleVJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBJREJLZXlSYW5nZS5pZGw7IHBh
dGggPSBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3MTJBNThDMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJCYWNraW5nU3RvcmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSURCQmFja2luZ1N0b3Jl
LmNwcDsgcGF0aCA9IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MTJBNThEMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJC
YWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSURCQmFja2lu
Z1N0b3JlLmg7IHBhdGggPSBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxMkE1OEUxNTAwNEVEQTAwNDhBRjEwIC8qIElE
QkxldmVsREJDb2RpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SURCTGV2ZWxEQkNvZGluZy5jcHA7IHBhdGggPSBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxMkE1OEYxNTAwNEVE
QTAwNDhBRjEwIC8qIElEQkxldmVsREJDb2RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSURCTGV2ZWxEQkNvZGluZy5oOyBwYXRoID0gTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkNvZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzEyQTU5MDE1
MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gSURCT2JqZWN0U3RvcmUuY3BwOyBwYXRoID0gTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTM4NTksNiArMTM4NTksNyBAQAogCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRh
Z3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aHRhZ3MuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxF
bGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZD
MTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZCMkMxNUMyMTY1RDY0OTAwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjc4QUQyQzE1MUJG
NUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NQYXJzZXJNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZC
OTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTkzMTcsNiArMTkzMTgsNyBAQAogCQkJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8sCiAJCQkJQTEwNEYyNDExNEM3MUY3QTAwOUUyQzIzIC8q
IENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLywKIAkJCQlBMTA0RjI0MjE0QzcxRjdBMDA5RTJDMjMg
LyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLywKKwkJCQlGQjJDMTVDMjE2NUQ2NDkwMDAzOUM5Rjgg
LyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCAqLywKIAkJCQkwNzUzODYwMDE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLywKIAkJCQkwNzUzODYwMTE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi8sCiAJCQkJQkNCMTZDMEUwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwICovLApAQCAtMjU3NzcsNiArMjU3Nzks
NyBAQAogCQkJCTFFNTAwODQ3MTY1MTZBRDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFRjc2NkIxNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRp
bmdzTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0Yg
LyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZCMkMxNUMzMTY1RDY0
OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTI1M2FiZDQzNzE4YTU2NzE1NjEwNWY1ZDIy
ODcwZDYxNTUzNjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2VfaAotI2RlZmluZSBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZV9oCi0KLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0jaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBDYWNoZWRTVkdEb2N1bWVudDsKLQotY2xhc3MgQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpEYXRh
LCBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgewotcHVibGljOgotICAgIENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlKENhY2hlZFNWR0RvY3VtZW50KiBkb2N1bWVudCkgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KSB7IG1fZG9jdW1lbnQtPmFkZENsaWVudCh0aGlzKTsgfQotICAgIHZpcnR1
YWwgfkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCkgeyBtX2RvY3VtZW50LT5yZW1vdmVDbGll
bnQodGhpcyk7IH0KLSAgICBDYWNoZWRTVkdEb2N1bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9Ci1wcml2YXRlOgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwotfTsKLQotfTsKLQotI2VuZGlmCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA3NjcwNDFmYTE2Yjc2YjQ5
ZTI2NjIxZWE5ZTczMTI1MWM0YmUxZGUuLmI3MjdkZDRhZTVhZjY5ZTNmNzJkMDk3ZGMzZTE2MThl
NDg4NmVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQ1ODgsNyAr
NDU4OCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdTVkdEb2N1bWVudHMoKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBTdGFzaCB0aGUgQ2Fj
aGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVyZW5jZSBmaWx0ZXIuCi0gICAgICAgICAgICByZWZl
cmVuY2VGaWx0ZXItPnNldERhdGEoYWRvcHRQdHIobmV3IENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKGNhY2hlZERvY3VtZW50KSkpOworICAgICAgICAgICAgcmVmZXJlbmNlRmlsdGVyLT5zZXRD
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShhZG9wdFB0cihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UoY2FjaGVkRG9jdW1lbnQpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9wZW5k
aW5nU1ZHRG9jdW1lbnRzLmNsZWFyKCk7CkBAIC00OTMzLDcgKzQ5MzMsNyBAQCBib29sIFN0eWxl
UmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZQogICAgICAgICAgICAgICAgIGlmICghc3ZnRG9jdW1lbnRWYWx1ZS0+bG9h
ZFJlcXVlc3RlZCgpKQogICAgICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTVkdEb2N1bWVudHMu
c2V0KG9wZXJhdGlvbi5nZXQoKSwgc3ZnRG9jdW1lbnRWYWx1ZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoc3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZHRG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uLT5zZXREYXRhKGFkb3B0UHRyKG5ldyBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZShzdmdEb2N1bWVudFZhbHVlLT5jYWNoZWRTVkdEb2N1bWVudCgpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24tPnNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKGFkb3B0UHRyKG5ldyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShzdmdEb2N1bWVudFZh
bHVlLT5jYWNoZWRTVkdEb2N1bWVudCgpKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlvbik7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY4MDMwZjhiZjI4ZWY3YTNjMmU5NzZkOTViZWE1MjRhYTk3
N2ZiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlX2gKKyNkZWZpbmUgQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2VfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKENTU19GSUxURVJTKQorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1l
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSA6IHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7CitwdWJsaWM6CisgICAg
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoQ2FjaGVkU1ZHRG9jdW1lbnQqIGRvY3VtZW50KSA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpIHsgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSB7IG1fZG9jdW1lbnQtPnJl
bW92ZUNsaWVudCh0aGlzKTsgfQorICAgIENhY2hlZFNWR0RvY3VtZW50KiBkb2N1bWVudCgpIHsg
cmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Cit9OworCit9OworCisjZW5kaWYK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0ODk0NTc3YzA2NWI1ZGNmMzZjMWJj
YjI0ZGY2MThhOGVkM2I1NDhmLi41OWJjZDk3MDcwYjNjNTljYmJlYjc0OGU2NmEwNzNmOTAwZWVh
Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKIAorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJMYXlvdXRTaXplLmgiCkBAIC0xNjMsMTkgKzE2NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21lbnQs
IHR5cGUpKTsKICAgICB9CiAKLSAgICBjbGFzcyBEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHZpcnR1YWwgfkRhdGEoKSB7IH0KLSAgICB9OwotCiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1Bp
eGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQogCi0gICAgRGF0YSogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShQYXNzT3duUHRyPERhdGE+IGRh
dGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBj
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KKyAgICB2b2lkIHNldENhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlKFBhc3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKSB7IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBjYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZTsgfQorCiAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Rmls
dGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0
ZXJFZmZlY3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIApAQCAtMTk4LDcgKzE5NSw3IEBAIHByaXZhdGU6
CiAKICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5nIG1fZnJhZ21lbnQ7Ci0gICAgT3duUHRy
PERhdGE+IG1fZGF0YTsKKyAgICBPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IG1f
Y2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9m
aWx0ZXJFZmZlY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA3NzJiY2RiMzMxZTFjYzhhNTVlODY0OWQ5MDQ2N2Fl
NzQ5OTlkMDE3Li4wOGVjYzZiN2JjMzcwYWU4YzNiOGMyODM4YWE3M2M3OWRlNjEzZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVy
OjppbnB1dENvbnRleHQoKQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
KiBvcCkKIHsKICNpZiBFTkFCTEUoU1ZHKQotICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0YXRpY19jYXN0PENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKj4ob3AtPmRhdGEoKSk7CisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UqIGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gb3AtPmNhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlKCk7CiAgICAgQ2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hlZFNWR0RvY3VtZW50ID0gY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPyBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+ZG9j
dW1lbnQoKSA6IDA7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIFNWRyBkb2N1bWVudCwgdGhpcyBp
cyBhbiBleHRlcm5hbCByZWZlcmVuY2UuIE90aGVyd2lzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAppbmRleCAxOTBkZTYxYmU1YzFj
MTRhM2U1NmM0YWE5YjFkZGEwZjZkOTNlNDQwLi42ZTI1ZDU3M2NkOGZiNWFhNzlhYzNkM2QwODg4
NzI4NTY3ZmRhMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvOjp1cGRhdGVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSAh
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbi5n
ZXQoKSk7Ci0gICAgICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBkb2N1bWVudFJlZmVy
ZW5jZSA9IHN0YXRpY19jYXN0PENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKj4ocmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uLT5kYXRhKCkpOworICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZSogZG9jdW1lbnRSZWZlcmVuY2UgPSByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24tPmNhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CiAgICAgICAgIENhY2hlZFNWR0RvY3VtZW50KiBjYWNo
ZWRTVkdEb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlID8gZG9jdW1lbnRSZWZlcmVuY2UtPmRv
Y3VtZW50KCkgOiAwOwogCiAgICAgICAgIGlmIChjYWNoZWRTVkdEb2N1bWVudCkgewo=
</data>
<flag name="review"
          id="190957"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>