<?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>26609</bug_id>
          
          <creation_ts>2009-06-22 10:19:34 -0700</creation_ts>
          <short_desc>[css-values] Support advanced attr() functionality</short_desc>
          <delta_ts>2026-04-02 23:20:03 -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>CSS</component>
          <version>Safari 9</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://issues.chromium.org/issues/40320391</see_also>
          <bug_file_loc>https://www.w3.org/TR/css3-values/#attr-notation</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, W3CTest</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>310193</dependson>
    
    <dependson>310269</dependson>
    
    <dependson>310292</dependson>
    
    <dependson>310347</dependson>
    
    <dependson>310483</dependson>
    
    <dependson>310571</dependson>
    
    <dependson>310641</dependson>
    
    <dependson>310710</dependson>
    
    <dependson>310794</dependson>
    
    <dependson>311077</dependson>
    
    <dependson>311115</dependson>
    
    <dependson>311190</dependson>
    
    <dependson>311255</dependson>
    
    <dependson>311259</dependson>
    
    <dependson>311331</dependson>
          <blocked>25851</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kai Brüning">kai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agafvv</cc>
    
    <cc>arv</cc>
    
    <cc>benoit.rouleau</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>bramus</cc>
    
    <cc>browserbugs2</cc>
    
    <cc>craig+webkit</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>git</cc>
    
    <cc>hamaji</cc>
    
    <cc>hello</cc>
    
    <cc>hyatt</cc>
    
    <cc>jbalogh</cc>
    
    <cc>jen123cruz123</cc>
    
    <cc>Justin</cc>
    
    <cc>kanasubim9</cc>
    
    <cc>karlcow</cc>
    
    <cc>kennyluck</cc>
    
    <cc>koivisto</cc>
    
    <cc>lmcliste</cc>
    
    <cc>mfoulks1</cc>
    
    <cc>mikelawther</cc>
    
    <cc>miriam</cc>
    
    <cc>ntim</cc>
    
    <cc>sabberworm</cc>
    
    <cc>sebastianzartner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit.org</cc>
    
    <cc>webmaster</cc>
    
    <cc>woodlxf00</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127371</commentid>
    <comment_count>0</comment_count>
    <who name="Kai Brüning">kai</who>
    <bug_when>2009-06-22 10:19:34 -0700</bug_when>
    <thetext>CSS3 extends the attr() function substantially.

Especially the ability is added to set the content of an element to an image url contained in an arbitrary attribute. This is necessary to be able to display xml data with images which are not described by html &lt;img&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127373</commentid>
    <comment_count>1</comment_count>
      <attachid>31653</attachid>
    <who name="Kai Brüning">kai</who>
    <bug_when>2009-06-22 10:43:25 -0700</bug_when>
    <thetext>Created attachment 31653
A first attempt to implement the CSS3 attr() function

This patch is meant as a first attempt of an implementation. There are sure many things to change before landing it.

The up to three parameters of CSS3-attr() are fully supported, but attr() can not yet be used with all properties to which it would apply.

The patch introduces the concept of a &quot;derived&quot; value to CSSPrimitiveValue and CSSStyleSelector. The derived value is a new CSSPrimitiveValue, which is created only if the original value is of the newly added sub class CSSAttrValue. The derived value is then of the type required by the attr() function, for instance CSSImageValue.

Note that the patch includes namespace support for the attribute name (first parameter of attr()). For this I had to change CSSGrammar.y. Probably this won’t be the final change, because so far it does not support and empty prefix (that is, an attribute name of the form &quot;|name&quot;).

Please advice how to proceed to get this landed eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138346</commentid>
    <comment_count>2</comment_count>
      <attachid>31653</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-08 09:14:29 -0700</bug_when>
    <thetext>Comment on attachment 31653
A first attempt to implement the CSS3 attr() function

I think if I was trying to get this patch landed, I would start by writing some obvious tests and getting those landed.

You have tests, but they certainly could be made more obvious.  They can also be made dumpAsText using the js testing framework (found in fast/js/resources.  Look for TEMPLATE.html files and make-js-test-wrappers).

You can test matching css selectors from javascript using querySelectorAll or getComputedStyle().

Hum... but I just realized that I think that getComputedStyle().content is broken, so you might not actually be able to use getComputedStyle for this.  Bug 23668.  Hum.  I&apos;ll look at your patch again later in more detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138349</commentid>
    <comment_count>3</comment_count>
      <attachid>31653</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-08 09:32:28 -0700</bug_when>
    <thetext>Comment on attachment 31653
A first attempt to implement the CSS3 attr() function

Sorry for the unhelpful comments.  I was trying to suggest that it&apos;s difficult to tell if your tests pass or fail.  Mostly this is just a large, possibly complicated change, and no one has taken the time to decide if it&apos;s right or not yet.  Trying to make it more obvious to people that it&apos;s right (by making the tests more obvious) is one approach to getting it reviewed.  But I&apos;ll also just try and stare at it more early next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140761</commentid>
    <comment_count>4</comment_count>
    <who name="Kai Brüning">kai</who>
    <bug_when>2009-08-17 10:59:29 -0700</bug_when>
    <thetext>Eric, your suggestion certainly makes sense and I will work on the test cases soon.

Some additional information about the patch:

 I need this feature for a project which uses a custom build of WebKit (yes, we are aware of the caveats of doing so). To keep the merge effort minimal, I tried to do minimal changes for this patch.

To implement the complete functionality of CSS3 attr() it would probably make sense to refactor a little more in order to avoid a lot of boiler plate code duplication. I am willing to do this after getting feedback whether the patch is wanted at all and whether its approach is feasible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140956</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 18:22:06 -0700</bug_when>
    <thetext>You would have to ask Hyatt if &quot;attr()&quot; is a bad idea.  My general assumption is that we plan to most things from CSS3 where they do not negatively affect performance of the rest of the engine.

Mostly I think this patch is just large.  If you think it could be done in smaller changes with some up-front re-factoring, that&apos;s definitely encouraged. :)

If you can get Hyatt&apos;s attention in #webkit, he may be able to give you some quick feedback about the basics of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148822</commentid>
    <comment_count>6</comment_count>
      <attachid>31653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-09-21 14:15:56 -0700</bug_when>
    <thetext>Comment on attachment 31653
A first attempt to implement the CSS3 attr() function

r-ing the patch based on discussion in the bug, and the need to break it into smaller chunks, as well as add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400049</commentid>
    <comment_count>7</comment_count>
      <attachid>92687</attachid>
    <who name="Jos van den Oever">jos.van.den.oever</who>
    <bug_when>2011-05-07 01:31:22 -0700</bug_when>
    <thetext>Created attachment 92687
test case for attr() function

works in Firefox 4, not in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510978</commentid>
    <comment_count>8</comment_count>
    <who name="Gérard Talbot (no longer involved)">browserbugs2</who>
    <bug_when>2019-02-28 10:26:51 -0800</bug_when>
    <thetext>Tests 
-----

http://w3c-test.org/css/css-values/attr-color-invalid-cast.html

http://w3c-test.org/css/css-values/attr-color-valid.html

http://w3c-test.org/css/css-values/attr-invalid-type-008.html

http://w3c-test.org/css/css-values/attr-length-invalid-cast.html

http://w3c-test.org/css/css-values/attr-length-valid-zero-nofallback.html

http://w3c-test.org/css/css-values/attr-length-valid-zero.html

http://w3c-test.org/css/css-values/attr-length-valid.html

http://w3c-test.org/css/css-values/attr-px-invalid-cast.html

http://w3c-test.org/css/css-values/attr-px-valid.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543235</commentid>
    <comment_count>9</comment_count>
    <who name="Miriam Suzanne">miriam</who>
    <bug_when>2019-06-09 19:00:25 -0700</bug_when>
    <thetext>This could make a huge difference for CSS layout, completely replacing grid systems…

```css
[data-layout] {
  grid-area: attr(data-layout custom-ident, auto / 1 / auto / -1);
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851880</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-03-16 10:36:30 -0700</bug_when>
    <thetext>*** Bug 204275 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851882</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-03-16 10:37:05 -0700</bug_when>
    <thetext>*** Bug 237956 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851885</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-03-16 10:38:27 -0700</bug_when>
    <thetext>&lt;rdar://57256097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2091647</commentid>
    <comment_count>14</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2025-02-03 16:42:44 -0800</bug_when>
    <thetext>There was a recent article about the feature. 
https://una.im/advanced-attr/

Some WPT failing in Safari currently. 
https://wpt.fyi/results/css/css-values?label=master&amp;label=experimental&amp;aligned&amp;q=attr%20safari%3Afail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2111006</commentid>
    <comment_count>15</comment_count>
    <who name="Woody Lee">woodlxf00</who>
    <bug_when>2025-04-14 22:02:28 -0700</bug_when>
    <thetext>&gt; https://github.com/w3c/csswg-drafts/issues/11645#issuecomment-2701601350
&gt; RESOLVED: Rename string keyword to raw-string
FYI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2162278</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2025-12-01 12:18:47 -0800</bug_when>
    <thetext>This is mentioned on https://frontendmasters.com/blog/non-square-image-blur-extensions/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196523</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2026-04-02 23:20:03 -0700</bug_when>
    <thetext>This implemented and enabled as preview in https://commits.webkit.org/310246@main. Keeping this open until it is enabled by default.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31653</attachid>
            <date>2009-06-22 10:43:25 -0700</date>
            <delta_ts>2010-06-11 11:32:08 -0700</delta_ts>
            <desc>A first attempt to implement the CSS3 attr() function</desc>
            <filename>CSS3AttrPatch1.txt</filename>
            <type>text/plain</type>
            <size>52515</size>
            <attacher name="Kai Brüning">kai</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDkzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDktMDYtMjIgIEthaSBCcp9uaW5nICA8a2FpQGdyYW51cy5uZXQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NjA5CisgICAgICAgIAorICAgICAg
ICBBZGRlZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIENTUzMgdmVyc2lvbiBvZiB0aGUgYXR0cigpIGZ1
bmN0aW9uLgorICAgICAgICBTbyBmYXIgdGhlIHByb3BlcnRpZXMgY29udGVudCwgdG9wLCBsZWZ0
LCByaWdodCwgYm90dG9tLAorICAgICAgICB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCBoZWln
aHQsIG1pbkhlaWdodCwgbWF4SGVpZ2h0LAorICAgICAgICBtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0
LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnQgYXJlIHN1cHBvcnRlZC4KKworICAgICAgICBUZXN0
czogY3NzMy9WYWx1ZXNBbmRVbml0cy9jb250ZW50LWF0dHItZGVmYXVsdHMueGh0bWwKKyAgICAg
ICAgICAgICAgIGNzczMvVmFsdWVzQW5kVW5pdHMvY29udGVudC1hdHRyLnhodG1sCisgICAgICAg
ICAgICAgICBjc3MzL1ZhbHVlc0FuZFVuaXRzL3dpZHRoX2hlaWdodC1hdHRyLnhodG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3Nz
L0NTU0F0dHJWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQXR0clZhbHVl
OjpDU1NBdHRyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQXR0clZhbHVlOjp+Q1NTQXR0
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0F0dHJWYWx1ZTo6ZGVyaXZlZFZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTQXR0clZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQXR0clZhbHVlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQXR0clZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQXR0clZhbHVlOjpyZXF1ZXN0ZWRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0F0dHJWYWx1ZTo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBdHRy
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQXR0ckxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQXR0ckZ1bmN0aW9uKToKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVmFsdWU6Oik6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
ZXJpdmVkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRz
LmluOgorCiAyMDA5LTA2LTIyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ0OTMzKQorKysgV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw2ICs1
NTEsOCBAQAogCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5o
ICovOyB9OwogCQkyOUE4MTI0QTBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW0gKi87IH07CiAJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEy
NDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMubW0gKi87IH07CisJCTJBNTJB
QTdCMEZFRkMzNkMwMDVFOUZCRSAvKiBDU1NBdHRyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE1MkFBNzkwRkVGQzM2QzAwNUU5RkJFIC8q
IENTU0F0dHJWYWx1ZS5jcHAgKi87IH07CisJCTJBNTJBQTdDMEZFRkMzNkMwMDVFOUZCRSAvKiBD
U1NBdHRyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBNTJBQTdBMEZFRkMzNkMwMDVFOUZCRSAvKiBDU1NBdHRyVmFsdWUuaCAqLzsgfTsKIAkJ
MkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5
OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi87IH07CiAJCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAv
KiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NDQwRjU0NkE4
MjAwQjBGMUJBIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLzsgfTsKQEAgLTU0NDcsNiArNTQ0OSw4IEBACiAJCTI5QTgxMjQ1MEZC
QjlDQTkwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWE9iamVjdENh
Y2hlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTUyQUE3OTBGRUZDMzZD
MDA1RTlGQkUgLyogQ1NTQXR0clZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0F0dHJWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBNTJBQTdBMEZFRkMzNkMwMDVFOUZCRSAvKiBDU1NBdHRyVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQXR0clZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0U3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTggLyogTGF5
b3V0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOTA2NjBCMDY2NUQ5MzcwMDZCNkYx
QSAvKiBDbGlwYm9hcmRNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTM5NzYsNiArMTM5ODAsOCBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBE
Rjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKKwkJCQkyQTUyQUE3OTBGRUZDMzZDMDA1RTlGQkUg
LyogQ1NTQXR0clZhbHVlLmNwcCAqLywKKwkJCQkyQTUyQUE3QTBGRUZDMzZDMDA1RTlGQkUgLyog
Q1NTQXR0clZhbHVlLmggKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0Jv
cmRlckltYWdlVmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0REMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NCb3JkZXJJbWFnZVZhbHVlLmggKi8sCiAJCQkJQkM2MDRBNDIwREI1NjM0RTAwMjA0NzM5IC8q
IENTU0NhbnZhc1ZhbHVlLmNwcCAqLywKQEAgLTE2ODQ3LDYgKzE2ODUzLDcgQEAKIAkJCQlCQzc3
Q0I4NzBGRUJGNUFGMDA3MDg4N0IgLyogSFRNTERhdGFHcmlkQ29sRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM3N0NCRDQwRkVCRjgzMTAwNzA4ODdCIC8qIEpTSFRNTERhdGFHcmlkQ29s
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNTJBQTdDMEZFRkMzNkMwMDVFOUZC
RSAvKiBDU1NBdHRyVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg4NDksNiArMTg4NTYsNyBA
QAogCQkJCUJDNzdDQkFBMEZFQkY2QzkwMDcwODg3QiAvKiBIVE1MRGF0YUdyaWRDb2xFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzdDQkQzMEZFQkY4MzEwMDcwODg3QiAvKiBKU0hU
TUxEYXRhR3JpZENvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkE1MkFB
N0IwRkVGQzM2QzAwNUU5RkJFIC8qIENTU0F0dHJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU0F0dHJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTQXR0clZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU0F0dHJW
YWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEthaSBCcsO8bmluZyA8a2FpQGdyYW51cy5uZXQ+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU0F0dHJWYWx1ZS5oIgorCisjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlLmgiCisjaW5jbHVkZSAi
RG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTQXR0clZh
bHVlOjpDU1NBdHRyVmFsdWUoY29uc3QgU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVbml0VHlwZXMg
dHlwZSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGVmYXVsdFZhbHVlKQorICAgIDog
Q1NTUHJpbWl0aXZlVmFsdWUoYXR0ck5hbWUsIENTU19BVFRSKQorICAgICwgbV9uYW1lc3BhY2VV
UkkobmFtZXNwYWNlVVJJKQorICAgICwgbV9yZXF1ZXN0ZWRUeXBlKHR5cGUpCisgICAgLCBtX2Rl
ZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCit7Cit9CisKK0NTU0F0dHJWYWx1ZTo6fkNTU0F0dHJW
YWx1ZSgpCit7Cit9CisKK1Bhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU0F0dHJWYWx1
ZTo6ZGVyaXZlZFZhbHVlKGludCBwcm9wSWQsIEVsZW1lbnQqIGVsZW1lbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiYgc2VsZWN0b3JBdHRycykKK3sKKyAgICBRdWFsaWZpZWROYW1lIGF0
dHIobnVsbEF0b20sIGdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBtX25hbWVzcGFjZVVSSSk7Cisg
ICAgCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyVmFsdWUgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoYXR0cik7CisKKyAgICAvLyByZWdpc3RlciB0aGUgZmFjdCB0aGF0IHRoZSBhdHRyaWJ1
dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKKyAgICBzZWxlY3RvckF0dHJzLmFkZChhdHRyLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CisgICAgCisgICAgaWYgKCFhdHRyVmFsdWUuaXNOdWxsKCkpIHsK
KyAgICAgICAgc3dpdGNoIChtX3JlcXVlc3RlZFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NT
X1NUUklORzoKKyAgICAgICAgICAgICAgICBtX2Rlcml2ZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoYXR0clZhbHVlLCBDU1NfU1RSSU5HKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ1NTX1VSSToKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGNh
c2UgaXMgdGhlIHJlYXNvbiB0byBoYXZlIG1fZGVyaXZlZFZhbHVlIGFzIGEgbWVtYmVyOiB3aXRo
b3V0IHRoaXMgdGhlIGltYWdlIHdvdWxkIGJlCisgICAgICAgICAgICAgICAgLy8gcmVtb3ZlZCBm
cm9tIHRoZSBjYWNoZSBlYWNoIHRpbWUgdGhlIHN0eWxlIGlzIHJlY2FsY3VsYXRlZCwgcmVzdWx0
aW5nIGluIGZsaWNrZXIuIE5vdGUgdGhhdAorICAgICAgICAgICAgICAgIC8vIHRoaXMgc29sdXRp
b24gdG8ga2VlcCB0aGUgaW1hZ2UgaW4gdGhlIGNhY2hlIG9ubHkgd29ya3MgYmVjYXVzZSBhbnkg
c3R5bGUgY29udGFpbmluZyBhbiBhdHRyKCkKKyAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbiBp
cyBzZXQgdG8gYmUgdW5pcXVlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJIGFtIG5vdCBz
dXJlIHdoZXRoZXIgaXQgaXMgY29ycmVjdCB0byB1c2UgY29tcGxldGVVUkwoKSBvZiB0aGUgZG9j
dW1lbnQgaGVyZS4KKyAgICAgICAgICAgICAgICBtX2Rlcml2ZWRWYWx1ZSA9IENTU0ltYWdlVmFs
dWU6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhdHRyVmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTX0FUVFJfTEVOR1RI
OgorICAgICAgICAgICAgY2FzZSBDU1NfQVRUUl9BTkdMRToKKyAgICAgICAgICAgIGNhc2UgQ1NT
X0FUVFJfVElNRToKKyAgICAgICAgICAgIGNhc2UgQ1NTX0FUVFJfRlJFUVVFTkNZOiB7CisgICAg
ICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBzZWVtcyB0byBiZSB0aGUgYXBwcm92ZWQgbWV0
aG9kIHRvIHBhcnNlIGp1c3QgYSBDU1MgdmFsdWUuIE5vdGUgdGhhdCB0aGlzIHdvcmtzIGZvcgor
ICAgICAgICAgICAgICAgIC8vIHZhbHVlcyB3aXRoIHVuaXQgb25seSwgYmVjYXVzZSB1bml0LWZy
ZWUgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIHByb3BlcnR5IGdpdmVuLgorICAgICAg
ICAgICAgICAgIENTU1BhcnNlciBwOyAgICAvLyBzaG91bGQgYmUgb2sgdG8gcGFyc2UgQ1NTMyBh
bHdheXMgaW4gc3RyaWN0IG1vZGUsIHNob3VsZG7igJl0IGl0PworICAgICAgICAgICAgICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVEZWNsYXJhdGlvbiA9IENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAocC5w
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHByb3BJZCwgYXR0clZhbHVlLCB0cnVl
KSkgeworICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSBzdHls
ZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BJZCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2YWwgJiYgdmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2Rlcml2ZWRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4gKHZhbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDU1NfQVRUUl9JTlRFR0VSOgorICAg
ICAgICAgICAgY2FzZSBDU1NfQVRUUl9OVU1CRVI6CisgICAgICAgICAgICBjYXNlIENTU19SR0JD
T0xPUjoKKyAgICAgICAgICAgICAgICBicmVhazsgIC8vIG5vdCBzdXBwb3J0ZWQgeWV0CisKKyAg
ICAgICAgICAgIC8vIFRoZSByZW1haW5pbmcgY2FzZXMgYXJlIHRoZSBzcGVjaWZpYyB1bml0cy4K
KyAgICAgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgICAgICBib29sIG9rOworICAgICAg
ICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNoYXJhY3RlcnNUb0RvdWJsZShhdHRyVmFsdWUuY2hh
cmFjdGVycygpLCBhdHRyVmFsdWUubGVuZ3RoKCksICZvayk7CisgICAgICAgICAgICAgICAgaWYg
KG9rKQorICAgICAgICAgICAgICAgICAgICBtX2Rlcml2ZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodmFsdWUsIHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9yZXF1ZXN0ZWRUeXBl
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgaWYgKCFtX2Rlcml2ZWRWYWx1ZSkgeworICAgICAgICBpZiAobV9kZWZh
dWx0VmFsdWUpIHsKKyAgICAgICAgICAgIG1fZGVyaXZlZFZhbHVlID0gbV9kZWZhdWx0VmFsdWU7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgZGVmYXVsdCBkZWZhdWx0
IGFjY29yZGluZyB0byB0aGUgcmVxdWVzdGVkIHR5cGUuCisgICAgICAgICAgICBzd2l0Y2ggKG1f
cmVxdWVzdGVkVHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKKyAgICAg
ICAgICAgICAgICAgICAgbV9kZXJpdmVkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KFN0cmluZygpLCBDU1NfU1RSSU5HKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDU1NfVVJJOgorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
aXMgdGhlcmUgYSBiZXR0ZXIgY2hvaWNlIGZvciAiYSBVQS1kZXBlbmRlbnQgVVJJIGRlZmluZWQg
dG8gcG9pbnQgdG8gYSBub24tZXhpc3RlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZG9jdW1l
bnQgd2l0aCBhIGdlbmVyaWMgZXJyb3IgY29uZGl0aW9uIj8KKyAgICAgICAgICAgICAgICAgICAg
bV9kZXJpdmVkVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoImJhZDovL2JhZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBDU1NfQVRUUl9MRU5HVEg6CisgICAgICAgICAgICAgICAg
ICAgIG1fZGVyaXZlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjAsIENTU19Q
WCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NT
X0FUVFJfQU5HTEU6CisgICAgICAgICAgICAgICAgICAgIG1fZGVyaXZlZFZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjAsIENTU19ERUcpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU19BVFRSX1RJTUU6CisgICAgICAgICAgICAg
ICAgICAgIG1fZGVyaXZlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjAsIENT
U19NUyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTX0FUVFJfRlJFUVVFTkNZOgorICAgICAgICAgICAgICAgICAgICBtX2Rlcml2ZWRWYWx1ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC4wLCBDU1NfSFopOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU19BVFRSX0lOVEVHRVI6CisgICAg
ICAgICAgICAgICAgY2FzZSBDU1NfQVRUUl9OVU1CRVI6CisgICAgICAgICAgICAgICAgICAgIG1f
ZGVyaXZlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjAsIENTU19OVU1CRVIp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU19S
R0JDT0xPUjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyBub3Qgc3VwcG9ydGVkIHll
dAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVtYWluaW5n
IGNhc2VzIGFyZSB0aGUgc3BlY2lmaWMgdW5pdHMuCisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgbV9kZXJpdmVkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDAuMCwgc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihtX3JlcXVlc3RlZFR5cGUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgcmV0dXJuIG1fZGVyaXZlZFZhbHVlOworfQorICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9jc3MvQ1NTQXR0clZhbHVl
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTQXR0clZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
QXR0clZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NBdHRyVmFsdWUuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBL
YWkgQnLDvG5pbmcgPGthaUBncmFudXMubmV0PgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDU1NBdHRyVmFsdWVf
aAorI2RlZmluZSBDU1NBdHRyVmFsdWVfaAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ1NTQXR0clZhbHVlIDogcHVibGljIENTU1ByaW1pdGl2ZVZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIHsKKyAgICAgICAgQ1NTX0FUVFJfSU5URUdFUiA9IDB4MjAwMDAwLAorICAgICAgICBD
U1NfQVRUUl9OVU1CRVIsCisgICAgICAgIENTU19BVFRSX0xFTkdUSCwKKyAgICAgICAgQ1NTX0FU
VFJfQU5HTEUsCisgICAgICAgIENTU19BVFRSX1RJTUUsCisgICAgICAgIENTU19BVFRSX0ZSRVFV
RU5DWQorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NBdHRyVmFsdWU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbml0VHlwZXMg
dHlwZSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGVmYXVsdFZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NBdHRyVmFsdWUoYXR0ck5hbWUsIG5hbWVz
cGFjZVVSSSwgdHlwZSwgZGVmYXVsdFZhbHVlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkNTU0F0
dHJWYWx1ZSgpOworCisgICAgdW5zaWduZWQgc2hvcnQgcmVxdWVzdGVkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdGVkVHlwZTsgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRlZmF1
bHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFZhbHVlLmdldCgpOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBDU1NBdHRyVmFsdWUoY29uc3QgU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgIFVuaXRUeXBlcyB0eXBl
LCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkZWZhdWx0VmFsdWUpOworCitwcml2YXRl
OgorICAgIENTU0F0dHJWYWx1ZSgpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBkZXJpdmVkVmFsdWUoaW50IHByb3BJZCwgRWxlbWVudCogZWxlbWVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgc2VsZWN0b3JBdHRycyk7CisKKyAgICBBdG9taWNTdHJp
bmcgICAgICAgICAgICAgICAgbV9uYW1lc3BhY2VVUkk7CisgICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdGVkVHlwZTsgICAgLy8gdGhlIHNlY29uZCBwYXJhbWV0ZXIgb2Yg
YXR0cigpCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiAgIG1fZGVmYXVsdFZhbHVlOyAg
ICAgLy8gdGhlIHRoaXJkIHBhcmFtZXRlciBvZiBhdHRyKCkKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+ICAgbV9kZXJpdmVkVmFsdWU7ICAgICAvLyB0aGUgbGFzdCB1c2VkIGRlcml2ZWQg
dmFsdWUKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU0F0dHJW
YWx1ZV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2Nzcy9DU1NBdHRyVmFsdWUuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQkocmV2aXNpb24gNDQ5MzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFKiB5eWx2
YWwsIHZvaQogCiAlfQogCi0lZXhwZWN0IDQ5CislZXhwZWN0IDUwCiAKICVub25hc3NvYyBMT1dF
U1RfUFJFQwogCkBAIC0xMzY3LDcgKzEzNjcsMTUgQEAgdGVybToKICAgICAgICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwogICAgICAgJCQuc3RyaW5nID0gJDE7CiAgIH0K
LSAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBk
aW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0
cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCisvKiBDQ1MzIGFsbG93cyBxdWFsaWZpZWQgbmFtZXMg
aW4gc29tZSBwbGFjZXMsIGUuZywgZm9yIHRoZSBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgYXR0cigp
IGZ1bmN0aW9uLgorICAgVE9ETzogc3VwcG9ydCBlbXB0eSBwcmVmaXguICovCisgIHwgSURFTlQg
J3wnIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6UXVhbGlmaWVkTmFtZTsKKyAgICAgICQkLnByZWZpeCA9ICQxOwor
ICAgICAgJCQuc3RyaW5nID0gJDM7CisgIH0KKy8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFsbHkg
cGFyc2UgdGhlIG51bWJlciBmcm9tIGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBwdXQg
c29tZXRoaW5nIHRoYXQgdXNlcyAkJC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLwogICB8IERJ
TUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CiAgIHwgdW5hcnlfb3BlcmF0b3IgRElN
RU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KICAgfCBVUkkgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19VUkk7IH0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDQ5MzMpCisrKyBXZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtp
dEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEthaSBCcp9uaW5nIDxrYWlAZ3Jh
bnVzLm5ldD4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkNTU01lZGlhUnVsZS5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NBdHRyVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJDU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmgiCkBAIC05ODQsNiArOTg2LDgg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUhlaWdodDogICAgICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdl
PiB8IGF1dG8gfCBpbmhlcml0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOiAgICAgICAgICAg
ICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CisgICAgICAg
IGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiYXR0cigiKSkKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZUF0dHJMZW5ndGgocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9
PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRy
dWU7CiAgICAgICAgIGVsc2UKQEAgLTE5OTEsNiArMTk5NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZTRWYWx1ZXMoaW50IHByb3BJZCwKIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8IDxjb3VudGVy
PiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwgY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1b3RlIHwg
bm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAvLyBpbiBDU1MgMi4xIHRoaXMgZ290IHNvbWV3
aGF0IHJlZHVjZWQ6CiAvLyBbIDxzdHJpbmc+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUgfCBjbG9z
ZS1xdW90ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKKy8v
IENTUzMgZXh0ZW5kcyBhdHRyKFgpIHRvIGF0dHIoWCBbLFQgWyxEXV0pCiBib29sIENTU1BhcnNl
cjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKQEAgLTIwMDcsNyArMjAxMiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbnRlbnQo
aW50IHByb3BJZCwKICAgICAgICAgICAgIGlmICghYXJncykKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsLT5mdW5jdGlv
bi0+bmFtZSwgImF0dHIoIikpIHsKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNl
QXR0cihhcmdzKTsKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQXR0ckNvbnRl
bnQoYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWwtPmZ1bmN0aW9uLT5uYW1lLCAiY291bnRlcigiKSkgewpAQCAtMjA1MCwxNyAr
MjA1NSw1MSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNl
QXR0cihDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlQXR0ckNvbnRlbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzKQogewotICAg
IGlmIChhcmdzLT5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPENT
U0F0dHJWYWx1ZT4gcGFyc2VkVmFsdWUgPSBwYXJzZUF0dHJGdW5jdGlvbihhcmdzLCBGVW5rbm93
bik7CisgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAgIC8vIENoZWNrIHRoZSByZXF1ZXN0
ZWQgdHlwZS4gQ29udGVudCBzdXBwb3J0cyBzdHJpbmcgYW5kIHVybCBmcm9tIGF0dHIoKSBvbmx5
LgorICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXF1ZXN0ZWRUeXBlID0gcGFyc2VkVmFsdWUtPnJl
cXVlc3RlZFR5cGUoKTsKKyAgICAgICAgaWYgKHJlcXVlc3RlZFR5cGUgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcgJiYgcmVxdWVzdGVkVHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAKKyAgICAgICAgLy8gQ2hl
Y2sgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkZWZhdWx0
VmFsdWUgPSBwYXJzZWRWYWx1ZS0+ZGVmYXVsdFZhbHVlKCk7CisgICAgICAgIGlmIChkZWZhdWx0
VmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAh
PSByZXF1ZXN0ZWRUeXBlKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKK30KIAotICAgIENTU1BhcnNlclZh
bHVlKiBhID0gYXJncy0+Y3VycmVudCgpOworYm9vbCBDU1NQYXJzZXI6OnBhcnNlQXR0ckxlbmd0
aChpbnQgcHJvcElkLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIEFTU0VSVCAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKTsKKyAg
ICBBU1NFUlQgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImF0dHIo
IikpOworICAgIAorICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSBwYXJzZUF0dHJG
dW5jdGlvbih2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3MsIEZMZW5ndGh8RlBlcmNlbnR8Rk5vbk5lZyk7
CisgICAgQ1NTQXR0clZhbHVlKiBhdHRyVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NBdHRyVmFsdWUq
PihwYXJzZWRWYWx1ZS5nZXQoKSk7CisgICAgaWYgKCFhdHRyVmFsdWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVh
c2UoKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsgICAKK30KIAotICAgIGlmIChhLT51
bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCitQYXNzUmVmUHRyPENTU0F0dHJW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHJGdW5jdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIGFy
Z3MsIFVuaXRzIHVuaXRmbGFncykKK3sKKyAgICB1bnNpZ25lZCBudW1BcmdzID0gYXJncy0+c2l6
ZSgpOworICAgIGlmICghKG51bUFyZ3MgPT0gMSB8fCBudW1BcmdzID09IDMgfHwgbnVtQXJncyA9
PSA1KSkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmcgYXR0ck5hbWUgPSBhLT5zdHJp
bmc7CisgICAgCisgICAgQ1NTUGFyc2VyVmFsdWUqIGkgPSBhcmdzLT5jdXJyZW50KCk7CisgICAg
aWYgKGktPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBpLT51bml0ICE9
IENTU1BhcnNlclZhbHVlOjpRdWFsaWZpZWROYW1lKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBTdHJpbmcgYXR0ck5hbWUgPSBpLT5zdHJpbmc7CiAgICAgLy8gQ1NTIGFsbG93cyBpZGVu
dGlmaWVycyB3aXRoICItIiBhdCB0aGUgc3RhcnQsIGxpa2UgIi13ZWJraXQtbWFzay1pbWFnZSIu
CiAgICAgLy8gQnV0IEhUTUwgYXR0cmlidXRlIG5hbWVzIGNhbid0IGhhdmUgdGhvc2UgY2hhcmFj
dGVycywgYW5kIHdlIHNob3VsZCBub3QKICAgICAvLyBldmVuIHBhcnNlIHRoZW0gaW5zaWRlIGF0
dHIoKS4KQEAgLTIwNzAsNyArMjEwOSwxMzEgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUF0dAogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAg
ICAgICBhdHRyTmFtZSA9IGF0dHJOYW1lLmxvd2VyKCk7CiAgICAgCi0gICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoYXR0ck5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRU
Uik7CisgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVVSSTsKKyAgICBpZiAoaS0+dW5pdCA9PSBD
U1NQYXJzZXJWYWx1ZTo6UXVhbGlmaWVkTmFtZSkKKyAgICAgICAgbmFtZXNwYWNlVVJJID0gbV9z
dHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UoaS0+cHJlZml4KTsKKyAgICAKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogZGVmYXVsdFZhbHVlID0gMDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGRl
ZmF1bHRWYWx1ZUNhbmRpZGF0ZTsKKyAgICAKKyAgICAvLyBEZWZhdWx0IHR5cGUgaXMgc3RyaW5n
LgorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgcmVxdWVzdGVkVHlwZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOworICAgIGlmIChudW1BcmdzID49IDMpIHsKKyAgICAg
ICAgaSA9IGFyZ3MtPm5leHQoKTsKKyAgICAgICAgaWYgKGktPnVuaXQgIT0gQ1NTUGFyc2VyVmFs
dWU6Ok9wZXJhdG9yIHx8IGktPmlWYWx1ZSAhPSAnLCcpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgCisgICAgICAgIGkgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlmIChpLT51bml0
ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoaS0+aWQpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTdHJpbmc6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlVXJsOgorICAgICAgICAgICAgICAgIHJlcXVlc3RlZFR5cGUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVDb2xvcjoKKyAgICAgICAgICAgICAgICByZXF1ZXN0ZWRUeXBlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19SR0JDT0xPUjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMDogeworICAgICAgICAgICAgICAgIGludCB1bml0VHlwZSA9IHVuaXRGcm9tU3Ry
aW5nKGkpOworICAgICAgICAgICAgICAgIGlmICh1bml0VHlwZSAhPSAwKQorICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0ZWRUeXBlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcz4odW5pdFR5cGUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsKGktPnN0
cmluZywgIiUiKSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkVHlwZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKGktPmlk
IDwgQ1NTVmFsdWVJbnRlZ2VyIHx8IGktPmlkID4gQ1NTVmFsdWVGcmVxdWVuY3kpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJlcXVlc3RlZFR5cGUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPihDU1NBdHRyVmFsdWU6OkNT
U19BVFRSX0lOVEVHRVIgKyAoaS0+aWQgLSBDU1NWYWx1ZUludGVnZXIpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgd2hldGhl
ciByZXF1ZXN0ZWRUeXBlIGlzIHZhbGlkIGZvciB0aGUgcHJvcGVydHkgaW4gcXVlc3Rpb24uCisg
ICAgICAgIGlmICh1bml0ZmxhZ3MgIT0gRlVua25vd24pIHsKKyAgICAgICAgICAgIHN3aXRjaChy
ZXF1ZXN0ZWRUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NBdHRyVmFsdWU6OkNTU19B
VFRSX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIGlmICghKHVuaXRmbGFncyAmIEZJbnRl
Z2VyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU0F0dHJWYWx1ZTo6Q1NTX0FUVFJf
TlVNQkVSOgorICAgICAgICAgICAgICAgICAgICBpZiAoISh1bml0ZmxhZ3MgJiBGTnVtYmVyKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRToKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEodW5pdGZsYWdzICYgRlBlcmNlbnQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTQXR0clZhbHVlOjpDU1NfQVRUUl9MRU5HVEg6
CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQYXJzZXJWYWx1ZTo6UV9FTVM6CisgICAgICAgICAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzoKKyAgICAgICAgICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgorICAgICAgICAgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWDoKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfQ006CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX01NOgorICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjoK
KyAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6CisgICAgICAg
ICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgorICAgICAgICAgICAgICAg
ICAgICBpZiAoISh1bml0ZmxhZ3MgJiBGTGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIENTU0F0dHJWYWx1ZTo6Q1NTX0FUVFJfVElNRToKKyAgICAgICAgICAgICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM6CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1M6CisgICAgICAgICAgICAgICAgICAgIGlmICghKHVuaXRmbGFncyAmIEZU
aW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU0F0dHJWYWx1ZTo6Q1NTX0FUVFJf
QU5HTEU6CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzoK
KyAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOgorICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOgorICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOgorICAgICAgICAgICAgICAgICAg
ICBpZiAoISh1bml0ZmxhZ3MgJiBGQW5nbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTQXR0clZhbHVlOjpDU1NfQVRUUl9GUkVRVUVOQ1k6CisgICAgICAgICAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0haOgorICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19LSFo6CisgICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0RJTUVOU0lPTjoKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLy8gSGFuZGxlIGRlZmF1bHQgdmFsdWUsIGlmIGdpdmVuLgorICAgICAgICBpZiAobnVt
QXJncyA9PSA1KSB7CisgICAgICAgICAgICBpID0gYXJncy0+bmV4dCgpOworICAgICAgICAgICAg
aWYgKGktPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGktPmlWYWx1ZSAhPSAn
LCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGkgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgICAgICBpZiAodW5pdGZsYWdzID09IEZVbmtub3du
KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgY29ycmVjdD8gb3IgbWF5IGRl
ZmF1bHQgYmUgZS5nLiB1cmkgaWYgcmVxdWVzdGVkVHlwZSBpcyBzdHJpbmc/CisgICAgICAgICAg
ICAgICAgaWYgKHJlcXVlc3RlZFR5cGUgIT0gaS0+dW5pdCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZFR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBh
cnNlVVJMKGktPnN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBpcyBkZWZh
dWx0ID0gMCB0aGUgY29ycmVjdCBiZWhhdmlvciBpZiB0aGUgZm9sbG93aW5nIGlmIGZhaWxzPwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIXVyaS5pc051bGwoKSAmJiBtX3N0eWxlU2hlZXQpCisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVDYW5kaWRhdGUgPSBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh1cmkpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVDYW5kaWRhdGUg
PSBpLT5jcmVhdGVDU1NWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCF2YWxpZFVuaXQoaSwgdW5pdGZsYWdzLCBtX3N0
cmljdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGRl
ZmF1bHRWYWx1ZUNhbmRpZGF0ZSA9IGktPmNyZWF0ZUNTU1ZhbHVlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEF0IGxlYXN0IHNvIGZhciBvbmx5IHByaW1p
dGl2ZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZCBhcyBkZWZhdWx0cy4KKyAgICAgICAgICAgIGlmIChk
ZWZhdWx0VmFsdWVDYW5kaWRhdGUgJiYgZGVmYXVsdFZhbHVlQ2FuZGlkYXRlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihkZWZhdWx0VmFsdWVDYW5kaWRhdGUuZ2V0KCkpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHJldHVybiBDU1NBdHRyVmFsdWU6OmNyZWF0ZShhdHRyTmFtZSwg
bmFtZXNwYWNlVVJJLCByZXF1ZXN0ZWRUeXBlLCBkZWZhdWx0VmFsdWUpOwogfQogCiBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZENvbG9yKCkKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCShyZXZpc2lvbiA0NDkzMykKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogICAgIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVl
OworICAgIGNsYXNzIENTU0F0dHJWYWx1ZTsKICAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKICAgICBj
bGFzcyBDU1NSdWxlOwogICAgIGNsYXNzIENTU1J1bGVMaXN0OwpAQCAtNzUsNyArNzYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQs
IGNvbnN0IGludCogcHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBh
cnNlQ29udGVudChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAKLSAgICAgICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VBdHRyKENTU1BhcnNlclZhbHVlTGlzdCogYXJncyk7CisgICAg
ICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQXR0ckNvbnRlbnQoQ1NTUGFyc2VyVmFsdWVM
aXN0KiBhcmdzKTsKKyAgICAgICAgYm9vbCBwYXJzZUF0dHJMZW5ndGgoaW50IHByb3BJZCwgQ1NT
UGFyc2VyVmFsdWUqIHZhbHVlLCBib29sIGltcG9ydGFudCk7CiAKICAgICAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKIApAQCAtMjc5LDYgKzI4MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgYm9vbCB2YWxpZFVuaXQoQ1NT
UGFyc2VyVmFsdWUqLCBVbml0cywgYm9vbCBzdHJpY3QpOwogICAgICAgICAKKyAgICAgICAgUGFz
c1JlZlB0cjxDU1NBdHRyVmFsdWU+IHBhcnNlQXR0ckZ1bmN0aW9uKENTU1BhcnNlclZhbHVlTGlz
dCogYXJncywgVW5pdHMgdW5pdGZsYWdzKTsKKwogICAgICAgICBmcmllbmQgY2xhc3MgVHJhbnNm
b3JtT3BlcmF0aW9uSW5mbzsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkocmV2
aXNpb24gNDQ5MzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksMTEgKzQ5LDEzIEBAIHN0cnVjdCBDU1NQYXJzZXJWYWx1ZSB7CiAgICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmdW5jdGlvbjsKICAgICB9OwogICAgIGVudW0gewotICAgICAg
ICBPcGVyYXRvciA9IDB4MTAwMDAwLAotICAgICAgICBGdW5jdGlvbiA9IDB4MTAwMDAxLAotICAg
ICAgICBRX0VNUyAgICA9IDB4MTAwMDAyCisgICAgICAgIE9wZXJhdG9yICAgICAgICA9IDB4MTAw
MDAwLAorICAgICAgICBGdW5jdGlvbiAgICAgICAgPSAweDEwMDAwMSwKKyAgICAgICAgUV9FTVMg
ICAgICAgICAgID0gMHgxMDAwMDIsCisgICAgICAgIFF1YWxpZmllZE5hbWUgICA9IDB4MTAwMDAz
ICAvLyBDU1MzIE5hbWVzcGFjZXMgTW9kdWxlCiAgICAgfTsKICAgICBpbnQgdW5pdDsKKyAgICBD
U1NQYXJzZXJTdHJpbmcgcHJlZml4OyAgICAgLy8gZm9yIENTUzMgUXVhbGlmaWVkTmFtZSBvbmx5
CiAgICAgCiAgICAgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3Q7CiAgICAgCkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiA0NDkzMykKKysrIFdlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYxLDQgKzk2MSw5IEBAIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3QKICAgICAgICAgYWRkU3VicmVzb3Vy
Y2VVUkwodXJscywgc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZS5zdHJpbmcpKTsKIH0K
IAorUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRlcml2
ZWRWYWx1ZShpbnQsIEVsZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDQ0OTMzKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBQYWly
OwogY2xhc3MgUmVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU3RyaW5nSW1wbDsKK2Ns
YXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBMZW5ndGg7CiAKQEAgLTE2OCw2ICsxNjksOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mLCBjb25zdCBDU1NTdHlsZVNoZWV0Kik7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRlcml2ZWRWYWx1ZShpbnQgcHJvcElkLCBFbGVtZW50KiBl
bGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBzZWxlY3RvckF0dHJzKTsKKwogcHJv
dGVjdGVkOgogICAgIC8vIEZJWE1FOiBpbnQgdnMuIHVuc2lnbmVkIG92ZXJsb2FkaW5nIGlzIHRv
byBzdWJ0bGUgdG8gZGlzdGluZ3Vpc2ggdGhlIGNvbG9yIGFuZCBpZGVudGlmaWVyIGNhc2VzLgog
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKGludCBpZGVudCk7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkocmV2aXNpb24gNDQ5MzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNiw2ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBLYWkgQnKfbmlu
ZyA8a2FpQGdyYW51cy5uZXQ+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4NDcsNiArMjg0OCw4
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBpZiAodmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAorICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gZGVyaXZlZFZhbDsgICAvLyB1c2VkIHRvIHJlc29sdmUgQ1NTMyBhdHRyKCkgZnVu
Y3Rpb24KKwogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7
CiAKICAgICBMZW5ndGggbDsKQEAgLTM0ODIsNiArMzQ4NSwxOSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQ6CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgeworICAgICAgICAgICAg
Ly8gQWxsb3cgY3JlYXRpb24gb2YgYSBkZXJpdmVkIHZhbHVlLiBDdXJyZW50bHkgdXNlZCBmb3Ig
Q1NTMyBhdHRyKCkuCisgICAgICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdG8gdXNlIGxlc3Mg
ZXhwbGljaXQgY29kZSBoZXJlIGJlZm9yZSBleHRlbmRpbmcgdGhpcyB0byBhbGwgcHJvcGVydGll
cyBzdXBwb3J0ZWQgYnkgQ1NTMyBhdHRyKCkuCisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0FUVFIpIHsKKyAg
ICAgICAgICAgICAgICBkZXJpdmVkVmFsID0gcHJpbWl0aXZlVmFsdWUtPmRlcml2ZWRWYWx1ZShp
ZCwgbV9lbGVtZW50LCBtX3NlbGVjdG9yQXR0cnMpOworICAgICAgICAgICAgICAgIHByaW1pdGl2
ZVZhbHVlID0gZGVyaXZlZFZhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9zdHlsZS0+
c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFVuaXF1ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9w
YXJlbnRTdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAg
ICAgICAvLyAraW5oZXJpdCArYXV0bwogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlXaWR0
aCB8fCBpZCA9PSBDU1NQcm9wZXJ0eU1pbldpZHRoIHx8IGlkID09IENTU1Byb3BlcnR5TWF4V2lk
dGgpIHsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNpYykgewpAQCAtMzYyMSw2ICszNjM3LDE5IEBA
IHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgfQogICAg
IGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoK
KyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgICAgICAvLyBBbGxvdyBjcmVh
dGlvbiBvZiBhIGRlcml2ZWQgdmFsdWUuIEN1cnJlbnRseSB1c2VkIGZvciBDU1MzIGF0dHIoKS4K
KyAgICAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0byB1c2UgbGVzcyBleHBsaWNpdCBjb2Rl
IGhlcmUgYmVmb3JlIGV4dGVuZGluZyB0aGlzIHRvIGFsbCBwcm9wZXJ0aWVzIHN1cHBvcnRlZCBi
eSBDU1MzIGF0dHIoKS4KKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRUUikgeworICAgICAgICAgICAgICAg
IGRlcml2ZWRWYWwgPSBwcmltaXRpdmVWYWx1ZS0+ZGVyaXZlZFZhbHVlKGlkLCBtX2VsZW1lbnQs
IG1fc2VsZWN0b3JBdHRycyk7CisgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBkZXJp
dmVkVmFsLmdldCgpOworICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zdHlsZVR5cGUoKSA9
PSBOT1BTRVVETykKKyAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VW5pcXVlKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX3BhcmVudFN0eWxlLT5z
ZXRVbmlxdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJp
bnNpYykgewogICAgICAgICAgICAgbCA9IExlbmd0aChJbnRyaW5zaWMpOwogICAgICAgICAgICAg
YXBwbHkgPSB0cnVlOwpAQCAtMzkyOSwyNCArMzk1OCwyMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWwgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgLy8gQWxsb3cgY3JlYXRpb24g
b2YgYSBkZXJpdmVkIHZhbHVlLiBDdXJyZW50bHkgdXNlZCBmb3IgQ1NTMyBhdHRyKCkuCisgICAg
ICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdG8gdXNlIGxlc3MgZXhwbGljaXQgY29kZSBoZXJl
IGJlZm9yZSBleHRlbmRpbmcgdGhpcyB0byBhbGwgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgQ1NT
MyBhdHRyKCkuCisgICAgICAgICAgICBpZiAodmFsLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19BVFRSKSB7CisgICAgICAgICAgICAgICAgZGVyaXZlZFZhbCA9IHZh
bC0+ZGVyaXZlZFZhbHVlKGlkLCBtX2VsZW1lbnQsIG1fc2VsZWN0b3JBdHRycyk7CisgICAgICAg
ICAgICAgICAgdmFsID0gZGVyaXZlZFZhbC5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9z
dHlsZS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgICAgICAgICAgICAgIG1fc3R5
bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIHN3aXRjaCAodmFsLT5wcmltaXRpdmVUeXBlKCkpIHsKICAgICAgICAgICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOgogICAgICAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRDb250ZW50KHZhbC0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19BVFRSOiB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lm
aWVkIGZvciBhbiBhdHRyKGZvbyk/Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5z
dHlsZVR5cGUoKSA9PSBOT1BTRVVETykKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcmVudFN0eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAg
UXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCB2YWwtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgp
LCBudWxsQXRvbSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQobV9l
bGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cikuaW1wbCgpLCBkaWRTZXQpOwotICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB0
aGUgZmFjdCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKLSAgICAg
ICAgICAgICAgICAgICAgbV9zZWxlY3RvckF0dHJzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOiB7CiAgICAgICAgICAg
ICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1
ZSo+KHZhbCk7CiAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQoaW1hZ2Ut
PmNhY2hlZEltYWdlKG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpLCBkaWRTZXQp
OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gNDQ5MzMpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEthaSBCcp9uaW5n
IDxrYWlAZ3JhbnVzLm5ldD4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCShyZXZpc2lvbiA0NDkzMykKKysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYxMiwzICs2MTIsMjIgQEAgZmlsbAogc3Ryb2tlCiAj
YWxsCiAjbm9uZQorCisjCisjIENTUzMgYXR0cigpIHR5cGVzCisjCitzdHJpbmcKK3VybAorY29s
b3IKK2ludGVnZXIKK251bWJlcgorbGVuZ3RoCithbmdsZQordGltZQorZnJlcXVlbmN5CisjZ3IK
KyNyZW0KKyN2dworI3ZoCisjdm0KKyMlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDkzOSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA5
LTA2LTIyICBLYWkgQnKfbmluZyAgPGthaUBncmFudXMubmV0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNjYwOQorICAgICAgICAKKyAgICAgICAgQWRkZWQgcGFydGlhbCBzdXBw
b3J0IGZvciBDU1MzIHZlcnNpb24gb2YgdGhlIGF0dHIoKSBmdW5jdGlvbi4KKworICAgICAgICAq
IGNzczMvVmFsdWVzQW5kVW5pdHM6IEFkZGVkLgorICAgICAgICAqIGNzczMvVmFsdWVzQW5kVW5p
dHMvY29udGVudC1hdHRyLWRlZmF1bHRzLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL1Zh
bHVlc0FuZFVuaXRzL2NvbnRlbnQtYXR0ci54aHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9W
YWx1ZXNBbmRVbml0cy93aWR0aF9oZWlnaHQtYXR0ci54aHRtbDogQWRkZWQuCisgICAgICAgICog
Y3NzMy9zdXBwb3J0L2ZhaWx1cmUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3N1cHBvcnQv
c3VjY2Vzcy5wbmc6IEFkZGVkLgorCiAyMDA5LTA2LTIyICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogTGF5
b3V0VGVzdHMvY3NzMy9WYWx1ZXNBbmRVbml0cy9jb250ZW50LWF0dHItZGVmYXVsdHMueGh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMy9WYWx1ZXNBbmRVbml0cy9jb250ZW50LWF0
dHItZGVmYXVsdHMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jc3MzL1ZhbHVl
c0FuZFVuaXRzL2NvbnRlbnQtYXR0ci1kZWZhdWx0cy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgor
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisgICAg
ICB4bWxuczp0ZXN0PSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QiCisgICAgICB4bWxuczp0
ZXN0Mj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0MiI+CisgPGhlYWQ+CisgIDx0aXRsZT5j
b250ZW50IHByb3BlcnR5IHdpdGggYXR0cigpIHRlc3RpbmcgZGVmYXVsdCB2YWx1ZXM8L3RpdGxl
PgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgQG5hbWVzcGFjZSB0ZXN0ICJodHRwOi8v
d3d3LmV4YW1wbGUuY29tL3Rlc3QiOworICAgQG5hbWVzcGFjZSBuczIgImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20vdGVzdDIiOworICAgLnRleHQxOmJlZm9yZSB7IGNvbnRlbnQgOiBhdHRyKHRleHQx
KSB9CisgICAudGV4dDI6YmVmb3JlIHsgY29udGVudCA6IGF0dHIodGV4dDEsIHN0cmluZywgInN1
Y2Nlc3MiKSB9CisgICAuaW1hZ2UxIHsgY29udGVudCA6IGF0dHIoc3JjMSwgdXJsKSB9CisgICAu
aW1hZ2UyIHsgY29udGVudCA6IGF0dHIobnMyfHNyYywgdXJsLCB1cmwoIi4uL3N1cHBvcnQvc3Vj
Y2Vzcy5wbmciKSkgfQorICA8L3N0eWxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxkaXY+Cis8dGFi
bGUgY2xhc3M9InQxIiBib3JkZXI9IjEiPgorICA8dHI+CisgICAgPHRkPlVucmVzb2x2ZWQgdGV4
dCBhdHRyaWJ1dGUgd2l0aG91dCBkZWZhdWx0PC90ZD4KKyAgICA8dGQgY2xhc3M9InRleHQxIiB0
ZXh0PSJmYWlsdXJlIj48L3RkPgorICAgIDx0ZD4mbHQ7LSBzaG91bGQgYmUgZW1wdHk8L3RkPgor
ICA8L3RyPgorICA8dHI+CisgICAgPHRkPlVucmVzb2x2ZWQgdGV4dCBhdHRyaWJ1dGUgd2l0aCBk
ZWZhdWx0PC90ZD4KKyAgICA8dGQgY2xhc3M9InRleHQyIiB0ZXN0OnRleHQ9ImZhaWx1cmUiPjwv
dGQ+CisgICAgPHRkPiZsdDstIHNob3VsZCBiZSAic3VjY2VzcyI8L3RkPgorICA8L3RyPgorICA8
dHI+CisgICAgPHRkPlVucmVzb2x2ZWQgaW1hZ2UgYXR0cmlidXRlIHdpdGhvdXQgZGVmYXVsdDwv
dGQ+CisgICAgPHRkIGNsYXNzPSJpbWFnZTEiIHNyYz0iLi4vc3VwcG9ydC9mYWlsdXJlLnBuZyI+
ZmFpbHVyZTwvdGQ+CisgICAgPHRkPiZsdDstIHNob3VsZCBzaG93IHVucmVzb2x2ZWQgaW1hZ2U8
L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPlVucmVzb2x2ZWQgaW1hZ2UgYXR0cmlidXRl
IHdpdGggZGVmYXVsdDwvdGQ+CisgICAgPHRkIGNsYXNzPSJpbWFnZTIiIHRlc3Q6c3JjPSIuLi9z
dXBwb3J0L2ZhaWx1cmUucG5nIj5mYWlsdXJlPC90ZD4KKyAgICA8dGQ+Jmx0Oy0gc2hvdWxkIGJl
ICJzdWNjZXNzIjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvY3NzMy9W
YWx1ZXNBbmRVbml0cy9jb250ZW50LWF0dHIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3NzMy9WYWx1ZXNBbmRVbml0cy9jb250ZW50LWF0dHIueGh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9jc3MzL1ZhbHVlc0FuZFVuaXRzL2NvbnRlbnQtYXR0ci54aHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
SVNPLTg4NTktMSI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx
LjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0
bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiCisgICAgICB4bWxuczp0ZXN0PSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3Qi
CisgICAgICB4bWxuczp0ZXN0Mj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0MiI+CisgPGhl
YWQ+CisgIDx0aXRsZT5jb250ZW50IHByb3BlcnR5IHdpdGggYXR0cigpPC90aXRsZT4KKyAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgIEBuYW1lc3BhY2UgdGVzdCAiaHR0cDovL3d3dy5leGFt
cGxlLmNvbS90ZXN0IjsKKyAgIEBuYW1lc3BhY2UgbnMyICJodHRwOi8vd3d3LmV4YW1wbGUuY29t
L3Rlc3QyIjsKKyAgIC50ZXh0MTpiZWZvcmUgeyBjb250ZW50IDogYXR0cih0ZXh0KSB9CisgICAu
aW1hZ2UxIHsgY29udGVudCA6IGF0dHIoc3JjLCB1cmwpIH0KKyAgIC50ZXh0MjpiZWZvcmUgeyBj
b250ZW50IDogYXR0cih0ZXN0fHRleHQpIH0KKyAgIC5pbWFnZTIgeyBjb250ZW50IDogYXR0cih0
ZXN0fHNyYywgdXJsKSB9CisgICAudGV4dDM6YmVmb3JlIHsgY29udGVudCA6IGF0dHIobnMyfHRl
eHQpIH0KKyAgIC5pbWFnZTMgeyBjb250ZW50IDogYXR0cihuczJ8c3JjLCB1cmwpIH0KKyAgPC9z
dHlsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8ZGl2PgorPHRhYmxlIGNsYXNzPSJ0MSIgYm9yZGVy
PSIxIj4KKyAgPHRyPgorICAgIDx0ZD5UZXh0IHdpdGhvdXQgbmFtZXNwYWNlPC90ZD4KKyAgICA8
dGQgY2xhc3M9InRleHQxIiB0ZXh0PSJzdWNjZXNzIj48L3RkPgorICA8L3RyPgorICA8dHI+Cisg
ICAgPHRkPkltYWdlIHdpdGhvdXQgbmFtZXNwYWNlPC90ZD4KKyAgICA8dGQgY2xhc3M9ImltYWdl
MSIgc3JjPSIuLi9zdXBwb3J0L3N1Y2Nlc3MucG5nIj5mYWlsdXJlPC90ZD4KKyAgPC90cj4KKyAg
PHRyPgorICAgIDx0ZD5UZXh0IHdpdGggc2FtZSBuYW1lc3BhY2UgcHJlZml4PC90ZD4KKyAgICA8
dGQgY2xhc3M9InRleHQyIiB0ZXN0OnRleHQ9InN1Y2Nlc3MiPjwvdGQ+CisgIDwvdHI+CisgIDx0
cj4KKyAgICA8dGQ+SW1hZ2Ugd2l0aCBzYW1lIG5hbWVzcGFjZSBwcmVmaXg8L3RkPgorICAgIDx0
ZCBjbGFzcz0iaW1hZ2UyIiB0ZXN0OnNyYz0iLi4vc3VwcG9ydC9zdWNjZXNzLnBuZyI+ZmFpbHVy
ZTwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+VGV4dCB3aXRoIGRpZmZlcmVudCBuYW1l
c3BhY2UgcHJlZml4PC90ZD4KKyAgICA8dGQgY2xhc3M9InRleHQzIiB0ZXN0Mjp0ZXh0PSJzdWNj
ZXNzIj48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPkltYWdlIHdpdGggZGlmZmVyZW50
IG5hbWVzcGFjZSBwcmVmaXg8L3RkPgorICAgIDx0ZCBjbGFzcz0iaW1hZ2UzIiB0ZXN0MjpzcmM9
Ii4uL3N1cHBvcnQvc3VjY2Vzcy5wbmciPmZhaWx1cmU8L3RkPgorICA8L3RyPgorPC90YWJsZT4K
KzwvZGl2PgorPHA+CitUaGUgdGFibGUgYWJvdmUgc2hvdWxkIHNob3cgInN1Y2Nlc3MiIGluIGFs
bCByb3dzLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL2NzczMvVmFsdWVzQW5kVW5pdHMvd2lkdGhfaGVpZ2h0LWF0
dHIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMy9WYWx1ZXNBbmRVbml0cy93
aWR0aF9oZWlnaHQtYXR0ci54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NzczMv
VmFsdWVzQW5kVW5pdHMvd2lkdGhfaGVpZ2h0LWF0dHIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IklTTy04ODU5LTEiPz4K
KzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25h
bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9u
YWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorICAg
ICAgeG1sbnM6dGVzdD0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0IgorICAgICAgeG1sbnM6
dGVzdDI9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdDIiPgorIDxoZWFkPgorICA8dGl0bGU+
d2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIHdpdGggYXR0cigpPC90aXRsZT4KKyAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KKyAgIEBuYW1lc3BhY2UgdGVzdCAiaHR0cDovL3d3dy5leGFtcGxl
LmNvbS90ZXN0IjsKKyAgIEBuYW1lc3BhY2UgbnMyICJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rl
c3QyIjsKKyAgIC5pbWFnZTEgeyB3aWR0aDogYXR0cih3aWR0aFZhbHVlLCBsZW5ndGgpOyBoZWln
aHQ6IGF0dHIoaGVpZ2h0VmFsdWUsIHB4KTsgfQorICAgLmltYWdlMiB7IGNvbnRlbnQ6IGF0dHIo
c3JjLCB1cmwpOyB3aWR0aDogYXR0cih3aWR0aFZhbHVlLCBsZW5ndGgpOyBoZWlnaHQ6IGF0dHIo
aGVpZ2h0VmFsdWUsIHB4KTsgfQorICAgLmltYWdlMiB7IGNvbnRlbnQ6IGF0dHIoc3JjLCB1cmwp
OyB3aWR0aDogYXR0cih3aWR0aFZhbHVlLCBsZW5ndGgsIDUwcHgpOyBoZWlnaHQ6IGF0dHIoaGVp
Z2h0VmFsdWUsIHB4LCA1MHB4KTsgfQorICA8L3N0eWxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxk
aXY+Cis8dGFibGUgY2xhc3M9InQxIiBib3JkZXI9IjEiPgorICA8dHI+CisgICAgPHRkPkltYWdl
IHdpdGggd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzPC90ZD4KKyAgICA8dGQ+CisgICAgICAg
PGltZyBjbGFzcz0iaW1hZ2UxIiBzcmM9Ii4uL3N1cHBvcnQvc3VjY2Vzcy5wbmciIHdpZHRoVmFs
dWU9IjUwcHgiIGhlaWdodFZhbHVlPSI1MC4wIiAvPgorICAgIDwvdGQ+CisgIDwvdHI+CisgIDx0
cj4KKyAgICA8dGQ+SW1hZ2Ugd2l0aCBjb250ZW50LCB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0
ZXM8L3RkPgorICAgIDx0ZCBjbGFzcz0iaW1hZ2UyIiBzcmM9Ii4uL3N1cHBvcnQvc3VjY2Vzcy5w
bmciIHdpZHRoVmFsdWU9IjUwcHgiIGhlaWdodFZhbHVlPSI1MC4wIiA+ZmFpbHVyZTwvdGQ+Cisg
IDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+SW1hZ2Ugd2l0aCBjb250ZW50LCB3aWR0aCBhbmQgaGVp
Z2h0IGF0dHJpYnV0ZXMgYW5kIGRlZmF1bHQgdmFsdWVzPC90ZD4KKyAgICA8dGQgY2xhc3M9Imlt
YWdlMiIgc3JjPSIuLi9zdXBwb3J0L3N1Y2Nlc3MucG5nIiB3aWR0aFZhbHVlPSIxMDAiIGhlaWdo
dFZhbHVlPSIxMDAuMGVtIiA+ZmFpbHVyZTwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPC9kaXY+
Cis8cD4KK1RoZSB0YWJsZSBhYm92ZSBzaG91bGQgc2hvdyAic3VjY2VzcyIgd2l0aCBzcXVhcmUg
c2l6ZSBpbiBhbGwgcm93cy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9jc3MzL3N1cHBvcnQvZmFpbHVyZS5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvY3NzMy9zdXBwb3J0L2ZhaWx1cmUucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5
cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSmdBQUFBbUNBSUFB
QUMzWU1WekFBQUI2MmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUd0CmtzOUxGR0VjeHA4WnE1V01S
VEk5SmJ5SGtJSXBGcmREUXVUWXJtYlNZZGsydFRxTk0rUHUyczQ0ekl5YUlTUmR1bnVvV3lCV1JQ
K0EKSFFxa1V4ZUpDTXFDL29kQWtDQmtldDU1R2JaRDRxVUh2dS83ZWI4ODc2L3Yrd0lkWlNzSVdq
b0F6NC9ENnJXcll2cjJIWkg3QmcxNQpkT01pY3BZZEJTT1Z5ZzFhRHREZUY3cXB6K2ZsV3YzRFY2
d2ZreC83b3VuMWU0KzJ1MTRjTUNsTDUwTnVDR2dHRTZmcWlrM0pNNHByCmtwZmlJS2FuSWRsdVdB
NTVoV3lFdFdxSi9JcWNyeXQrSTNsRzhRZkppM1pkenQwaEYzeW42UU42Si9tUzQwWTIyU1E3VG1S
NzVPZmsKcXVmTmMzMzlGL21zSFlTYzJ5SElaMlJkMkZQTER3QnprWjdMN2R4a0MzajlVQjZ2blJ2
NENmUUs0TzNqZG01M0o2MlYxdGNaelJZSAowK1cwcmszZzZKTWsyWjBDY3VlQS9hOUo4bnN6U2Za
ZmN1L3Z3TmFldlJCeVArWFd0b0hEeHVyT3lnOTg0aDJvOUkzK3phb3VxYXNBCmJHd0JVNHdKeGpN
VEdGZ0NldTRDRlhMTmhGNHNacUZxQ0tuanBhYnZlcFlZTDZmRC85ZDRyUVcrVTZvamJFKzQvcTJi
N0U4eXpObHcKckpxeDQ1WkhNNTZ6SmlvWm80UW1mTGp3WUVGZ0hEeWdlbU02Y0t3YldEdXRJLy8w
dmZGdVZXYitWdXplVDJ0WG1nK1d3MmE5RVlzUgovbkRYRU5kOSs0SWhCZ3VGSWZ3QjlDcUp0OUd4
b3hFQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQXJnU1VSQlZIZ0I3WnBsCnpCWEpFb1lY
ZDNkM2QrY1NuT0FTSUxpN2UzQVMzSDlnd1NGQWNBZ0V5U1c0dXdRUEd0emQzZTZ6VzNjN3pVelBu
RDdBSnQrU3c0K1AKbnVxM3E2V2txNnBQdUcvZnZ2MFIrdmZ2UDRIdy8vNHRoSGJ3NXdtRUJQbWI2
RUZJa0NGQi9pWW44SnRzSTJTUklVRzZUdURxMWFzWApMMTUwa2Y5WndwY3ZYeFl2WHJ4djM3NS9k
aG9MN3NUL1Y2NWNPWDM2OU92WHJ5M2d2eHJDOVBiL1BuNzgrUFRwMDF1M2JuMzQ4RUVmCmRmMzY5
VEpseXNqU0prK2VySGY5WlB2VnExYytITzdkdTFla1NCSG1qUll0MnVmUG4zMlFqcTRIRHg1TW1q
U0paVHZvUC9ENThPSEQKV2JObTFhMWJOMEdDQkVvNEtWT203TjI3OTZOSGozNkFvUnJDam80ZlB6
NWp4b3pXclZzM2FkSms5T2pScXN2ZCtNTkJPbnIwYUpZcwpXZUxGaTVjaFE0YmN1WFBueUpFalU2
Wk1xVktsaWg4L2ZwUW9VZFJDdDI3ZHFnODhmLzU4b2tTSnBKZkc0OGVQOWQ0ZmE3OTQ4YUpCCmd3
Ymh3b1ZyMWFxVkY0Y0tGU3JJcE9uU3BmUENHT2xUcGt4aFlPVElrY2VPSFdzRUtDS2F4Rkd1V0xI
aXpaczNpcWczU3BVcXBZNkYKMWViTm03ZEdqUnB5R2pGanh0eTRjYU1PdG04ZlBueVl3MWVjYVVT
TUdQSHk1Y3RlSEw0VEpBcU9DUFhCcWgwaFFvUVVLVktnL2cwYgpOa1NYM2V5WUF6VVVmSlVxVmZC
NGJvdzlCV1VzVnF5WWNDdFhycHpYd0s1ZHV3cW1lUEhpWGhnamZkaXdZV3ByeDQ0ZE0yS0VPR2ZP
CkhFSDI2ZFBIQ051OGViTmlkZmJzV2NHOGYvOGVHNEllUFhwMGJNTTQwSWVJRkdQRWlNSHdYTGx5
VFowNmRmLysvU3p5MHFWTFBrTysKRXlSUXRhWWtTWkpNbkRoeDdkcTFzTGg3OTY2TjQwS1dDRnM0
OU92WHoyZldnRjJvRktvanJIcjI3T21GMzdCaGcyREtseS92aFRIUwpjVk15RU5QaDBJMFlJVzda
c2tXUWFMQVJoc3BHalJvVlRQTGt5WFhBaFFzWFpHQ0xGaTEwZXNBMnBpL0hXS0pFaWVmUG53ZkVD
K0E3ClFVTENtR1Q2eG8wYlc3TFFZUVE3eVpJbEV3NExGaXpRdTRKdGQrdldUZmlNR1RQR2EreTFh
OWNFVTcxNmRTK01rVDUrL0hnWjZPTzMKWmFDU1IvZnUzWTJzSUtaTm14WnUrRmdkUU5RalUrVEpr
MGVuQjJ3UEhUcVVnZUhEaHlkNERBaFdBR2Y2d1hKbGVpOGZLNzFlZnpObgp6cng5Ky9ZNGNlSUFh
TmV1SFQ3QkN4bVFqcEVKUnJnWjhhbFRweFpySU5neEFyeUkzRGZTSmJHU0Z3dzZ3WUgwRWloNHdX
U0ZTb01GCmR1N2NPV2s0cmpvdkprTEh2bWZPbkVtN2N1WEtYUHorWUwzWEtjaWtTWk5LZDZ4WXNY
U2NmVHRidG16VHBrMERUNGhiczJaTkluTDcKc1RwU0pBUkZiZ3U5UzdWUlcxbHdzSUtNRkNtU01N
bWFOYXZpWm15b1phQTBSZ0JFTGtMK0preVlVQWRzMjdaTlBrdVhMcTNUL2RzNwpkKzY4Zi84K0dN
ekFIK25vZFFwU3JZYUl6Z0cxLytTS0ZqRGhLNzZhak1WK3JFS3FJRmtkcGVyU0cySXh3UXBTN1U0
cHJzNVRieXZiClRaOCt2VTdYMjZJV3NXUEhWc1JseTViTm56K2ZUN0l5a2dkRkQ5Z2dIUkFNRjJS
QXNBN3dGQ1RLcnVPQ2FoT3NnOGMwQ2NjSm9HclYKcWtYZUdSUUh3SmFDRkRFcndWak9vdHgxUUEz
QXJ3aFA4akV2NW5KV3N1QkRodzZSZmpScTFBZ25XYjkrL2RXclZ3ZDFrcWRPbldLVwpOR25TQkh1
MU9hWEZpWWhUUlFaZTYvYW5FMmdSTVhPK2hKUmtZUERaczJjUG9kUFhyMS85QnpwNmxXeFV3d0dR
VDdFWVRzM1k2MFZVCmdsUUc1NFVrcHFXTFpEOXUzTGhlR0psOTFhcFYvL25ySDFaRkJyeDM3OTds
eTVjSEt3OEprVlFpNXpXam0vNy9PMS92UUxQSWdzazMKZEtKOW00RHc1Y3VYZ3dZTjRxNXUzNzQ5
ZkxwMDZZSmlkdXpZa1FxSVBSK1ZmdmlmdGNBK2ZmcGt6eG1ra29veU9LL2hWR2Zvd3J0NApBYUNM
SU0rY09TT1lhdFdxRWJBb1hmRVo2TzZTNlJEL3dvVUxTZWQwN1NlZkxsdTJySHVJVUp5Q3BFN0l4
VWJmamgwN2hBdXJSRERVCldUQTF1cWhJa1JwMzZOREJ5UEhtelp0a24yUlVBd1lNRUVEbnpwMlJa
WThlUFdiUG5wMDRjZUlSSTBZWUI3cUp5aVg0QzFJR0JxdDIKNnBURjROeXpLd3I3cGUwZkU4bnNo
QmRQbmp3aEg4QTBNVWZLSnRpbDRtUFRZREhDNnI5Ly9kT0hjQTFUYU5NcGpyWlRrQ296b3d4dApy
RVRqNkh5Y1BuVUFWak51M0RnOTFDU2x3V0lRLzhpUkkwbkFWWUxvV0lyWHA0MGdkYzMxNHFQVFVT
bjVEQ2hJT1JBVnZ1bE1WRnNpCmdGNjlldFd1WFh2NjlPa2swTlJ5S1NBc1diS0V5OFhlVCtJSWhT
ZFZVc3lhbytZSzU2WWpqQ0pOQ3BER3FJeFNHa1NZY25Ed2F0cTAKNlpBaFE2aFJVVENrZW52bnpw
MTM3OTQ1OFBvbkdTVHJLRkNnQU1lcTA2VXR4UlRzakwyNWU5MFV5bDJ5cXdNSERyaDdGVVdLOWZo
dwpSYkZzU0Npd2E5Y3VmN3o0SGl6TUJ5YjJTdElsR1BJSFlnSlpQRExnQUgzRzZsM1VzMlJVc0lV
cW1EZ3RFdTlNMlpleUhMYlZzbVZMCjRXdnpsOHNHTHdvU1Y4dzFpU3BodUlnTm9VSkI4Wjg5ZTRa
RHcwVnpXVUlSc0E5bjVWcDlISUFhN3AraUtKamVJSjBnUktTcXFWZTkKZFlDMHFaU2kyZm55NVhO
M0tZcVl0UXJLcUc3eXNrYlcwYWxUSndwRGJkdTJYYmx5SmVJa0ZsVkRqQTIxQzk2WGpBQS9vcTRS
MHE1VQpxUklENXMyYjUrN3lvZWhsYUwvNS91NHpWdDUxL3J5b0NKYXoxdW1PdHFUYmd3Y1BkdEFE
ZmxLc2dIL1ZxbFY5a0ZRYzBhZUFGWGxKClJ0MG5oc3ZGSGtRUnVXdDQ0RU9EZmFiamdwUWNobWNU
SDVpeHkybVI3RTJad3Q5bkh2aC9BclpSbzBhQkk0WGlhUW0zTEFzeWppUjIKNWZJZy9LRTZQSERn
UUNNR29vcGEvZGNqdDJPd1VUNzhLWUh5SklEUEpJaFRRYXhqTWVSUm5CcTNuWVB1K09UR2dlSytw
N0ZSbnNrbwppVFJ2M3B5M1QyS0ZwVXVYenAwN04yZk9uQTRPOHNtV3FYRnltSVNjVk1SOE1sZkRj
TGQ0ZzdWSW5HckJnZ1ZoemNPTjhYWjBUSUhlCjFhbFRSNWJDTzVTWGtsSXlGb3ovTTFEUm9rV0JM
VnEweURGTHdNL2R1M2NMZitvVmJNR05QM255SkphUk1XTkdZNitPRjZkS21LTVQKOVRZWENyS1U2
WWcveWMyOG9nMVZCc0l0Nnh3Q3RwMnZId3lRYXJYYlVYanh3bnV3UkZJTzlNZ0w0NkJ6TlBnMDJW
aTlldlVjdnpjUQpzTG9uL044THBYTG04MzdycFNqb0hIR1pySUdZRUR2UUY0bGpKN0xscHZjUGN4
akNYb1RKaEFrVGRBN3VOblU3bGZhZ0h6eVF1VEZFCmRzS05xUWw5M1FBdmlrR1FjdXRZQ3BJVEZO
ZEhBdXMxaDVHT1NxcHlZc21TSmQydnBwTE9zaXNzdzhnQklqS1diYTlmdjU3N2pFK3EKU0pzMmJW
cXpaZzNlbS9pQ21KT0VoOUREeUlFNFhGNmdoQWthUEh6NGNISWt3aC9zQm5mTm83RnhvRTVVcnh3
Mjl6VEpETVVmbVk2LwoxUERjRzFmQkY4N0cvc2NvQmtIS1REYUNaRmxTS1M1Y3VMQ05VOVgzVHh0
UjZkY0FlYlFPVU1VYUpLVFQ5YlpscWNqSHFxaDE4SER0CnVORlJ6VFp0MmxqKzRrYUNBNlRDZTRX
K05xODIrMExrS2psbUxpUkhETTloeWhDT2hadFNoSTB5VVh6bnZneDR2T0VZckJSRUd2bnoKNXo5
eDRnUlpyWExyRG9ENnhCMlJNTjI0Y1FQMUo0RlZkUHNHMFRuKzdlM2J0OXl5dlBzb3p5TWNlQUxr
eHdta3lmSk81R2FMV3lPMgpJdjNDcGltSGNsZEppTWkyNmNMVjh5Q0trQTRlUE9nZk1YR0hyVnUz
N3NpUkk3ZHYzNlpBUTFaYXFGQWg5M1JHQ2dGUjM3NTljVENZCkY4VlZJOFpONU9KdjFxeVplclZH
WUdUcXlqM2dLc2pnY1hKS213bDZLUk55VnZKYTZXWm9zRWhSQnlJNkw1MzZ0WFI4Q3haanZDWUoK
SDM0Z2l2bTF5N1BoaGhRUkRNVThHN0RDTUtwLy8vNG9IMjdKZUgwUTdsRWo0M2FvV0xGaTl1elpN
VERjdmhydWFCZ3NrckFGSGNmYQp2S0prZ3pxRVNEOTZBcFRTcURISmkrYVA4dmh6blBNWkN4SS9Z
NUVmUXY0TTM5Qll5eFBnWWZ6bnBjaGNCb3UwWEVFSUZxWk93R0NSCllXcDlvY1ZZbmtCSWtKWUhG
ZFpoSVVHR2RRbFpyaThrU011REN1dXdrQ0REdW9RczEvYy94VDVISFJ1cEIwRUFBQUFBU1VWT1JL
NUMKWUlJPQoKSW5kZXg6IExheW91dFRlc3RzL2NzczMvc3VwcG9ydC9zdWNjZXNzLnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9j
c3MzL3N1cHBvcnQvc3VjY2Vzcy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQog
ICArIGltYWdlL3BuZwoKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJTUFBQUFqQ0FJQUFBQTQ0
eTdmQUFBQjYybERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3QKa3M5TEZHRWN4cDhacTVXTVJUSTlK
YnlIa0lJcEZyZERRdVRZcm1iU1lkazJ0VHFOTStQdTJzNDR6SXlhSVNSZHVudW9XeUJXUlArQQpI
UXFrVXhlSkNNcUMvb2RBa0NCa2V0NTVHYlpENHFVSHZ1LzdlYjg4NzYvdit3SWRaU3NJV2pvQXo0
L0Q2cldyWXZyMkhaSDdCZzE1CmRPTWljcFlkQlNPVnlnMWFEdERlRjdxcHorZmxXdjNEVjZ3Zmt4
LzdvdW4xZTQrMnUxNGNNQ2xMNTBOdUNHZ0dFNmZxaWszSk00cHIKa3BmaUlLYW5JZGx1V0E1NWhX
eUV0V3FKL0lxY3J5dCtJM2xHOFFmSmkzWmR6dDBoRjN5bjZRTjZKL21TNDBZMjJTUTdUbVI3NU9m
awpxdWZOYzMzOUYvbXNIWVNjMnlISVoyUmQyRlBMRHdCemtaN0w3ZHhrQzNqOVVCNnZuUnY0Q2ZR
SzRPM2pkbTUzSjYyVjF0Y1p6UllICjArVzByazNnNkpNazJaMENjdWVBL2E5Sjhuc3pTZlpmY3Uv
dndOYWV2UkJ5UCtYV3RvSER4dXJPeWc5ODRoMm85STMremFvdXFhc0EKYkd3QlU0d0p4ak1UR0Zn
Q2V1NENGWExOaEY0c1pxRnFDS25qcGFidmVwWVlMNmZELzlkNHJRVytVNm9qYkUrNC9xMmI3RTh5
ek5sdwpySnF4NDVaSE01NnpKaW9abzRRbWZMandZRUZnSER5Z2VtTTZjS3diV0R1dEkvLzB2ZkZ1
VldiK1Z1emVUMnRYbWcrV3cyYTlFWXNSCi9uRFhFTmQ5KzRJaEJndUZJZndCOUNxSnQ5R3hveEVB
QUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBZHpTVVJCVkdnRjdacFgKYUZaTEVNY1RpYjFY
ckNpb3NTR0N2VGNRRmNWQ0NGR3dZS0tvaUlxSWdvZ1ZzU05pUWNRSFVSOHNENklQS3Bhb3dWNVJC
SHNGZSsrOQozTjlsdU9PNnA2MDVsK3NIOS9zZTR1enNmMmZtekd5YldWTi8vUGlSa3Z3bGdBY0tK
SUFOU1JQKzlrQXlFb2t5RDVLUlNFWWlVVHlRCktIWWsxMFNpUkNJdHhKQmp4NDd0Mzc4L0xTMnRS
WXNXblR0M0xsQWdHVFovYjdrN0tnekpMZGI3Ky83OSs4aVJJMDIxMDZkUHQyQ1AKSGoxYXVuVHA3
ZHUzTGY2LzNuei8vdjJEQncvaWlQMHRDVisvZmoxNzl1eXFWYXR5Y25JR0RSbzBkKzdjRU5VdWpw
TGhrY2dVWHpWagp4NDZWTUpRcFU2Wmx5NWJaMmRtblRwMnlrTXVXTFFOVHFGQ2grZlBuVzExVzg4
MmJOM3pZNXMyYjM3MTdaM1VGTlFrd1llN1pzMmVwClVxWEVrc3FWSzJkbFpkMjhlVE5vaU1YUG40
UVRKMDQwYXRUSW5JSnNDZGV1WGJPRWE5UEZVUUtPUlBwRVlzV0tGWmhTbzBhTnJWdTMKcWtvdk1X
dldMTFg0OU9uVFhvQnkxcXhaSThoSmt5WXBNNGg0K3ZUcCtQSGpDYkFNcVZxMWFwTW1UWFJqSkJo
QkE1V2Zid21Fb1hqeAo0dWh0M0xneFRqaHk1QWpmZGZYcVZaVnNFWTZPWXBRTDBvN0VzMmZQeXBZ
dHkwVHdMZ0xMRHBhdE9LdGl4WW9mUDM2MGVzM21uajE3CkJEbHc0RUNUNzZVUEh6N01LZ1JjdjM3
OWJkdTI2YWJFOXNyaW9BdG5lVWVabkh4TFlMMVdxMVlOMVIwNmRIajU4cVVwMDVkMmQ1UWoKMG83
RXhJa1RzYVoxNjlhKzZrM213b1VMeGIvc1hTYmZTMSsrZkZtUVRIWnZyM0tPSHo4dWU5RzRjZU0r
ZlBpZ2ZDRXVYcng0Nzk0OQppMmsxNDBpWU9YTW1Sckw0SERkQWQwYzVJdTFJMUt4WkU0UDY5T2xq
ZmFTM3VXVEpFdkh2NnRXcnZiMG01L0hqeDRKY3ZIaXh5VGZwClc3ZHV5V29ZTm15WXlYZW40MGpn
bE9ZY3dzaGV2WG81YW5SM2xDUHlsMGk4ZnYxYVhGYWhRZ1hPK25DYmxpOWZMdUM4dkx4d3BJcmQK
c21WTEVITDA2TkZJcTF1Mzd0dTNiNE13NGZ3NEV2YnUzU3Zmc24zNzluQXQwcXRmRk9rb2QrUXZr
VUJOclZxMXhLWXpaODZFMjhSUwpFT1NWSzFmQ2tWd2lCUmwwc0Q5OCtMQklrU0pnMXE5Zkh5NHFx
RGVtaE1tVEo0dUZ6NTgvRDFKaDhkMGQ1WWkwazdXK2ZmdUtUWHJoCmthYjNiK25TcFlWWnRHaFJi
Ni9KK2Z6NXN6UnIxNjV0OHBWbWVYSG1jMVBJek14VTVtOFJNU1djUDM4ZWRXd2oyT0NvMTkxUnJr
Z3IKMUpjdVhSSlRpaFVyeHFGdjlack5YYnQyQ2ZMKy9mc20zMHN6WVVHV0wxL2UyeVdjamgwN0Fo
Z3laRWdRSUpJZlUwS1ZLbFV3b0YyNwpkcEdLRk9EdUtFZWt2U2E0UHBKUFlSWmJpdTQvTkwwL09X
RGg2NVQzWW9UejVNa1RpQVlOR2dRQk9HenBhdE9tVFJBZ2toOVRnbGpJCmdtQjduRFp0MmxUalI3
M0hWN3U3bzF5UkdtUWx5R2hFTjZ2MTI3ZHZ5cmNJcnBVQzQ1SnFkVm5OM054Y2tNT0hEN2Y0MHZ6
MDZaTWsKYnVqMUJVUXlZMHJneHV6cmE1Z0ZDeGJjdEdsVGtBR09qbUs0QzlLbkF0aTJiZHN1WGJv
Y09IRGd6cDA3SkdVOWV2VHdOYlJTcFVyQwpaNHYzQlNoVEppeUpxM0pNQWkzYzArQndEekg1N25S
TUNSUmpSRmU5ZXZWNjkrNU5lcy9KVjdKa1NaS2JWcTFhV2NVUDB5cEhSekhFCkNla2I4SDM3OW9u
Sy92Mzcrd0tFaWJuQURoNDhHSUtoYTlTb1VjQU9IVHJrQzlQNWdsSmZRQ1F6cGdReWVmbllidDI2
UmVxeUFJNk8KWWxRazByN0ZxaWFtQS9heFBGbjd5clFJS2tKZ0ZpeFlZUEd0WnJObXpTaWZCQ1VL
bW9FdldyVElHdWpZakNuaHhZc1hFZ2syZEVlTgpKc3pGVVlJUFJ3WkdZc09HRFdMZnVYUG5UTVVt
M2E5ZlB6RGhlU25aUm1wcWF2djI3YzJCSnYzcTFTc0F5T0hFTnZudWRFd0pKTmlGCkN4ZkdnQkls
U3JnclZhU0xvd1Fjamd5TUJMdS8zSTdXclZ1bldpMWl4b3daZkFEN0tkUEs2dEttVklOWHJseXBI
QytodDZZZE8zWjQKZTEwNE1TWG9HWGI5K25VWGRTYkd4VkdDRDBmYXQxZzhLeittQ1hWQTZCczNi
dnpEcy8vdDJyVXJMQko2aW9CZnZueXh1MU5TeUpqVwpybDFicDA2ZEVTTkdlSHVWTTNUb1VLR25U
Sm1pQ2JuMktvRUt5c3M3ZCs1VWpoSXhKZkFHSTZLMG1LYVNJd2tYUjRtUUNLUVpYb3NlClBIZ3dJ
bkNseGRjbWR4N09BRkhESm5qaHdnWHRnaUNqNFg3RlBTVG9yRll3Y2lTSlFSUkZhVUtyWFVyd1hD
UDc3THg1ODVTcFJFd0oKUjQ4ZWxhL0FXdDRpVmF3akVla29sUk9DL0dWM01zdk9GRkRaTnpscElW
U1FsMkNJMWxYNEdLNGZzMmZQbmpOblRxZE9uVGp0eVpWMgo3OTd0SGVYbG9JVkhJWEVIeitaVTR2
U0JqMFZKblZ6ZWpuamhDRXB4WWtyQVlOSE9UaEQ1Sk96dUtIZmt6MGp3NVdSWTFhdFh6OGpJCllM
RlQ3Y0N5QVFNR2VMMW1jWmpDRXlaTWtFTlBQb2EvSE1La2N1U3VGamlreVpMaVlGY0oxQVRaTkxR
UXhKemdMVDBvRENJMmpnUmUKK3RMVDAwVTdTdGtKbUFFc05hL0I3bzV5UjZMbFp5VFFLdVVYOVFV
NWRuanB5YlNTZHk3TzlqRmp4bER3NGkzKzVNbVRacTg3dlhIagpSb3BJV2tvcFY2NGMreFV4Y0Q5
TDh5M2g3dDI3V001U1ZnL3dtTnE4ZVhQK2M0VnB2N3VqM0pISS94a0pHanhYOGF6RzFDQUd2RGt6
CktVd0wvbU9hOVJTVWdqaGFrajhKT0lFTWlXeTBlL2Z1RFJzMmJOcTBLWnV0cGRIZFVlN0lWSFRv
RkVnU2Y5QURnYmZZUDJqVC8xTjEKTWhLSkV2ZGtKSktSU0JRUEpJb2Rmd0hUMVFBdkpvRWJxUUFB
QUFCSlJVNUVya0pnZ2c9PQoK
</data>
<flag name="review"
          id="16267"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>92687</attachid>
            <date>2011-05-07 01:31:22 -0700</date>
            <delta_ts>2011-05-07 01:31:22 -0700</delta_ts>
            <desc>test case for attr() function</desc>
            <filename>namespaceattr.html</filename>
            <type>text/html</type>
            <size>997</size>
            <attacher name="Jos van den Oever">jos.van.den.oever</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRt
bCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5n
PSJlbiI+CjxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij48L21ldGE+CiAgPHRpdGxlPjwvdGl0bGU+CiAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KICBAbmFtZXNwYWNlIG5zICJodHRw
Oi8vZXhhbXBsZS5jb20vIjsKICBuc3xhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6
IDEwZW07CiAgICBoZWlnaHQ6IDEwZW07CiAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICB9
CiAgbnN8YVtuc3xiXTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIobnN8Yik7CiAgfQogIDwv
c3R5bGU+CiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
ZnVuY3Rpb24gaW5pdCgpIHsKICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhIik7CiAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJiIiwgImhlbGxvIik7CiAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChlbGVtZW50KTsKfQogIDwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0iaW5p
dCgpIj4KICA8cD5BIGJveCB3aXRoIGEgYmxhY2sgYm9yZGVyIGFuZCB0aGUgdGV4dCAnaGVsbG8n
IHNob3VsZCBiZSB2aXNpYmxlIG9uIHRoaXMgcGFnZS4gSWYgJ2hlbGxvJyBpcyBub3QgdmlzaWJs
ZSwgdGhlbiBuYW1lc3BhY2Ugc3VwcG9ydCBmb3IgdGhlIENTUyBmdW5jdGlvbiBhdHRyKCkgaXMg
YnJva2VuLjwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>