<?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>85456</bug_id>
          
          <creation_ts>2012-05-02 22:26:29 -0700</creation_ts>
          <short_desc>WebKit should have an easy way to add/remove FEATURE_DEFINES for all ports</short_desc>
          <delta_ts>2017-07-18 08:29:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>85749</dependson>
    
    <dependson>85433</dependson>
    
    <dependson>85445</dependson>
    
    <dependson>85454</dependson>
    
    <dependson>85535</dependson>
    
    <dependson>85542</dependson>
    
    <dependson>85545</dependson>
    
    <dependson>85548</dependson>
    
    <dependson>85583</dependson>
    
    <dependson>85584</dependson>
    
    <dependson>85587</dependson>
    
    <dependson>85611</dependson>
    
    <dependson>85743</dependson>
    
    <dependson>85744</dependson>
    
    <dependson>85746</dependson>
    
    <dependson>85754</dependson>
    
    <dependson>87127</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dpranke</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>mrowe</cc>
    
    <cc>mxie</cc>
    
    <cc>ossy</cc>
    
    <cc>paroga</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615001</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:26:29 -0700</bug_when>
    <thetext>WebKit should have an easy way to add/remove FEATURE_DEFINES for all ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615004</commentid>
    <comment_count>1</comment_count>
      <attachid>139954</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:29:26 -0700</bug_when>
    <thetext>Created attachment 139954
wip patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615006</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:33:30 -0700</bug_when>
    <thetext>The beauty (in my mind) of a solution like this is that it does not mandate adoption.  Users don&apos;t have to use this script to edit these files (they can continue to edit them like always), but those who wish to use this script can edit all the files at once, automatically. :)

Furthermore, this gives us a central database of what ports use what features.  We can learn interesting things, like the fact that the WinCairo port has a bunch of features disabled that it probably doesn&apos;t want to... or that Mac appears to be the only port using the NOTIFICATION stuff, or have a better idea of how many features are chromium-only (once we add auto-generation of Chromium&apos;s feature_defines.gypi).

Another big-win comes when we automate generation of the FEATURE_DEFINES code used by DerivedSources.make, since currently its even more complicated to add an ENABLE_ if you want to be able to use it from an idl or html.css. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615008</commentid>
    <comment_count>3</comment_count>
      <attachid>139954</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:34:55 -0700</bug_when>
    <thetext>Comment on attachment 139954
wip patch

The patch is much more interesting when you see what it generates.  I&apos;ll post that patch once bug 85454 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615009</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:39:50 -0700</bug_when>
    <thetext>I&apos;m interested in working with the Gtk, Qt, and CMake maintainers to add auto-generation for those FEATURE_DEFINES lists as well.

Qt uses Tools/qmake/mkspecs/features/features.prf (which does *not* look well suited for auto-generation)

CMake ports use Source/cmake/WebKitFeatures.cmake (which should be easy to autogenerate, especially if some of the header/footer are split out into a separate file).

I&apos;m not sure what Gtk uses.

build-webkit&apos;s --enable-foo option list should also be easy to generate as a perl module which build-webkit can then include.

HTML_FLAGS generation should also be easy to automate/autogenerate:
http://trac.webkit.org/browser/trunk/Source/WebCore/DerivedSources.make#L815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615019</commentid>
    <comment_count>5</comment_count>
      <attachid>139957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-02 22:52:59 -0700</bug_when>
    <thetext>Created attachment 139957
diff when running the script against TOT

Note how the script catches the fact that ENABLE_LEGACY_CSS_VENDOR_PREFIXES is defined in WebCore/Configurations/FeatureDefines.xcconfig, but not in the other *.xcconfig files (a common mistake!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615089</commentid>
    <comment_count>6</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-05-03 01:22:53 -0700</bug_when>
    <thetext>First of all, let me say that I absolutely applaud the effort to make things easier in these areas, and as you say, this is certainly better than what we have today. I do however have some questions:

1. build-webkit already has a similar list to the one in Features.py, which is the somewhat de-facto list of feature-defines-that-all-ports-should-care-about (as far as I can tell). By duplicating this list in Features.py we&apos;re slightly complicating the issue for those tho manually add defines. Is there some way we can avoid that? What happens when someone adds a define manually, but forgets to update Features.py? Should the next author who runs this script and notices that the diff looks off do the sync?

2. The existing list in build-webkit allows for dynamically evaluating the default-values of the defines, something we take advantage of in the Qt port since the defines can vary depending on the platform and optional dependencies. Is this something you&apos;ve planned for?

3. A bunch of features are also defined in wtf/Platform.h, what&apos;s the relationship between things that go in build-webkit/Features.py, and Platform.h? Should Platform.h only be used for features that are specific to a given port?

Regarding the Qt-port&apos;s features.prf, it&apos;s can&apos;t be auto-generated wholesale (due to the dynamic evaluation of which defines to enable), but a large percentage of the defines are still static, and we could certainly include an auto-generated list of those static defines. How do you see this expressed in Features.py (that a subset of the features are defined, either enabled or disabled, but some are left out)?

Anyways, I&apos;m happy to help make this work for the Qt port as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615994</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-03 23:42:24 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; First of all, let me say that I absolutely applaud the effort to make things easier in these areas, and as you say, this is certainly better than what we have today. I do however have some questions:
&gt; 
&gt; 1. build-webkit already has a similar list to the one in Features.py, which is the somewhat de-facto list of feature-defines-that-all-ports-should-care-about (as far as I can tell). By duplicating this list in Features.py we&apos;re slightly complicating the issue for those tho manually add defines. Is there some way we can avoid that?

Yup.  I&apos;m very close to being able to generate build-webkit&apos;s list exactly. :)  I&apos;ll post an updated patch once I have the diff small enough.

&gt; What happens when someone adds a define manually, but forgets to update Features.py? Should the next author who runs this script and notices that the diff looks off do the sync?

I think if I&apos;m successful, such a diff will not happen in practice.   Adding an ENABLE_ by hand is really a ton of work... at least if you want to do it right.  If we go with this solution, all these files will have a &quot;do not edit.&quot; warning at the top, with instructions on how to regenerate them.  In the case the someone needs to edit a file by hand, or does because they failed to read the warning, it&apos;s fine, these syncs have proven very easy to deal with so far. :)

&gt; 2. The existing list in build-webkit allows for dynamically evaluating the default-values of the defines, something we take advantage of in the Qt port since the defines can vary depending on the platform and optional dependencies. Is this something you&apos;ve planned for?

Qt&apos;s logic for such appear to be entirely in Tools/qmake/mkspecs/features/features.prf.  build-webkit makes its decisions soley based on which port you&apos;re building.  I think this setup is very useful for generating feature *defaults* and ports which want to do special handling based on library detection, etc. will still need to do that in their own build files.  Those build files should just read from some central list of defaults (which this script can help you generate).

&gt; 3. A bunch of features are also defined in wtf/Platform.h, what&apos;s the relationship between things that go in build-webkit/Features.py, and Platform.h? Should Platform.h only be used for features that are specific to a given port?

Yes.  We&apos;ve discussed moving ENABLE_ macros out of Platform.h in the past.  We don&apos;t have to do that to adopt this solution, but we&apos;ll eventually want to.  I&apos;m being careful in my editing to make sure that I&apos;m syncing my feature &quot;database&quot; with the information in all the existing build files, including Platform.h.

&gt; Regarding the Qt-port&apos;s features.prf, it&apos;s can&apos;t be auto-generated wholesale (due to the dynamic evaluation of which defines to enable), but a large percentage of the defines are still static, and we could certainly include an auto-generated list of those static defines. How do you see this expressed in Features.py (that a subset of the features are defined, either enabled or disabled, but some are left out)?

The current mental model I&apos;m shooting for is one where this script will generate all of these &quot;default&quot; lists, and most ports will use the defaults wholesale.  Some ports, like Qt and Chromium, which want to build in lots of different configurations/environments will need to read in the defaults list from some build file of their choosing (which this script can easily generate) and then modify it based on the configuration they find themselves in.  This build file split will be needed for both features.prf (Qt) and feature_defines.gypi (chromium), as well as possibly the CMake files.  If you&apos;re willing to split the static parts of features.prf out from the dynamic parts, that would make it possible for mee to generate the feature_defaults.prf very easily. :)

&gt; Anyways, I&apos;m happy to help make this work for the Qt port as well.

Thanks!  The above mentioned split is the first step for Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616064</commentid>
    <comment_count>8</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-05-04 03:37:36 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Yup.  I&apos;m very close to being able to generate build-webkit&apos;s list exactly. :)  I&apos;ll post an updated patch once I have the diff small enough.

Sweet!

&gt; &gt; 2. The existing list in build-webkit allows for dynamically evaluating the default-values of the defines, something we take advantage of in the Qt port since the defines can vary depending on the platform and optional dependencies. Is this something you&apos;ve planned for?
&gt; 
&gt; Qt&apos;s logic for such appear to be entirely in Tools/qmake/mkspecs/features/features.prf.  build-webkit makes its decisions soley based on which port you&apos;re building. 

build-webkit also calls out to &quot;qmake features.pro CONFIG+=compute_defaults&quot;, which will let us update the @features list&apos;s defaults based on the actual platform. This is useful for two reasons:

 1. running build-webkit --help will show the correct defaults for your current setup
 2. build-webkit (though webkitdirs.pm), will only pass overridden features to qmake, eg DEFINES+=ENABLE_VIDEO=0, not every single feature-define, which makes it easier to see when you&apos;re building what sort of modifications you did to the build config. (The full config is still available in .webkit.config in the root build dir).

But, from looking at bug 85548 this would still work, as we would get a static list from the new perl module, and still run qmake to compute the dynamic defaults.

&gt; The current mental model I&apos;m shooting for is one where this script will generate all of these &quot;default&quot; lists, and most ports will use the defaults wholesale.  Some ports, like Qt and Chromium, which want to build in lots of different configurations/environments will need to read in the defaults list from some build file of their choosing (which this script can easily generate) and then modify it based on the configuration they find themselves in.  This build file split will be needed for both features.prf (Qt) and feature_defines.gypi (chromium), as well as possibly the CMake files.  If you&apos;re willing to split the static parts of features.prf out from the dynamic parts, that would make it possible for mee to generate the feature_defaults.prf very easily. :)

Ah, I see, I think that should be workable for the Qt port, I&apos;ll have a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616285</commentid>
    <comment_count>9</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-05-04 09:19:19 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ah, I see, I think that should be workable for the Qt port, I&apos;ll have a look!

Tools/qmake/mkspecs/features/features.pri is now ready to be auto-generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616859</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-04 19:01:31 -0700</bug_when>
    <thetext>OK.  Have Qt generation up and running.  Gtk is the only big one left.  (CMake will require some trivial refactoring, but I don&apos;t want to ask them to do that until the rest lands.)  If someone from the Gtk port would like to help refactor the Gtk system similar to how Tor did with Qt, I&apos;m happy to include Gtk support in the patch I post for review (probably Monday).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621301</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-10 23:40:54 -0700</bug_when>
    <thetext>I&apos;ll try to describe the Gtk port&apos;s behavior, but would like to get a rubber-stamp on this comment from a senior port maintainer (Martin or Xan who are already CC-ed).

The Gtk port does not really have an equivalent to Qt&apos;s features.prf. The only way of dynamically enabling an disabling features at compile-time is through the configure script. This is generated out of configure.ac, but I would not recommend auto-generating any part of this file as there is more logic required for specific features to get them enabled (additional libraries etc.). Another barrier is that it wouldn&apos;t be appropriate to have all the possible features listed there as many of these features are not supported yet by the Gtk port and given that the file is basically the gateway to configuring a release version of the product this would only confuse the users. Generally, though admittedly not in all cases, the features present in these files are those that are either supported or in progress of being supported. Because of that it is best that the feature-enabling configuration options are maintained manually.

The build-webkit script simply translates the features to configuration flags and later in the process calls the configure script.

In compilation, (more or less supported) features enabled via the configure script are then each checked in Source/WebCore/GNUmakefile.am, adding the feature to the feature defines and the cppflags if enabled. This is a part of logic that could be split into a GNUmakefile.features.am file and be autogenerated, but it shouldn&apos;t stop you from continuing on working on the patch (basically it shouldn&apos;t be a compilation-breaker). Currently these checks are maintained parallel with the corresponding feature in configure.ac.

Overall, from the current work, the Gtk port depends most on a properly-generated feature list that&apos;s used in build-webkit. The feature configuration options in configure.ac are maintained manually and I think they would be preferred to stay that way. A possible GNUmakefile.features.am autogeneration can be added later, but it shouldn&apos;t be a showstopper at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621369</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-05-11 01:12:19 -0700</bug_when>
    <thetext>(In reply to comment #11)

&gt; Overall, from the current work, the Gtk port depends most on a properly-generated feature list that&apos;s used in build-webkit. The feature configuration options in configure.ac are maintained manually and I think they would be preferred to stay that way. A possible GNUmakefile.features.am autogeneration can be added later, but it shouldn&apos;t be a showstopper at the moment.

I think I agree with your assessment. I wonder if this sort of situation would better than what we have now:

1. Most WebKit/WebCore features are controlled via the option autogeneration and are hardcoded in the generated file.
2. configure.ac has a very minimal set of features that override the ones in the autogenerated file. I think it would be useful to trim down the options exposed to the user to a much smaller set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630323</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-22 06:25:09 -0700</bug_when>
    <thetext>(In reply to comment #12)

I&apos;ve filed two bugs for these changes:

&gt; I think I agree with your assessment. I wonder if this sort of situation would better than what we have now:
&gt; 
&gt; 1. Most WebKit/WebCore features are controlled via the option autogeneration and are hardcoded in the generated file.

Bug #87127, will block this bug.

&gt; 2. configure.ac has a very minimal set of features that override the ones in the autogenerated file. I think it would be useful to trim down the options exposed to the user to a much smaller set.

Bug #87126, not that much related to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706104</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-27 23:27:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; OK.  Have Qt generation up and running.  Gtk is the only big one left.  (CMake will require some trivial refactoring, but I don&apos;t want to ask them to do that until the rest lands.)  If someone from the Gtk port would like to help refactor the Gtk system similar to how Tor did with Qt, I&apos;m happy to include Gtk support in the patch I post for review (probably Monday).

Is there any update on this bug? There are zillion new, but disabled
features on Qt, because authors don&apos;t know if they should add them
to features.pri.

It would be great if we don&apos;t have to find new features manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706193</commentid>
    <comment_count>15</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-28 02:35:20 -0700</bug_when>
    <thetext>For every feature, CMake has an entry at Source/cmake/WebKitFeatures.cmake and  Source/cmakeconfig.h.cmake. Features that are enable for every CMake port are marked as ON at WebKitFeatures.cmake, which are just a few.

After that, every port can override these settings at cmake/Options[Efl,BlackBerry,WindowsCE,etc].cmake. This is how the CMake port works currently.

We will need to split Options[PortName].cmake into WebKitFeatures[PortName].cmake in order to make it generator friendly, since currently it does more things than just features overrides. 

What I propose is, for every existing feature we add a disabled entry at WebKitFeatures.cmake and a declaration at cmakeconfig.h.cmake. For every feature enabled for a given CMake port, add an enabled entry at WebKitFeatures[PortName].cmake.

I volunteer doing this work if it sounds sane for the other CMake guys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706331</commentid>
    <comment_count>16</comment_count>
    <who name="Ming Xie">mxie</who>
    <bug_when>2012-08-28 07:42:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; For every feature, CMake has an entry at Source/cmake/WebKitFeatures.cmake and  Source/cmakeconfig.h.cmake. Features that are enable for every CMake port are marked as ON at WebKitFeatures.cmake, which are just a few.
&gt; 
&gt; After that, every port can override these settings at cmake/Options[Efl,BlackBerry,WindowsCE,etc].cmake. This is how the CMake port works currently.
&gt; 
&gt; We will need to split Options[PortName].cmake into WebKitFeatures[PortName].cmake in order to make it generator friendly, since currently it does more things than just features overrides. 
&gt; 
&gt; What I propose is, for every existing feature we add a disabled entry at WebKitFeatures.cmake and a declaration at cmakeconfig.h.cmake. For every feature enabled for a given CMake port, add an enabled entry at WebKitFeatures[PortName].cmake.
&gt; 
&gt; I volunteer doing this work if it sounds sane for the other CMake guys.

This sounds okay for the BlackBerry port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707144</commentid>
    <comment_count>17</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-28 23:48:59 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; For every feature, CMake has an entry at Source/cmake/WebKitFeatures.cmake and  Source/cmakeconfig.h.cmake. Features that are enable for every CMake port are marked as ON at WebKitFeatures.cmake, which are just a few.
&gt; 
&gt; After that, every port can override these settings at cmake/Options[Efl,BlackBerry,WindowsCE,etc].cmake. This is how the CMake port works currently.
&gt; 
&gt; We will need to split Options[PortName].cmake into WebKitFeatures[PortName].cmake in order to make it generator friendly, since currently it does more things than just features overrides. 
&gt; 
&gt; What I propose is, for every existing feature we add a disabled entry at WebKitFeatures.cmake and a declaration at cmakeconfig.h.cmake. For every feature enabled for a given CMake port, add an enabled entry at WebKitFeatures[PortName].cmake.
&gt; 
&gt; I volunteer doing this work if it sounds sane for the other CMake guys.

IMHO you should remove the &quot;duplicated&quot; WEBKIT_OPTION_DEFINE vs. WEBKIT_OPTION_DEFAULT_PORT_VALUE then as a whole. If the default values is already in the Features.py i would suggest to generate a list with _all_ possibles features for every CMake port. This means removing the WEBKIT_OPTION_BEGIN() and WEBKIT_OPTION_DEFAULT_PORT_VALUE() macro and replacing it with a WEBKIT_OPTION_DEFINE() and a final WEBKIT_OPTION_PRINT_LIST() (which should go into the central CMakeList.txt again).

So WebKitFeatures.cmake only defines the macros for handling the features, but does not know about any existing feature. Then the WebKitFeatures[PortName].cmake lists all features generated by the python script. This should make it easier to understand the build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797182</commentid>
    <comment_count>18</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-25 14:43:59 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)

&gt; The current mental model I&apos;m shooting for is one where this script will generate all of these &quot;default&quot; lists, and most ports will use the defaults wholesale.  

Eric, what do you think about using a header file to be the single authoritative input to generate (or perhaps to be) the _default lists_. As you described above ports (or the person running build-webkit with options) can further change/overrule these defaults based on different configurations/environments.

To evaluate the header files from python or from the port specific build systems directly, we could use the C preprocessor that should be available in all platforms WebKit supports.

As an example to get the enabled defaults for a PLATFORM(XXX) just take the output of the following command:

gcc -E -dM -I. -DWTF_PLATFORM_XXX &quot;wtf/Platform.h&quot; | grep &quot;ENABLE_\w\+ 1&quot; | cut -d&apos; &apos; -f2 | sort

This approach enables:
 - to use cross-platform language to describe the defaults (and not port specific build system).
 - to remove defaults from the build system that are actually static and can not be changed by inspecting the environment WebKit is being built. Martin also expressed a desire for this direction in https://bugs.webkit.org/show_bug.cgi?id=85456#c12 (2. bullet).

See bug 105735 for other benefits and for the enabling patch.

Any feedback on this direction is welcomed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797203</commentid>
    <comment_count>19</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-25 17:58:56 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; 
 
&gt; As an example to get the enabled defaults for a PLATFORM(XXX) just take the output of the following command:
&gt; 
&gt; gcc -E -dM -I. -DWTF_PLATFORM_XXX &quot;wtf/Platform.h&quot; | grep &quot;ENABLE_\w\+ 1&quot; | cut -d&apos; &apos; -f2 | sort

Note that this technique is already used to populate feature defaults from Platform.h into the build stem for the MAC port.

See out WebCore/DerivedSources.make and check how the defaults for ENABLE_DASHBOARD_SUPPORT and for ENABLE_ORIENTATION_EVENTS are set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797250</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2012-12-26 00:35:16 -0800</bug_when>
    <thetext>&gt; As an example to get the enabled defaults for a PLATFORM(XXX) just take the output of the following command:
&gt; 
&gt; gcc -E -dM -I. -DWTF_PLATFORM_XXX &quot;wtf/Platform.h&quot; | grep &quot;ENABLE_\w\+ 1&quot; | cut -d&apos; &apos; -f2 | sort

This sort of approach has proven problematic in the past since the compiler invocation used to extract the value of the define must use the exact same arguments as compilation build phases that use the header file. That&apos;s challenging to do correctly with Xcode, particularly when factors such as building for multiple architectures at once or against SDKs is considered.

Moving the defintions out of .xcconfig files would also mean that they can no longer be used in conditional logic within .xcconfig files. We currently use that in at least one place that I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797460</commentid>
    <comment_count>21</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-26 23:00:12 -0800</bug_when>
    <thetext>(In reply to comment #20)

Perhaps it helps the discussion if I document the mental model I am considering. 

A feature definition can be set (enabled or disabled) by the following entities:

#1./ Developer/package maintainer explicitly setting a flag (e.g. as a build-webkit argument or SDK GUI input).

#2./ Build system (e.g. Xcode, gyp, qmake, cmake rules) setting a flag based on a build or target environment (e.g. cpu architecture, SDK/OS version, available libraries).

#3./ C/C++ source code defaults as it is evaluated by compiler (e.g. based on Platform.h, config.h).

I was hoping to set up the infrastructure so that for all ports the preference order is the same #1 being the highest preference and #3 being the lowest preference. To achieve this the build system should never overrule the request from the developer initiating the build and C/C++ code should always check if a macro is defined before setting a default value.

&gt; Moving the defintions out of .xcconfig files would also mean that they can no longer be used in conditional logic within .xcconfig files. We currently use that in at least one place that I see.

Thanks Mark for helping out. 

You certainly raise a valid point. I think for the particular situation you described (where the flag is dependent on the architecture and/or SDK version) for the Mac port the best solution might be to keep those rules in the .xconfig files as it is now (no change). I assume that for these complex cases &quot;build-webkit --help&quot; already reports false defaults and one would have to kick off a build to determine the value of the feature flag.

The pieces where we could make progress are:

 - Simple cases where the value of the feature flag only depends on the port or maybe even the same for all ports. As an example ENABLE_WORKERS seems to be always set to 1, but one needs to dig a fair amount today to gather this information.

 - In case we introduce a _new_ feature flags one could just introduce the flag to the C/C++ code that is cross-platform with a disabled default. Over time as ports enable the feature the flag might have to be introduced in the port specific build systems as well (or if the port never introduces a particular feature the flag would not have to be introduced in that particular build system).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139954</attachid>
            <date>2012-05-02 22:29:26 -0700</date>
            <delta_ts>2012-05-02 22:34:55 -0700</delta_ts>
            <desc>wip patch</desc>
            <filename>bug-85456-20120502222925.patch</filename>
            <type>text/plain</type>
            <size>16399</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvRmVhdHVyZXMu
cHkgYi9Tb3VyY2UvRmVhdHVyZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmZTM1MGM0OTY3OTIxNGUyODg1
MzBmMzM4OWU0NjgyMzdkZDA3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9GZWF0dXJlcy5w
eQpAQCAtMCwwICsxLDEzNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBUaGVzZSBjb25zdGFudHMgaGVscCBtYWtlIHRoZSBm
ZWF0dXJlIGxpc3QgZWFzaWVyIHRvIHJlYWQvZWRpdC4KK01hY0xpb24gPSAiQXBwbGVNYWNMaW9u
IiAgIyAxMC43LCBBcHBsZSBkaXNhYmxlcyBhIGNvdXBsZSBmZWF0dXJlcyBvbiBMaW9uLCB3aGlj
aCBhcmUgbm90IGRpc2FibGVkIG9uIGxhdGVyIHZlcnNpb25zIG9mIHRoZSBPUy4KK01hYyA9ICJB
cHBsZU1hYyIKK1dpbiA9ICJBcHBsZVdpbiIKK0lPUyA9ICJBcHBsZUlPUyIKK1dpbkNhaXJvID0g
IldpbkNhaXJvIgorCisKK2NsYXNzIEZlYXR1cmUob2JqZWN0KToKKyAgICBkZWZhdWx0X2VuYWJs
ZWQgPSBUcnVlCisKKyAgICBkZWYgX3RvX3NldChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHZhbHVl
ID0gdmFsdWUgb3IgW10KKyAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgbm90IGxpc3Q6CisgICAg
ICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KKyAgICAgICAgcmV0dXJuIHNldCh2YWx1ZSkKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBleGNsdWRlPU5vbmUsIGluY2x1ZGU9Tm9uZSk6Cisg
ICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5leGNsdWRlcyA9IHNlbGYuX3Rv
X3NldChleGNsdWRlKQorICAgICAgICBzZWxmLmluY2x1ZGVzID0gc2VsZi5fdG9fc2V0KGluY2x1
ZGUpCisKKyAgICBkZWYgZGVmaW5lX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiRU5BQkxF
XyIgKyBzZWxmLm5hbWUKKworICAgIGRlZiBpc19lbmFibGVkKHNlbGYsIHBvcnRfbmFtZSk6Cisg
ICAgICAgIGlmIHBvcnRfbmFtZSBpbiBzZWxmLmV4Y2x1ZGVzOgorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIGlmIHBvcnRfbmFtZSBpbiBzZWxmLmluY2x1ZGVzOgorICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbmFibGVkCisKKwor
IyBEaXNhYmxlZCBmZWF0dXJlcyB1c2UgYSB3aGl0ZS1saXN0IGFwcHJvYWNoLCBpbnN0ZWFkIG9m
IGEgYmxhY2tsaXN0LgorY2xhc3MgRGlzYWJsZWRGZWF0dXJlKEZlYXR1cmUpOgorICAgIGRlZmF1
bHRfZW5hYmxlZCA9IEZhbHNlCisKKworZmVhdHVyZXMgPSBbCisgICAgRGlzYWJsZWRGZWF0dXJl
KCIzRF9DQU5WQVMiKSwKKyAgICBGZWF0dXJlKCIzRF9SRU5ERVJJTkciLCBleGNsdWRlPVdpbkNh
aXJvKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIkFDQ0VMRVJBVEVEXzJEX0NBTlZBUyIpLAorICAg
IERpc2FibGVkRmVhdHVyZSgiQU5JTUFUSU9OX0FQSSIpLAorICAgIEZlYXR1cmUoIkJMT0IiLCBl
eGNsdWRlPVtXaW4sIFdpbkNhaXJvXSksCisgICAgRmVhdHVyZSgiQ0hBTk5FTF9NRVNTQUdJTkci
KSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIkNTU19FWENMVVNJT05TIiksCisgICAgRmVhdHVyZSgi
Q1NTX0ZJTFRFUlMiLCBleGNsdWRlPVdpbkNhaXJvKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIkNT
U19TSEFERVJTIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJDU1NfUkVHSU9OUyIpLAorICAgIEZl
YXR1cmUoIkNTU19HUklEX0xBWU9VVCIsIGV4Y2x1ZGU9W1dpbiwgV2luQ2Fpcm9dKSwKKyAgICBE
aXNhYmxlZEZlYXR1cmUoIkRBU0hCT0FSRF9TVVBQT1JUIiwgaW5jbHVkZT1NYWMpLAorICAgIERp
c2FibGVkRmVhdHVyZSgiREFUQUxJU1QiLCBpbmNsdWRlPVdpbkNhaXJvKSwKKyAgICBEaXNhYmxl
ZEZlYXR1cmUoIkRBVEFHUklEIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJEQVRBX1RSQU5TRkVS
X0lURU1TIiksCisgICAgRmVhdHVyZSgiREVUQUlMUyIpLAorICAgIERpc2FibGVkRmVhdHVyZSgi
REVWSUNFX09SSUVOVEFUSU9OIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJESVJFQ1RPUllfVVBM
T0FEIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJGSUxFX1NZU1RFTSIpLAorICAgIEZlYXR1cmUo
IkZJTFRFUlMiLCBleGNsdWRlPUlPUyksCisgICAgRmVhdHVyZSgiRlVMTFNDUkVFTl9BUEkiLCBl
eGNsdWRlPVdpbkNhaXJvKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIkdBTUVQQUQiKSwKKyAgICBG
ZWF0dXJlKCJHRU9MT0NBVElPTiIpLAorICAgIEZlYXR1cmUoIkhJR0hfRFBJX0NBTlZBUyIsIGV4
Y2x1ZGU9V2luQ2Fpcm8pLAorICAgIEZlYXR1cmUoIklDT05EQVRBQkFTRSIsIGV4Y2x1ZGU9SU9T
KSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIklOREVYRURfREFUQUJBU0UiKSwKKyAgICBEaXNhYmxl
ZEZlYXR1cmUoIklOUFVUX1NQRUVDSCIpLAorICAgIERpc2FibGVkRmVhdHVyZSgiSU5QVVRfVFlQ
RV9DT0xPUiIpLAorICAgIERpc2FibGVkRmVhdHVyZSgiSU5QVVRfVFlQRV9EQVRFIiwgaW5jbHVk
ZT1JT1MpLAorICAgIERpc2FibGVkRmVhdHVyZSgiSU5QVVRfVFlQRV9EQVRFVElNRSIsIGluY2x1
ZGU9SU9TKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIklOUFVUX1RZUEVfREFURVRJTUVMT0NBTCIs
IGluY2x1ZGU9SU9TKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIklOUFVUX1RZUEVfTU9OVEgiLCBp
bmNsdWRlPUlPUyksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJJTlBVVF9UWVBFX1RJTUUiLCBpbmNs
dWRlPUlPUyksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJJTlBVVF9UWVBFX1dFRUsiLCBpbmNsdWRl
PUlPUyksCisgICAgRmVhdHVyZSgiSkFWQVNDUklQVF9ERUJVR0dFUiIpLAorICAgIEZlYXR1cmUo
IkxFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTIiwgZXhjbHVkZT1XaW5DYWlybyksCisgICAgRGlz
YWJsZWRGZWF0dXJlKCJMRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGluY2x1ZGU9TWFjLCBleGNsdWRl
PU1hY0xpb24pLAorICAgIERpc2FibGVkRmVhdHVyZSgiTElOS19QUkVGRVRDSCIpLAorICAgIERp
c2FibGVkRmVhdHVyZSgiTElOS19QUkVSRU5ERVIiKSwKKyAgICBGZWF0dXJlKCJNQVRITUwiKSwK
KyAgICBEaXNhYmxlZEZlYXR1cmUoIk1FRElBX1NPVVJDRSIsIGluY2x1ZGU9V2luKSwKKyAgICBE
aXNhYmxlZEZlYXR1cmUoIk1FRElBX1NUQVRJU1RJQ1MiLCBpbmNsdWRlPVdpbiksCisgICAgRmVh
dHVyZSgiTUVURVJfVEFHIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJNSFRNTCIpLAorICAgIERp
c2FibGVkRmVhdHVyZSgiTUlDUk9EQVRBIiksCisgICAgRmVhdHVyZSgiTVVUQVRJT05fT0JTRVJW
RVJTIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJOT1RJRklDQVRJT05TIiwgaW5jbHVkZT1NYWMs
IGV4Y2x1ZGU9TWFjTGlvbiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJQQUdFX1ZJU0lCSUxJVFlf
QVBJIiksCisgICAgRmVhdHVyZSgiUFJPR1JFU1NfVEFHIiwgZXhjbHVkZT1bV2luLCBXaW5DYWly
b10pLAorICAgIERpc2FibGVkRmVhdHVyZSgiUVVPVEEiKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUo
IlJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIiKSwKKyAgICBGZWF0dXJlKCJSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSIsIGV4Y2x1ZGU9V2luQ2Fpcm8pLAorICAgIERpc2FibGVkRmVhdHVyZSgiU0NS
SVBURURfU1BFRUNIIiksCisgICAgRGlzYWJsZWRGZWF0dXJlKCJTSEFET1dfRE9NIiksCisgICAg
RmVhdHVyZSgiU0hBUkVEX1dPUktFUlMiKSwKKyAgICBGZWF0dXJlKCJTUUxfREFUQUJBU0UiKSwK
KyAgICBEaXNhYmxlZEZlYXR1cmUoIlNUWUxFX1NDT1BFRCIpLAorICAgIEZlYXR1cmUoIlNWRyIp
LAorICAgIERpc2FibGVkRmVhdHVyZSgiU1ZHX0RPTV9PQkpDX0JJTkRJTkdTIiwgaW5jbHVkZT1N
YWMpLAorICAgIEZlYXR1cmUoIlNWR19GT05UUyIpLAorICAgIEZlYXR1cmUoIlRFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZIiwgZXhjbHVkZT1bV2luLCBXaW5DYWlyb10pLAorICAgIERpc2FibGVkRmVh
dHVyZSgiVE9VQ0hfSUNPTl9MT0FESU5HIiksCisgICAgRmVhdHVyZSgiVklERU8iLCBleGNsdWRl
PVdpbkNhaXJvKSwKKyAgICBEaXNhYmxlZEZlYXR1cmUoIlZJREVPX1RSQUNLIiwgaW5jbHVkZT1N
YWMpLAorICAgIEZlYXR1cmUoIldFQkdMIiwgZXhjbHVkZT1bV2luLCBXaW5DYWlyb10pLAorICAg
IEZlYXR1cmUoIldFQl9BVURJTyIsIGV4Y2x1ZGU9W1dpbiwgV2luQ2Fpcm9dKSwKKyAgICBGZWF0
dXJlKCJXRUJfU09DS0VUUyIpLAorICAgIERpc2FibGVkRmVhdHVyZSgiV0VCX1RJTUlORyIpLAor
ICAgIEZlYXR1cmUoIldPUktFUlMiKSwKKyAgICBGZWF0dXJlKCJYU0xUIiksCitdCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTI1MWY2NzIyNWRm
MTY5ZDA1ZGY1MWMwMWE4ZDc3MmRlZDEzYWU1Mi4uZmFmMWFmMWE0MWFiMTA4YjFhYjhjYTc5ODlm
NDc4MTYzMzRmNTc5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTAyICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXQgc2hvdWxkIGhhdmUgYW4gZWFzeSB3YXkgdG8g
YWRkL3JlbW92ZSBGRUFUVVJFX0RFRklORVMgZm9yIGFsbCBwb3J0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU0NTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgaWYgeW91IHdhbnQgdG8g
YWRkIGFuIEVOQUJMRV8gbWFjcm8gdG8gd2Via2l0LCB5b3UgbmVlZCB0byBlZGl0IGF0IGxlYXN0
CisgICAgICAgIDEwIGZpbGVzLCBvciBtb3JlIGlmIHlvdSB3aXNoIHRoYXQgRU5BQkxFXyBtYWNy
byB0byBiZSB1c2VhYmxlIGZyb20gd2l0aGluCisgICAgICAgIG91ciB1c2VyIGFnZW50IHN0eWxl
c2hlZXRzLCBvciBpZGwgZmlsZXMuICBUaGlzIHNjcmlwdCB3aWxsIGF1dG9nZW5lcmF0ZSA2IG9m
IHRob3NlIGZpbGVzCisgICAgICAgICg0IGZvciBtYWMsIDEgZm9yIEFwcGxlV2luIGFuZCAxIGZv
ciBXaW5DYWlybyksIGFuZCBjYW4gZWFzaWx5IGJlIGV4dGVuZGVkIHRvIGF1dG9nZW5lcmF0ZQor
ICAgICAgICB0aGUgcmVzdCBvZiB0aGVtLgorICAgICAgICBJJ20gbm90IHN1cmUgdGhpcyBpcyB0
aGUgcGVyZmVjdCBzb2x1dGlvbiwgYnV0IGl0IHN1cmUgc2VlbXMgYmV0dGVyIHRoYW4gd2hhdCB3
ZSBoYXZlIHRvZGF5IQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9n
ZW5lcmF0ZWZlYXR1cmVmaWxlcy5weTogQWRkZWQuCisgICAgICAgIChGZWF0dXJlRmlsZUdlbmVy
YXRvcik6CisgICAgICAgIChfX2luaXRfXyk6CisgICAgICAgIChfYWxsX2RlZmluZXMpOgorICAg
ICAgICAoWENDb25maWdHZW5lcmF0b3IpOgorICAgICAgICAoWENDb25maWdHZW5lcmF0b3IuX2Nv
bnRlbnRfZm9yX2ZlYXR1cmUpOgorICAgICAgICAoWENDb25maWdHZW5lcmF0b3IuZ2VuZXJhdGUp
OgorICAgICAgICAoVlNQcm9wc0dlbmVyYXRvcik6CisgICAgICAgIChWU1Byb3BzR2VuZXJhdG9y
Ll9nZW5lcmF0ZV9oZWFkZXIpOgorICAgICAgICAoX2NvbnRlbnRfZm9yX2ZlYXR1cmUpOgorICAg
ICAgICAoZ2VuZXJhdGVfZm9yX3BvcnQpOgorICAgICAgICAoR2VuZXJhdGVGZWF0dXJlRmlsZXMp
OgorICAgICAgICAoR2VuZXJhdGVGZWF0dXJlRmlsZXMuZXhlY3V0ZSk6CisKIDIwMTItMDUtMDIg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTU5MTguCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKaW5kZXggZWYwNWI1YWM0YmVkZGFmZWRiNWJm
YzI0NWY2MzkzMTRmODgxNDA2Ny4uZDU4MTIxOGUwMWM3YWVhODZhNjBjZGM4MmQwMWJjMTg5NmIy
MzU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19f
aW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2lu
aXRfXy5weQpAQCAtMTAsNiArMTAsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZWFy
bHl3YXJuaW5nc3lzdGVtIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuZXhw
ZWN0YXRpb25zIGltcG9ydCBPcHRpbWl6ZUV4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLmZpbmR1c2VycyBpbXBvcnQgRmluZFVzZXJzCiBmcm9tIHdlYmtpdHB5LnRvb2wu
Y29tbWFuZHMuZ2FyZGVub21hdGljIGltcG9ydCBHYXJkZW5PTWF0aWMKK2Zyb20gd2Via2l0cHku
dG9vbC5jb21tYW5kcy5nZW5lcmF0ZWZlYXR1cmVmaWxlcyBpbXBvcnQgR2VuZXJhdGVGZWF0dXJl
RmlsZXMKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5vcGVuYnVncyBpbXBvcnQgT3BlbkJ1
Z3MKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5wcmV0dHlkaWZmIGltcG9ydCBQcmV0dHlE
aWZmCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVlcmllcyBpbXBvcnQgKgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dlbmVyYXRlZmVhdHVy
ZWZpbGVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dlbmVyYXRl
ZmVhdHVyZWZpbGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZDVkNTQwYTQzMzZiOTdmNWEzYzA2YjkwNWE5
MTNmNTI5Yjk4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZ2VuZXJhdGVmZWF0dXJlZmlsZXMucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitm
cm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQKKworaW1wb3J0IGltcAorCisKK2NsYXNzIEZlYXR1cmVGaWxlR2VuZXJhdG9y
KG9iamVjdCk6CisgICAgX2dlbmVyYXRlZF93YXJuaW5nID0gIiIiVGhpcyBpcyBhIGdlbmVyYXRl
ZCBmaWxlLiBEbyBub3QgZWRpdC4KK1RoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSBTb3VyY2Uv
RmVhdHVyZXMucHkgdXNpbmcKK3dlYmtpdC1wYXRjaCBnZW5lcmF0ZS1mZWF0dXJlLWZpbGVzIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmVhdHVyZXNfbW9kdWxlKToKKyAgICAgICAgc2Vs
Zi5mZWF0dXJlc19tb2R1bGUgPSBmZWF0dXJlc19tb2R1bGUKKyAgICAgICAgc2VsZi5mZWF0dXJl
cyA9IHNvcnRlZChmZWF0dXJlc19tb2R1bGUuZmVhdHVyZXMsIGtleT1sYW1iZGEgZmVhdHVyZTog
ZmVhdHVyZS5uYW1lKQorCisgICAgZGVmIF9hbGxfZGVmaW5lcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNvcnRlZChbZmVhdHVyZS5kZWZpbmVfbmFtZSgpIGZvciBmZWF0dXJlIGluIHNlbGYuZmVh
dHVyZXNdKQorCisKK2NsYXNzIFhDQ29uZmlnR2VuZXJhdG9yKEZlYXR1cmVGaWxlR2VuZXJhdG9y
KToKKyAgICBfaGVhZGVyID0gIlxuIi5qb2luKFsiLy8gJXMiICUgbGluZSBmb3IgbGluZSBpbiBG
ZWF0dXJlRmlsZUdlbmVyYXRvci5fZ2VuZXJhdGVkX3dhcm5pbmcuc3BsaXQoIlxuIildKSArICJc
biIKKworICAgIGRlZiBfY29udGVudF9mb3JfZmVhdHVyZShzZWxmLCBmZWF0dXJlKToKKyAgICAg
ICAgZGVmaW5lX25hbWUgPSBmZWF0dXJlLmRlZmluZV9uYW1lKCkKKyAgICAgICAgb25fbWFjID0g
ZmVhdHVyZS5pc19lbmFibGVkKHNlbGYuZmVhdHVyZXNfbW9kdWxlLk1hYykKKyAgICAgICAgb25f
aW9zID0gZmVhdHVyZS5pc19lbmFibGVkKHNlbGYuZmVhdHVyZXNfbW9kdWxlLklPUykKKworICAg
ICAgICBpZiBvbl9tYWMgPT0gb25faW9zIGFuZCBzZWxmLmZlYXR1cmVzX21vZHVsZS5NYWNMaW9u
IG5vdCBpbiBmZWF0dXJlLmV4Y2x1ZGVzOgorICAgICAgICAgICAgcmV0dXJuICIlcyA9ICVzO1xu
IiAlIChkZWZpbmVfbmFtZSwgZGVmaW5lX25hbWUgaWYgb25fbWFjIGVsc2UgIiIpCisKKyAgICAg
ICAgY29udGVudCA9ICIlcyA9ICQoJXNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTtcbiIgJSAoZGVm
aW5lX25hbWUsIGRlZmluZV9uYW1lKQorICAgICAgICBpZiBvbl9tYWM6CisgICAgICAgICAgICAj
IE5PVEU6IFRoaXMgY29kZSBpcyBub3QgZ2VuZXJhbC1wdXJwb3NlIGZvciB2ZXJzaW9uIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgICAgICMgdGhpcyBpcyBqdXN0IGVub3VnaCB0byBtYWtlIEVOQUJM
RV9OT1RJRklDQVRJT04gYmUgZGlzYWJsZWQgb24gTGlvbi4KKyAgICAgICAgICAgIGlmIHNlbGYu
ZmVhdHVyZXNfbW9kdWxlLk1hY0xpb24gaW4gZmVhdHVyZS5leGNsdWRlczoKKyAgICAgICAgICAg
ICAgICBjb250ZW50ICs9ICIlc19tYWNvc3ggPSAkKCVzX21hY29zeF8kKFRBUkdFVF9NQUNfT1Nf
WF9WRVJTSU9OX01BSk9SKSk7XG4iICUgKGRlZmluZV9uYW1lLCBkZWZpbmVfbmFtZSkKKyAgICAg
ICAgICAgICAgICBjb250ZW50ICs9ICIlc19tYWNvc3hfMTA3MCA9IDtcbiIgJSAoZGVmaW5lX25h
bWUpCisgICAgICAgICAgICAgICAgY29udGVudCArPSAiJXNfbWFjb3N4XzEwODAgPSAlcztcbiIg
JSAoZGVmaW5lX25hbWUsIGRlZmluZV9uYW1lKQorICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0g
IiVzX21hY29zeF8xMDkwID0gJXM7XG4iICUgKGRlZmluZV9uYW1lLCBkZWZpbmVfbmFtZSkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGVudCArPSAiJXNfbWFjb3N4ID0g
JXM7XG4iICUgKGRlZmluZV9uYW1lLCBkZWZpbmVfbmFtZSkKKyAgICAgICAgaWYgb25faW9zOgor
ICAgICAgICAgICAgY29udGVudCArPSAiJXNfaXBob25lb3MgPSAlcztcbiIgJSAoZGVmaW5lX25h
bWUsIGRlZmluZV9uYW1lKQorICAgICAgICAgICAgY29udGVudCArPSAiJXNfaXBob25lc2ltdWxh
dG9yID0gJXM7XG4iICUgKGRlZmluZV9uYW1lLCBkZWZpbmVfbmFtZSkKKyAgICAgICAgcmV0dXJu
IGNvbnRlbnQKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmKToKKyAgICAgICAgIyBUaGUgc2FtZSBm
aWxlIGlzIHVzZWQgYnkgTWFjIGFuZCBJT1MsIHNvIHRha2luZyBhIHBvcnRfbmFtZSB3b3VsZCBi
ZSBtZWFuaW5nbGVzcy4KKyAgICAgICAgY29udGVudHMgPSBzZWxmLl9oZWFkZXIKKyAgICAgICAg
Zm9yIGZlYXR1cmUgaW4gc2VsZi5mZWF0dXJlczoKKyAgICAgICAgICAgIGNvbnRlbnRzICs9IHNl
bGYuX2NvbnRlbnRfZm9yX2ZlYXR1cmUoZmVhdHVyZSkKKyAgICAgICAgY29udGVudHMgKz0gIlxu
RkVBVFVSRV9ERUZJTkVTID0gJXM7XG4iICUgIiAiLmpvaW4oWyIkKCVzKSIgJSBuYW1lIGZvciBu
YW1lIGluIHNlbGYuX2FsbF9kZWZpbmVzKCldKQorICAgICAgICByZXR1cm4gY29udGVudHMKKwor
CitjbGFzcyBWU1Byb3BzR2VuZXJhdG9yKEZlYXR1cmVGaWxlR2VuZXJhdG9yKToKKworICAgIGRl
ZiBfZ2VuZXJhdGVfaGVhZGVyKHNlbGYsIGZpbGVfbmFtZSk6CisgICAgICAgIGhlYWRlciA9ICc8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PlxuJworICAgICAgICBoZWFkZXIg
Kz0gIlxuIi5qb2luKFsiPCEtLSAlcyAtLT4iICUgbGluZSBmb3IgbGluZSBpbiBGZWF0dXJlRmls
ZUdlbmVyYXRvci5fZ2VuZXJhdGVkX3dhcm5pbmcuc3BsaXQoIlxuIildKSArICJcbiIKKyAgICAg
ICAgaGVhZGVyICs9ICIiIjxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CitcdFByb2plY3RUeXBl
PSJWaXN1YWwgQysrIgorXHRWZXJzaW9uPSI4LjAwIgorXHROYW1lPSIlcyIKK1x0PgorIiIiICUg
ZmlsZV9uYW1lCisgICAgICAgIHJldHVybiBoZWFkZXIKKworICAgIF9mb290ZXIgPSAiPC9WaXN1
YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PlxuIgorCisgICAgZGVmIF9jb250ZW50X2Zvcl9mZWF0dXJl
KHNlbGYsIGZlYXR1cmUsIHBvcnRfbmFtZSk6CisgICAgICAgIGRlZmluZV9uYW1lID0gZmVhdHVy
ZS5kZWZpbmVfbmFtZSgpCisgICAgICAgIGVuYWJsZWRfbmFtZSA9IGRlZmluZV9uYW1lIGlmIGZl
YXR1cmUuaXNfZW5hYmxlZChwb3J0X25hbWUpIGVsc2UgIiIKKyAgICAgICAgcmV0dXJuICIiIiAg
PFVzZXJNYWNybworXHRcdE5hbWU9IiVzIgorXHRcdFZhbHVlPSIlcyIKK1x0XHRQZXJmb3JtRW52
aXJvbm1lbnRTZXQ9InRydWUiCitcdC8+XG4iIiIgJSAoZGVmaW5lX25hbWUsIGVuYWJsZWRfbmFt
ZSkKKworICAgIGRlZiBnZW5lcmF0ZV9mb3JfcG9ydChzZWxmLCBwb3J0X25hbWUsIGZpbGVfbmFt
ZSk6CisgICAgICAgIGNvbnRlbnRzID0gc2VsZi5fZ2VuZXJhdGVfaGVhZGVyKGZpbGVfbmFtZSkK
KyAgICAgICAgYWxsX2RlZmluZXNfc3RyaW5nID0gIjsiLmpvaW4oWyIkKCVzKSIgJSBuYW1lIGZv
ciBuYW1lIGluIHNlbGYuX2FsbF9kZWZpbmVzKCldKQorICAgICAgICBjb250ZW50cyArPSAiIiIg
IDxUb29sCitcdFx0TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKK1x0XHRQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz0iJXMiCitcdC8+XG4iIiIgJSBhbGxfZGVmaW5lc19zdHJpbmcKKworICAgICAgICBm
b3IgZmVhdHVyZSBpbiBzZWxmLmZlYXR1cmVzOgorICAgICAgICAgICAgY29udGVudHMgKz0gc2Vs
Zi5fY29udGVudF9mb3JfZmVhdHVyZShmZWF0dXJlLCBwb3J0X25hbWUpCisgICAgICAgIHJldHVy
biBjb250ZW50cyArIHNlbGYuX2Zvb3RlcgorCisKK2NsYXNzIEdlbmVyYXRlRmVhdHVyZUZpbGVz
KEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBuYW1lID0gImdlbmVyYXRlLWZlYXR1
cmUtZmlsZXMiCisgICAgaGVscF90ZXh0ID0gIkNvbW1hbmQgZm9yIGdlbmVyYXRpbmcgcGVyLXBv
cnQgZmVhdHVyZSBmaWxlcyBmcm9tIFNvdXJjZS9GZWF0dXJlcyIKKworICAgIGRlZiBleGVjdXRl
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBmcyA9IHRvb2wuZmlsZXN5c3Rl
bQorICAgICAgICBjaGVja291dF9yb290ID0gdG9vbC5zY20oKS5jaGVja291dF9yb290CisgICAg
ICAgIGZlYXR1cmVzX2xpc3RfcGF0aCA9IGZzLmpvaW4oY2hlY2tvdXRfcm9vdCwgIlNvdXJjZSIs
ICJGZWF0dXJlcy5weSIpCisgICAgICAgIGZlYXR1cmVzX21vZHVsZSA9IGltcC5sb2FkX3NvdXJj
ZSgnZmVhdHVyZXMnLCBmZWF0dXJlc19saXN0X3BhdGgpCisKKyAgICAgICAgeGNjb25maWdfcHJv
amVjdHMgPSBbCisgICAgICAgICAgICAnV2ViQ29yZScsCisgICAgICAgICAgICAnSmF2YVNjcmlw
dENvcmUnLAorICAgICAgICAgICAgJ1dlYktpdDInLAorICAgICAgICAgICAgJ1dlYktpdC9tYWMn
LAorICAgICAgICBdCisgICAgICAgIHhjY29uZmlnX2ZlYXR1cmVzID0gWENDb25maWdHZW5lcmF0
b3IoZmVhdHVyZXNfbW9kdWxlKS5nZW5lcmF0ZSgpCisgICAgICAgIGZvciBwcm9qZWN0X25hbWUg
aW4geGNjb25maWdfcHJvamVjdHM6CisgICAgICAgICAgICBmZWF0dXJlX2ZpbGVfcGF0aCA9IGZz
LmpvaW4oY2hlY2tvdXRfcm9vdCwgIlNvdXJjZSIsIHByb2plY3RfbmFtZSwgIkNvbmZpZ3VyYXRp
b25zIiwgIkZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIikKKyAgICAgICAgICAgIGZzLndyaXRlX3Rl
eHRfZmlsZShmZWF0dXJlX2ZpbGVfcGF0aCwgeGNjb25maWdfZmVhdHVyZXMpCisKKyAgICAgICAg
dnNwcm9wc19nZW5lcmF0b3IgPSBWU1Byb3BzR2VuZXJhdG9yKGZlYXR1cmVzX21vZHVsZSkKKyAg
ICAgICAgdnNwcm9wc19kaXIgPSBmcy5qb2luKHRvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCwgIldl
YktpdExpYnJhcmllcyIsICJ3aW4iLCAidG9vbHMiLCAidnNwcm9wcyIpCisKKyAgICAgICAgdnNw
cm9wc19mZWF0dXJlcyA9IHZzcHJvcHNfZ2VuZXJhdG9yLmdlbmVyYXRlX2Zvcl9wb3J0KGZlYXR1
cmVzX21vZHVsZS5XaW4sICJGZWF0dXJlRGVmaW5lcyIpCisgICAgICAgIGZzLndyaXRlX3RleHRf
ZmlsZShmcy5qb2luKHZzcHJvcHNfZGlyLCAiRmVhdHVyZURlZmluZXMudnNwcm9wcyIpLCB2c3By
b3BzX2ZlYXR1cmVzKQorCisgICAgICAgIHZzcHJvcHNfZmVhdHVyZXMgPSB2c3Byb3BzX2dlbmVy
YXRvci5nZW5lcmF0ZV9mb3JfcG9ydChmZWF0dXJlc19tb2R1bGUuV2luQ2Fpcm8sICJGZWF0dXJl
RGVmaW5lc0NhaXJvIikKKyAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZzLmpvaW4odnNwcm9w
c19kaXIsICJGZWF0dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHMiKSwgdnNwcm9wc19mZWF0dXJlcykK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1NTQ1ZmFiNTdhY2MwNDYy
NDJkNWY2MDQ4YjY4OTRiMDhiZDFjOGVlLi5mMWMxM2Y1NmY1YTUyNzI3OWVjNGQwZWNmNGFjMjMw
NTg5NDcxMmZkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTItMDUtMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFdlYktpdCBzaG91bGQgaGF2ZSBhbiBlYXN5IHdheSB0byBhZGQvcmVtb3ZlIEZFQVRV
UkVfREVGSU5FUyBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTQ1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEN1cnJlbnRseSBpZiB5b3Ugd2FudCB0byBhZGQgYW4gRU5BQkxFXyBt
YWNybyB0byB3ZWJraXQsIHlvdSBuZWVkIHRvIGVkaXQgYXQgbGVhc3QKKyAgICAgICAgMTAgZmls
ZXMsIG9yIG1vcmUgaWYgeW91IHdpc2ggdGhhdCBFTkFCTEVfIG1hY3JvIHRvIGJlIHVzZWFibGUg
ZnJvbSB3aXRoaW4KKyAgICAgICAgb3VyIHVzZXIgYWdlbnQgc3R5bGVzaGVldHMsIG9yIGlkbCBm
aWxlcy4gIFRoaXMgc2NyaXB0IHdpbGwgYXV0b2dlbmVyYXRlIDYgb2YgdGhvc2UgZmlsZXMKKyAg
ICAgICAgKDQgZm9yIG1hYywgMSBmb3IgQXBwbGVXaW4gYW5kIDEgZm9yIFdpbkNhaXJvKSwgYW5k
IGNhbiBlYXNpbHkgYmUgZXh0ZW5kZWQgdG8gYXV0b2dlbmVyYXRlCisgICAgICAgIHRoZSByZXN0
IG9mIHRoZW0uCisgICAgICAgIEknbSBub3Qgc3VyZSB0aGlzIGlzIHRoZSBwZXJmZWN0IHNvbHV0
aW9uLCBidXQgaXQgc3VyZSBzZWVtcyBiZXR0ZXIgdGhhbiB3aGF0IHdlIGhhdmUgdG9kYXkhCisK
KyAgICAgICAgKiBTb3VyY2UvRmVhdHVyZXMucHk6IEFkZGVkLgorICAgICAgICAoRmVhdHVyZSk6
CisgICAgICAgIChGZWF0dXJlLl90b19zZXQpOgorICAgICAgICAoRmVhdHVyZS5fX2luaXRfXyk6
CisgICAgICAgIChGZWF0dXJlLmRlZmluZV9uYW1lKToKKyAgICAgICAgKEZlYXR1cmUuaXNfZW5h
YmxlZCk6CisgICAgICAgIChEaXNhYmxlZEZlYXR1cmUpOgorCiAyMDEyLTA1LTAyICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgcHJvc3BlY3RpdmUgUXRNb2JpbGl0eSBidWlsZCBmaXguCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139957</attachid>
            <date>2012-05-02 22:52:59 -0700</date>
            <delta_ts>2012-05-02 22:52:59 -0700</delta_ts>
            <desc>diff when running the script against TOT</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>39271</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAyZGMxNDVmLi5lYmI5YWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC0xLDQ1ICsxLDIwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLS8vIGFyZSBtZXQ6Ci0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0v
LyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0vLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0vLyBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0vLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLS8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLS8vIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLQotLy8gVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtdXN0IGJl
IGtlcHQgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGluIEphdmFTY3JpcHRD
b3JlLAotLy8gV2ViQ29yZSwgV2ViS2l0IGFuZCBXZWJLaXQyLiAgQWxzbyB0aGUgZGVmYXVsdCB2
YWx1ZXMgb2YgdGhlIEVOQUJMRV9GRUFUVVJFX05BTUUgbWFjcm9zIGluCi0vLyBidWlsZC13ZWJr
aXQgc2hvdWxkIG1hdGNoIHRoZSB2YWx1ZXMgYmVsb3csIGJ1dCB0aGV5IGRvIG5vdCBuZWVkIHRv
IGJlIGluIHRoZSBzYW1lIG9yZGVyLgotCi0vLyBLZWVwIHRoaXMgbGlzdCBvZiBmZWF0dXJlcyAo
bm90IGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUpIGluIHN5bmMgd2l0aCBGZWF0dXJlRGVmaW5lcy52
c3Byb3BzCi0vLyBhbmQgRmVhdHVyZURlZmluZXNDYWlyby52c3Byb3BzIGluIFdlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy4KLQotLy8gU2V0IGFueSBFTkFCTEVfRkVBVFVSRV9OQU1F
IG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVyZS4KLQorLy8g
VGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlLiBEbyBub3QgZWRpdC4KKy8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgZnJvbSBTb3VyY2UvRmVhdHVyZXMucHkgdXNpbmcKKy8vIHdlYmtpdC1wYXRjaCBn
ZW5lcmF0ZS1mZWF0dXJlLWZpbGVzCitFTkFCTEVfM0RfQ0FOVkFTID0gOwogRU5BQkxFXzNEX1JF
TkRFUklORyA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTID0gOwogRU5BQkxFX0FOSU1BVElPTl9BUEkgPSA7CiBFTkFCTEVfQkxPQiA9IEVOQUJMRV9C
TE9COwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
OworRU5BQkxFX0NTU19FWENMVVNJT05TID0gOwogRU5BQkxFX0NTU19GSUxURVJTID0gRU5BQkxF
X0NTU19GSUxURVJTOwogRU5BQkxFX0NTU19HUklEX0xBWU9VVCA9IEVOQUJMRV9DU1NfR1JJRF9M
QVlPVVQ7CitFTkFCTEVfQ1NTX1JFR0lPTlMgPSA7CitFTkFCTEVfQ1NTX1NIQURFUlMgPSA7CiBF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQgPSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVF8kKFJF
QUxfUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUX21hY29zeCA9IEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKK0VOQUJMRV9EQVRBR1JJRCA9IDsKIEVOQUJMRV9EQVRB
TElTVCA9IDsKIEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TID0gOwogRU5BQkxFX0RFVEFJTFMg
PSBFTkFCTEVfREVUQUlMUzsKQEAgLTc2LDYgKzUxLDcgQEAgRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SyA9ICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFS18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwogRU5B
QkxFX0lOUFVUX1RZUEVfV0VFS19pcGhvbmVvcyA9IEVOQUJMRV9JTlBVVF9UWVBFX1dFRUs7CiBF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZXNpbXVsYXRvciA9IEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUs7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSOworRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTID0gRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTOwogRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TID0gJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OU19tYWNvc3ggPSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OU19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TX21hY29zeF8xMDcwID0gOwpAQCAtMTIxLDQgKzk3LDQgQEAgRU5B
QkxFX1dFQl9USU1JTkcgPSA7CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5B
QkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0Rf
UkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1B
VElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUKSAk
KEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJ
TEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NB
TlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09C
U0VSVkVSUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVH
SVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
ICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVf
U0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NP
UEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVf
VE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsK
K0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9B
UEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
U1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19HUklEX0xB
WU9VVCkgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNU
KSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxF
X0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJ
X0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFC
TEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX1RBRykg
JChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JT
RVJWRVJTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlf
QVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUdJ
U1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkg
JChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09Q
RUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykg
JChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwppbmRleCA5ZDc2Y2EyLi5lYmI5YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMSw0NSArMSwy
MCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8g
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0v
LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8g
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LS8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0vLyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0vLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0KLS8vIFRoZSBj
b250ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKLS8vIFdlYkNvcmUsIFdlYktpdCBhbmQg
V2ViS2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVfRkVBVFVSRV9O
QU1FIG1hY3JvcyBpbgotLy8gYnVpbGQtd2Via2l0IHNob3VsZCBtYXRjaCB0aGUgdmFsdWVzIGJl
bG93LCBidXQgdGhleSBkbyBub3QgbmVlZCB0byBiZSBpbiB0aGUgc2FtZSBvcmRlci4KLQotLy8g
S2VlcCB0aGlzIGxpc3Qgb2YgZmVhdHVyZXMgKG5vdCBlbmFibGVkL2Rpc2FibGVkIHN0YXRlKSBp
biBzeW5jIHdpdGggRmVhdHVyZURlZmluZXMudnNwcm9wcwotLy8gYW5kIEZlYXR1cmVEZWZpbmVz
Q2Fpcm8udnNwcm9wcyBpbiBXZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMuCi0KLS8v
IFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8g
ZGlzYWJsZSB0aGF0IGZlYXR1cmUuCi0KKy8vIFRoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZS4gRG8g
bm90IGVkaXQuCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20gU291cmNlL0ZlYXR1cmVz
LnB5IHVzaW5nCisvLyB3ZWJraXQtcGF0Y2ggZ2VuZXJhdGUtZmVhdHVyZS1maWxlcworRU5BQkxF
XzNEX0NBTlZBUyA9IDsKIEVOQUJMRV8zRF9SRU5ERVJJTkcgPSBFTkFCTEVfM0RfUkVOREVSSU5H
OwogRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyA9IDsKIEVOQUJMRV9BTklNQVRJT05fQVBJ
ID0gOwogRU5BQkxFX0JMT0IgPSBFTkFCTEVfQkxPQjsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKK0VOQUJMRV9DU1NfRVhDTFVTSU9OUyA9IDsK
IEVOQUJMRV9DU1NfRklMVEVSUyA9IEVOQUJMRV9DU1NfRklMVEVSUzsKIEVOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQgPSBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUOworRU5BQkxFX0NTU19SRUdJT05TID0g
OworRU5BQkxFX0NTU19TSEFERVJTID0gOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUID0gJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlRfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9E
QVNIQk9BUkRfU1VQUE9SVF9tYWNvc3ggPSBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ7CitFTkFC
TEVfREFUQUdSSUQgPSA7CiBFTkFCTEVfREFUQUxJU1QgPSA7CiBFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUyA9IDsKIEVOQUJMRV9ERVRBSUxTID0gRU5BQkxFX0RFVEFJTFM7CkBAIC0xMjIsNCAr
OTcsNCBAQCBFTkFCTEVfV0VCX1RJTUlORyA9IDsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dP
UktFUlM7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQo
RU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVf
REFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1NQRUVD
SCkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFRkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVU
RVJfVEFHKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykg
JChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChF
TkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVHSVNURVJfUFJP
VE9DT0xfSEFORExFUikgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxF
X1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dP
UktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5B
QkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1NfRVhDTFVT
SU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVf
R0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVO
QUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9U
T0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVf
U0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9O
VFMpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09O
X0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCAyZGMxNDVmLi5lYmI5YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMSw0NSAr
MSwyMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0Ogot
Ly8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
Ly8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLS8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0vLyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0vLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0KLS8vIFRo
ZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKLS8vIFdlYkNvcmUsIFdlYktpdCBh
bmQgV2ViS2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVfRkVBVFVS
RV9OQU1FIG1hY3JvcyBpbgotLy8gYnVpbGQtd2Via2l0IHNob3VsZCBtYXRjaCB0aGUgdmFsdWVz
IGJlbG93LCBidXQgdGhleSBkbyBub3QgbmVlZCB0byBiZSBpbiB0aGUgc2FtZSBvcmRlci4KLQot
Ly8gS2VlcCB0aGlzIGxpc3Qgb2YgZmVhdHVyZXMgKG5vdCBlbmFibGVkL2Rpc2FibGVkIHN0YXRl
KSBpbiBzeW5jIHdpdGggRmVhdHVyZURlZmluZXMudnNwcm9wcwotLy8gYW5kIEZlYXR1cmVEZWZp
bmVzQ2Fpcm8udnNwcm9wcyBpbiBXZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMuCi0K
LS8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcg
dG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCi0KKy8vIFRoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZS4g
RG8gbm90IGVkaXQuCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20gU291cmNlL0ZlYXR1
cmVzLnB5IHVzaW5nCisvLyB3ZWJraXQtcGF0Y2ggZ2VuZXJhdGUtZmVhdHVyZS1maWxlcworRU5B
QkxFXzNEX0NBTlZBUyA9IDsKIEVOQUJMRV8zRF9SRU5ERVJJTkcgPSBFTkFCTEVfM0RfUkVOREVS
SU5HOwogRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyA9IDsKIEVOQUJMRV9BTklNQVRJT05f
QVBJID0gOwogRU5BQkxFX0JMT0IgPSBFTkFCTEVfQkxPQjsKIEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKK0VOQUJMRV9DU1NfRVhDTFVTSU9OUyA9
IDsKIEVOQUJMRV9DU1NfRklMVEVSUyA9IEVOQUJMRV9DU1NfRklMVEVSUzsKIEVOQUJMRV9DU1Nf
R1JJRF9MQVlPVVQgPSBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUOworRU5BQkxFX0NTU19SRUdJT05T
ID0gOworRU5BQkxFX0NTU19TSEFERVJTID0gOwogRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUID0g
JChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlRfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVF9tYWNvc3ggPSBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ7CitF
TkFCTEVfREFUQUdSSUQgPSA7CiBFTkFCTEVfREFUQUxJU1QgPSA7CiBFTkFCTEVfREFUQV9UUkFO
U0ZFUl9JVEVNUyA9IDsKIEVOQUJMRV9ERVRBSUxTID0gRU5BQkxFX0RFVEFJTFM7CkBAIC03Niw2
ICs1MSw3IEBAIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgPSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dF
RUtfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25l
b3MgPSBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLOwogRU5BQkxFX0lOUFVUX1RZUEVfV0VFS19pcGhv
bmVzaW11bGF0b3IgPSBFTkFCTEVfSU5QVVRfVFlQRV9XRUVLOwogRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUjsKK0VOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUyA9IEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUzsKIEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyA9ICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
XyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlNfbWFj
b3N4ID0gJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlNfbWFjb3N4XyQoVEFSR0VUX01BQ19P
U19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OU19tYWNvc3hf
MTA3MCA9IDsKQEAgLTEyMSw0ICs5Nyw0IEBAIEVOQUJMRV9XRUJfVElNSU5HID0gOwogRU5BQkxF
X1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAK
LUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxF
X0NTU19HUklEX0xBWU9VVCkgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVS
UykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikg
JChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVf
TUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQo
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gp
ICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
UUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJM
RV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVY
VF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVf
V0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NT
U19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NTU19SRUdJT05T
KSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5B
QkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
VEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklM
VEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRB
QkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIp
ICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9T
VEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9N
SUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFH
KSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkg
JChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NR
TF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhU
X05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmRjMTQ1Zi4uZWJi
OWFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTEsNDUgKzEsMjAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLS8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotCi0vLyBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG11c3Qg
YmUga2VwdCBpbiBzeW5jIHdpdGggRmVhdHVyZURlZmluZXMueGNjb25maWcgaW4gSmF2YVNjcmlw
dENvcmUsCi0vLyBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuICBBbHNvIHRoZSBkZWZhdWx0
IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNyb3MgaW4KLS8vIGJ1aWxkLXdl
YmtpdCBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlcyBiZWxvdywgYnV0IHRoZXkgZG8gbm90IG5lZWQg
dG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIuCi0KLS8vIEtlZXAgdGhpcyBsaXN0IG9mIGZlYXR1cmVz
IChub3QgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSkgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZpbmVz
LnZzcHJvcHMKLS8vIGFuZCBGZWF0dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHMgaW4gV2ViS2l0TGli
cmFyaWVzL3dpbi90b29scy92c3Byb3BzLgotCi0vLyBTZXQgYW55IEVOQUJMRV9GRUFUVVJFX05B
TUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0dXJlLgotCisv
LyBUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGUuIERvIG5vdCBlZGl0LgorLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBmcm9tIFNvdXJjZS9GZWF0dXJlcy5weSB1c2luZworLy8gd2Via2l0LXBhdGNo
IGdlbmVyYXRlLWZlYXR1cmUtZmlsZXMKK0VOQUJMRV8zRF9DQU5WQVMgPSA7CiBFTkFCTEVfM0Rf
UkVOREVSSU5HID0gRU5BQkxFXzNEX1JFTkRFUklORzsKIEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMgPSA7CiBFTkFCTEVfQU5JTUFUSU9OX0FQSSA9IDsKIEVOQUJMRV9CTE9CID0gRU5BQkxF
X0JMT0I7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
Tkc7CitFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMgPSA7CiBFTkFCTEVfQ1NTX0ZJTFRFUlMgPSBFTkFC
TEVfQ1NTX0ZJTFRFUlM7CiBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUID0gRU5BQkxFX0NTU19HUklE
X0xBWU9VVDsKK0VOQUJMRV9DU1NfUkVHSU9OUyA9IDsKK0VOQUJMRV9DU1NfU0hBREVSUyA9IDsK
IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCA9ICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUXyQo
UkVBTF9QTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlRfbWFjb3N4ID0g
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUOworRU5BQkxFX0RBVEFHUklEID0gOwogRU5BQkxFX0RB
VEFMSVNUID0gOwogRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMgPSA7CiBFTkFCTEVfREVUQUlM
UyA9IEVOQUJMRV9ERVRBSUxTOwpAQCAtNzYsNiArNTEsNyBAQCBFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLID0gJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CiBF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLX2lwaG9uZW9zID0gRU5BQkxFX0lOUFVUX1RZUEVfV0VFSzsK
IEVOQUJMRV9JTlBVVF9UWVBFX1dFRUtfaXBob25lc2ltdWxhdG9yID0gRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSzsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVI7CitFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMgPSBFTkFCTEVfTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVM7CiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMgPSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwogRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TX21hY29zeCA9ICQoRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlNfbWFjb3N4XzEwNzAgPSA7CkBAIC0xMjEsNCArOTcsNCBAQCBF
TkFCTEVfV0VCX1RJTUlORyA9IDsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBF
TkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQU5J
TUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1Qp
ICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9EUElf
Q0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
ICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05f
T0JTRVJWRVJTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9S
RUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9T
Q09QRUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFD
SykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tF
VFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQp
OworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5E
RVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQU5JTUFUSU9O
X0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0dSSURf
TEFZT1VUKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJ
U1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFC
TEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01F
RElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfVEFH
KSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9P
QlNFUlZFUlMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElU
WV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JF
R0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxF
X1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1ND
T1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNL
KSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7
CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURl
ZmluZXMudnNwcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lcy52c3Byb3BzCmluZGV4IDM0NDNiOWEuLjhhNWNmNjYgMTAwNjQ0Ci0tLSBhL1dlYktp
dExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy52c3Byb3BzCisrKyBi
L1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy52c3Byb3Bz
CkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
LTwhLS0gS2VlcCB0aGlzIGxpc3Qgb2YgZmVhdHVyZXMgKG5vdCBlbmFibGVkL2Rpc2FibGVkIHN0
YXRlKSBpbiBzeW5jIHdpdGggRmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZXMgaW4gSmF2YVNj
cmlwdENvcmUsIFdlYkNvcmUsIGFuZCBXZWJLaXQuIC0tPgotPCEtLSBBZGQgbmV3IGZlYXR1cmVz
IHRvIGJvdGggUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgYW5kIFVzZXJNYWNybyBzZWN0aW9ucy4g
LS0+Ci08IS0tIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBz
dHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuIC0tPgorPCEtLSBUaGlzIGlzIGEgZ2VuZXJh
dGVkIGZpbGUuIERvIG5vdCBlZGl0LiAtLT4KKzwhLS0gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBm
cm9tIFNvdXJjZS9GZWF0dXJlcy5weSB1c2luZyAtLT4KKzwhLS0gd2Via2l0LXBhdGNoIGdlbmVy
YXRlLWZlYXR1cmUtZmlsZXMgLS0+CiA8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAogCVByb2pl
Y3RUeXBlPSJWaXN1YWwgQysrIgogCVZlcnNpb249IjguMDAiCkBAIC05LDcgKzksNyBAQAogCT4K
ICAgPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IiQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV8zRF9DQU5W
QVMpOyQoRU5BQkxFXzNEX1JFTkRFUklORyk7JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
KTskKEVOQUJMRV9CTE9CKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyk7JChFTkFCTEVfQ1NT
X0ZJTFRFUlMpOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1NIQURFUlMp
OyQoRU5BQkxFX0NTU19SRUdJT05TKTskKEVOQUJMRV9DU1NfRVhDTFVTSU9OUyk7JChFTkFCTEVf
U1FMX0RBVEFCQVNFKTskKEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1QpOyQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJTFMpOyQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRklMVEVS
Uyk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJM
RV9HQU1FUEFEKTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKTskKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5B
QkxFX0xJTktfUFJFUkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX1RBRyk7
JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpOyQoRU5BQkxF
X05PVElGSUNBVElPTlMpOyQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpOyQoRU5BQkxFX1BS
T0dSRVNTX1RBRyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hB
TkRMRVIpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1ZH
KTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChF
TkFCTEVfVklERU8pOyQoRU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVESUFfU1RBVElT
VElDUyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcpOyQoRU5BQkxF
X1dPUktFUlMpOyQoRU5BQkxFX1hTTFQpIgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iJChF
TkFCTEVfM0RfQ0FOVkFTKTskKEVOQUJMRV8zRF9SRU5ERVJJTkcpOyQoRU5BQkxFX0FDQ0VMRVJB
VEVEXzJEX0NBTlZBUyk7JChFTkFCTEVfQU5JTUFUSU9OX0FQSSk7JChFTkFCTEVfQkxPQik7JChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTU19FWENMVVNJT05TKTskKEVOQUJM
RV9DU1NfRklMVEVSUyk7JChFTkFCTEVfQ1NTX0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1NfUkVH
SU9OUyk7JChFTkFCTEVfQ1NTX1NIQURFUlMpOyQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKTsk
KEVOQUJMRV9EQVRBR1JJRCk7JChFTkFCTEVfREFUQUxJU1QpOyQoRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJTFMpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTik7
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRklMRV9TWVNURU0pOyQoRU5BQkxF
X0ZJTFRFUlMpOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFEKTskKEVO
QUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09O
REFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpOyQoRU5BQkxFX0lOUFVUX1NQRUVD
SCk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUik7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTsk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJFUkVO
REVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFCTEVfTUVE
SUFfU1RBVElTVElDUyk7JChFTkFCTEVfTUVURVJfVEFHKTskKEVOQUJMRV9NSFRNTCk7JChFTkFC
TEVfTUlDUk9EQVRBKTskKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpOyQoRU5BQkxFX05PVElG
SUNBVElPTlMpOyQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpOyQoRU5BQkxFX1BST0dSRVNT
X1RBRyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIp
OyQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVF
Q0gpOyQoRU5BQkxFX1NIQURPV19ET00pOyQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJM
RV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1ZHKTskKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVf
VEVYVF9OT1RJRklDQVRJT05TX09OTFkpOyQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyk7JChF
TkFCTEVfVklERU8pOyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9XRUJHTCk7JChFTkFC
TEVfV0VCX0FVRElPKTskKEVOQUJMRV9XRUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7
JChFTkFCTEVfV09SS0VSUyk7JChFTkFCTEVfWFNMVCkiCiAJLz4KICAgPFVzZXJNYWNybwogCQlO
YW1lPSJFTkFCTEVfM0RfQ0FOVkFTIgpAQCAtMjcsNiArMjcsMTEgQEAKIAkJUGVyZm9ybUVudmly
b25tZW50U2V0PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxFX0FOSU1B
VElPTl9BUEkiCisJCVZhbHVlPSIiCisJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKKwkv
PgorICA8VXNlck1hY3JvCiAJCU5hbWU9IkVOQUJMRV9CTE9CIgogCQlWYWx1ZT0iIgogCQlQZXJm
b3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCkBAIC02Miw2ICs2NywxMSBAQAogCQlQZXJmb3JtRW52
aXJvbm1lbnRTZXQ9InRydWUiCiAJLz4KICAgPFVzZXJNYWNybworCQlOYW1lPSJFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQiCisJCVZhbHVlPSIiCisJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1
ZSIKKwkvPgorICA8VXNlck1hY3JvCiAJCU5hbWU9IkVOQUJMRV9EQVRBR1JJRCIKIAkJVmFsdWU9
IiIKIAkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgpAQCAtMjE3LDYgKzIyNywxMSBAQAog
CQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCiAJLz4KICAgPFVzZXJNYWNybworCQlOYW1l
PSJFTkFCTEVfTUhUTUwiCisJCVZhbHVlPSIiCisJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1
ZSIKKwkvPgorICA8VXNlck1hY3JvCiAJCU5hbWU9IkVOQUJMRV9NSUNST0RBVEEiCiAJCVZhbHVl
PSIiCiAJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKQEAgLTI5NywxMSArMzEyLDMxIEBA
CiAJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKIAkvPgogICA8VXNlck1hY3JvCisJCU5h
bWU9IkVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSIKKwkJVmFsdWU9IiIKKwkJUGVyZm9y
bUVudmlyb25tZW50U2V0PSJ0cnVlIgorCS8+CisgIDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORyIKKwkJVmFsdWU9IiIKKwkJUGVyZm9ybUVudmlyb25tZW50U2V0
PSJ0cnVlIgorCS8+CisgIDxVc2VyTWFjcm8KIAkJTmFtZT0iRU5BQkxFX1ZJREVPIgogCQlWYWx1
ZT0iRU5BQkxFX1ZJREVPIgogCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCiAJLz4KICAg
PFVzZXJNYWNybworCQlOYW1lPSJFTkFCTEVfVklERU9fVFJBQ0siCisJCVZhbHVlPSIiCisJCVBl
cmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKKwkvPgorICA8VXNlck1hY3JvCisJCU5hbWU9IkVO
QUJMRV9XRUJHTCIKKwkJVmFsdWU9IiIKKwkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgor
CS8+CisgIDxVc2VyTWFjcm8KIAkJTmFtZT0iRU5BQkxFX1dFQl9BVURJTyIKIAkJVmFsdWU9IiIK
IAkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFy
aWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8udnNwcm9wcyBiL1dlYktp
dExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHMK
aW5kZXggNjg4Y2I0Yy4uOTRiOTM5MCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8udnNwcm9wcworKysgYi9XZWJLaXRMaWJy
YXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby52c3Byb3BzCkBAIC0x
LDcgKzEsNyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+
Ci08IS0tIEtlZXAgdGhpcyBsaXN0IG9mIGZlYXR1cmVzIChub3QgZW5hYmxlZC9kaXNhYmxlZCBz
dGF0ZSkgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGVzIGluIEphdmFT
Y3JpcHRDb3JlLCBXZWJDb3JlLCBhbmQgV2ViS2l0LiAtLT4KLTwhLS0gQWRkIG5ldyBmZWF0dXJl
cyB0byBib3RoIFByZXByb2Nlc3NvckRlZmluaXRpb25zIGFuZCBVc2VyTWFjcm8gc2VjdGlvbnMu
IC0tPgotPCEtLSBTZXQgYW55IEVOQUJMRV9GRUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkg
c3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0dXJlLiAtLT4KKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIFRoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZS4gRG8gbm90
IGVkaXQuIC0tPgorPCEtLSBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20gU291cmNlL0ZlYXR1
cmVzLnB5IHVzaW5nIC0tPgorPCEtLSB3ZWJraXQtcGF0Y2ggZ2VuZXJhdGUtZmVhdHVyZS1maWxl
cyAtLT4KIDxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CiAJUHJvamVjdFR5cGU9IlZpc3VhbCBD
KysiCiAJVmVyc2lvbj0iOC4wMCIKQEAgLTksNyArOSw3IEBACiAJPgogICA8VG9vbAogCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iJChFTkFCTEVf
M0RfQ0FOVkFTKTskKEVOQUJMRV8zRF9SRU5ERVJJTkcpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUyk7JChFTkFCTEVfQkxPQik7JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5B
QkxFX0NTU19GSUxURVJTKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxFX0NTU19T
SEFERVJTKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpOyQo
RU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNU
KTskKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTKTskKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pOyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxF
X0ZJTFRFUlMpOyQoRU5BQkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7
JChFTkFCTEVfR0FNRVBBRCk7JChFTkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0lDT05EQVRB
QkFTRSk7JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Uik7JChFTkFCTEVfSU5QVVRfU1BFRUNIKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpOyQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCk7JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTsk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspOyQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpOyQo
RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9MSU5LX1BSRUZFVENIKTskKEVO
QUJMRV9MSU5LX1BSRVJFTkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NRVRFUl9UQUcp
OyQoRU5BQkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKTskKEVOQUJM
RV9OT1RJRklDQVRJT05TKTskKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKTskKEVOQUJMRV9Q
Uk9HUkVTU19UQUcpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9I
QU5ETEVSKTskKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURPV19ET00pOyQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NW
Ryk7JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9OVFMpOyQo
RU5BQkxFX1ZJREVPKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpOyQoRU5BQkxFX1dFQl9TT0NLRVRTKTskKEVOQUJMRV9XRUJfVElNSU5HKTskKEVOQUJM
RV9XT1JLRVJTKTskKEVOQUJMRV9YU0xUKSIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiQo
RU5BQkxFXzNEX0NBTlZBUyk7JChFTkFCTEVfM0RfUkVOREVSSU5HKTskKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpOyQoRU5BQkxFX0FOSU1BVElPTl9BUEkpOyQoRU5BQkxFX0JMT0IpOyQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKTskKEVOQUJMRV9DU1NfRVhDTFVTSU9OUyk7JChFTkFC
TEVfQ1NTX0ZJTFRFUlMpOyQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCk7JChFTkFCTEVfQ1NTX1JF
R0lPTlMpOyQoRU5BQkxFX0NTU19TSEFERVJTKTskKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCk7
JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFMSVNUKTskKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKTskKEVOQUJMRV9ERVRBSUxTKTskKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
OyQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpOyQoRU5BQkxFX0ZJTEVfU1lTVEVNKTskKEVOQUJM
RV9GSUxURVJTKTskKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSk7JChFTkFCTEVfR0FNRVBBRCk7JChF
TkFCTEVfR0VPTE9DQVRJT04pOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNP
TkRBVEFCQVNFKTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKTskKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKTskKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyk7JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
Uik7JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpOyQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKTskKEVOQUJMRV9MSU5LX1BSRUZFVENIKTskKEVOQUJMRV9MSU5LX1BSRVJF
TkRFUik7JChFTkFCTEVfTUFUSE1MKTskKEVOQUJMRV9NRURJQV9TT1VSQ0UpOyQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpOyQoRU5BQkxFX01FVEVSX1RBRyk7JChFTkFCTEVfTUhUTUwpOyQoRU5B
QkxFX01JQ1JPREFUQSk7JChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKTskKEVOQUJMRV9OT1RJ
RklDQVRJT05TKTskKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKTskKEVOQUJMRV9QUk9HUkVT
U19UQUcpOyQoRU5BQkxFX1FVT1RBKTskKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVS
KTskKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSk7JChFTkFCTEVfU0NSSVBURURfU1BF
RUNIKTskKEVOQUJMRV9TSEFET1dfRE9NKTskKEVOQUJMRV9TSEFSRURfV09SS0VSUyk7JChFTkFC
TEVfU1FMX0RBVEFCQVNFKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NWRyk7JChF
TkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9OVFMpOyQoRU5BQkxF
X1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKTskKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpOyQo
RU5BQkxFX1ZJREVPKTskKEVOQUJMRV9WSURFT19UUkFDSyk7JChFTkFCTEVfV0VCR0wpOyQoRU5B
QkxFX1dFQl9BVURJTyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9USU1JTkcp
OyQoRU5BQkxFX1dPUktFUlMpOyQoRU5BQkxFX1hTTFQpIgogCS8+CiAgIDxVc2VyTWFjcm8KIAkJ
TmFtZT0iRU5BQkxFXzNEX0NBTlZBUyIKQEAgLTI3LDYgKzI3LDExIEBACiAJCVBlcmZvcm1FbnZp
cm9ubWVudFNldD0idHJ1ZSIKIAkvPgogICA8VXNlck1hY3JvCisJCU5hbWU9IkVOQUJMRV9BTklN
QVRJT05fQVBJIgorCQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCisJ
Lz4KKyAgPFVzZXJNYWNybwogCQlOYW1lPSJFTkFCTEVfQkxPQiIKIAkJVmFsdWU9IiIKIAkJUGVy
Zm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgpAQCAtNjIsNiArNjcsMTEgQEAKIAkJUGVyZm9ybUVu
dmlyb25tZW50U2V0PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxFX0RB
U0hCT0FSRF9TVVBQT1JUIgorCQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRy
dWUiCisJLz4KKyAgPFVzZXJNYWNybwogCQlOYW1lPSJFTkFCTEVfREFUQUdSSUQiCiAJCVZhbHVl
PSIiCiAJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKQEAgLTExNyw2ICsxMjcsMTEgQEAK
IAkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFjcm8KKwkJTmFt
ZT0iRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyIKKwkJVmFsdWU9IiIKKwkJUGVyZm9ybUVudmlyb25t
ZW50U2V0PSJ0cnVlIgorCS8+CisgIDxVc2VyTWFjcm8KIAkJTmFtZT0iRU5BQkxFX0lDT05EQVRB
QkFTRSIKIAkJVmFsdWU9IkVOQUJMRV9JQ09OREFUQUJBU0UiCiAJCVBlcmZvcm1FbnZpcm9ubWVu
dFNldD0idHJ1ZSIKQEAgLTE3Miw2ICsxODcsMTEgQEAKIAkJUGVyZm9ybUVudmlyb25tZW50U2V0
PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTIgorCQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUi
CisJLz4KKyAgPFVzZXJNYWNybwogCQlOYW1lPSJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMi
CiAJCVZhbHVlPSIiCiAJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKQEAgLTIwNyw2ICsy
MjcsMTEgQEAKIAkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFj
cm8KKwkJTmFtZT0iRU5BQkxFX01IVE1MIgorCQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1l
bnRTZXQ9InRydWUiCisJLz4KKyAgPFVzZXJNYWNybwogCQlOYW1lPSJFTkFCTEVfTUlDUk9EQVRB
IgogCQlWYWx1ZT0iIgogCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCkBAIC0yNDIsNiAr
MjY3LDExIEBACiAJCVBlcmZvcm1FbnZpcm9ubWVudFNldD0idHJ1ZSIKIAkvPgogICA8VXNlck1h
Y3JvCisJCU5hbWU9IkVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSIKKwkJVmFsdWU9IiIK
KwkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgorCS8+CisgIDxVc2VyTWFjcm8KIAkJTmFt
ZT0iRU5BQkxFX1NDUklQVEVEX1NQRUVDSCIKIAkJVmFsdWU9IiIKIAkJUGVyZm9ybUVudmlyb25t
ZW50U2V0PSJ0cnVlIgpAQCAtMjgyLDExICszMTIsMzEgQEAKIAkJUGVyZm9ybUVudmlyb25tZW50
U2V0PSJ0cnVlIgogCS8+CiAgIDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxFX1RFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZIgorCQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUi
CisJLz4KKyAgPFVzZXJNYWNybworCQlOYW1lPSJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIgor
CQlWYWx1ZT0iIgorCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCisJLz4KKyAgPFVzZXJN
YWNybwogCQlOYW1lPSJFTkFCTEVfVklERU8iCiAJCVZhbHVlPSIiCiAJCVBlcmZvcm1FbnZpcm9u
bWVudFNldD0idHJ1ZSIKIAkvPgogICA8VXNlck1hY3JvCisJCU5hbWU9IkVOQUJMRV9WSURFT19U
UkFDSyIKKwkJVmFsdWU9IiIKKwkJUGVyZm9ybUVudmlyb25tZW50U2V0PSJ0cnVlIgorCS8+Cisg
IDxVc2VyTWFjcm8KKwkJTmFtZT0iRU5BQkxFX1dFQkdMIgorCQlWYWx1ZT0iIgorCQlQZXJmb3Jt
RW52aXJvbm1lbnRTZXQ9InRydWUiCisJLz4KKyAgPFVzZXJNYWNybwogCQlOYW1lPSJFTkFCTEVf
V0VCX0FVRElPIgogCQlWYWx1ZT0iIgogCQlQZXJmb3JtRW52aXJvbm1lbnRTZXQ9InRydWUiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>