<?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>109464</bug_id>
          
          <creation_ts>2013-02-11 11:04:19 -0800</creation_ts>
          <short_desc>[CSS Shaders] Implement hue and saturation non-separable blend modes</short_desc>
          <delta_ts>2013-03-07 12:02:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blendingnonseparable</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106226</dependson>
          <blocked>71392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michelangelo De Simone">michelangelo</reporter>
          <assigned_to name="Michelangelo De Simone">michelangelo</assigned_to>
          <cc>cabanier</cc>
    
    <cc>dino</cc>
    
    <cc>mvujovic</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829894</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-02-11 11:04:19 -0800</bug_when>
    <thetext>Support for these non-separable blend modes is missing and shall be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837563</commentid>
    <comment_count>1</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-02-20 10:37:41 -0800</bug_when>
    <thetext>Is there a reason to make this a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837595</commentid>
    <comment_count>2</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-20 11:20:12 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Is there a reason to make this a separate patch?

I suggested splitting these up to make it easier to review. There&apos;s kind of a lot of math to verify on these :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843513</commentid>
    <comment_count>3</comment_count>
      <attachid>190604</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-02-27 14:35:24 -0800</bug_when>
    <thetext>Created attachment 190604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843526</commentid>
    <comment_count>4</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-02-27 14:46:13 -0800</bug_when>
    <thetext>Please, disregard the following warning:

Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:466:  css_SetSatHelper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]

It is about css_SetSatHelper which is an inline GLSL function, not C++. I&apos;ve already filed a bug for this: https://bugs.webkit.org/show_bug.cgi?id=111013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843598</commentid>
    <comment_count>5</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-02-27 16:12:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Please, disregard the following warning:
&gt; 
&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:466:  css_SetSatHelper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
&gt; 
&gt; It is about css_SetSatHelper which is an inline GLSL function, not C++. I&apos;ve already filed a bug for this: https://bugs.webkit.org/show_bug.cgi?id=111013

Why are you skipping the tests? You should build in a range of color values that is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843609</commentid>
    <comment_count>6</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-02-27 16:27:54 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; Why are you skipping the tests? You should build in a range of color values that is OK.

The reason is written in the comments.
Anyhow, the results that Safari (WK1 and 2) returns are slightly off. Max filed this few weeks ago: https://bugs.webkit.org/show_bug.cgi?id=107487

Other than that, I guess we&apos;ll use this, if and when it&apos;ll be ready: https://bugs.webkit.org/show_bug.cgi?id=109356.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843664</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 20:23:22 -0800</bug_when>
    <thetext>Attachment 190604 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html&apos;, u&apos;LayoutTests/platform/mac/TestExpectations&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:466:  css_SetSatHelper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843707</commentid>
    <comment_count>8</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-02-27 21:41:48 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; Why are you skipping the tests? You should build in a range of color values that is OK.
&gt; 
&gt; The reason is written in the comments.
&gt; Anyhow, the results that Safari (WK1 and 2) returns are slightly off. Max filed this few weeks ago: https://bugs.webkit.org/show_bug.cgi?id=107487
&gt; 
&gt; Other than that, I guess we&apos;ll use this, if and when it&apos;ll be ready: https://bugs.webkit.org/show_bug.cgi?id=109356.

Can&apos;t you just build in a small range that is OK?
I guess you would need to rewrite the test so it compares with the expected values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844226</commentid>
    <comment_count>9</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-02-28 10:56:49 -0800</bug_when>
    <thetext>(In reply to comment #8)

&gt; Can&apos;t you just build in a small range that is OK?

I&apos;ve indeed tried that before uploading the patch.
This problem has occurred previously, see bug 104012 and bug 106226.

The difference - though very slight (+/- 2/3 base 255 on one or two components) - is always beyond the acceptance threshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844318</commentid>
    <comment_count>10</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-02-28 11:56:59 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; 
&gt; &gt; Can&apos;t you just build in a small range that is OK?
&gt; 
&gt; I&apos;ve indeed tried that before uploading the patch.
&gt; This problem has occurred previously, see bug 104012 and bug 106226.
&gt; 
&gt; The difference - though very slight (+/- 2/3 base 255 on one or two components) - is always beyond the acceptance threshold.

I think that is OK.
they&apos;re probably happening because of integer math vs floating point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844772</commentid>
    <comment_count>11</comment_count>
      <attachid>190604</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-28 20:52:11 -0800</bug_when>
    <thetext>Comment on attachment 190604
Patch

Looks good! Just a couple of nits.

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

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:-420
&gt; -        notImplemented();

Nice. notImplemented() is gone, meaning we&apos;ve implemented all the blend modes :)

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:475
&gt; +            mediump vec3 css_SetSat(mediump vec3 C, mediump float s)

This looks reasonable. It&apos;s too bad we need need so many conditionals, but I can&apos;t think of a better way of sorting three values (and their references) that isn&apos;t more confusing. One approach I considered was computing the min, mid, and max indices with values 0, 1, or 2 corresponding to r, g, or b. Then the algorithm could look like:

if (c[max] &gt; c[min])
    c[mid] = ...

But you&apos;d still need conditionals to figure out the indices, so not a huge improvement. Anyways, what you have is clear to me.

&gt; LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html:46
&gt; +        Backdrop with 0.5 blended with source with 0.5 alpha

I think you missed the word &quot;alpha&quot; after &quot;Backdrop with 0.5&quot;.

&gt; LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html:47
&gt; +    The underlaying proof of the above mentioned cases is the same: the colors are premultiplied

underlaying -&gt; underlying

&gt; LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html:127
&gt; +        return (0.0.749, 0.549, 0.449)

0.0.749 -&gt; 0.749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845232</commentid>
    <comment_count>12</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-03-01 09:18:33 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 190604 [details])

&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:475
&gt; &gt; +            mediump vec3 css_SetSat(mediump vec3 C, mediump float s)
&gt; 
&gt; This looks reasonable. It&apos;s too bad we need need so many conditionals, but I can&apos;t think of a better way of sorting three values (and their references) that isn&apos;t more confusing. One approach I considered was computing the min, mid, and max indices with values 0, 1, or 2 corresponding to r, g, or b. Then the algorithm could look like:
&gt; 
&gt; if (c[max] &gt; c[min])
&gt;     c[mid] = ...
&gt; 
I&apos;ve looked at 5 implementations of this, and they all have this mess of nested &apos;if&apos; statements. It seems that&apos;s the most efficient way to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845580</commentid>
    <comment_count>13</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-03-01 16:02:15 -0800</bug_when>
    <thetext>(In reply to comment #11)

&gt; Nice. notImplemented() is gone, meaning we&apos;ve implemented all the blend modes :)

Awesoooome!:)

&gt; I think you missed the word &quot;alpha&quot; after &quot;Backdrop with 0.5&quot;.

Indeed, in both of them.

&gt; underlaying -&gt; underlying

Ditto.

&gt; 0.0.749 -&gt; 0.749

Great catch.

Thank you for that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845581</commentid>
    <comment_count>14</comment_count>
      <attachid>191059</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-03-01 16:03:06 -0800</bug_when>
    <thetext>Created attachment 191059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845587</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 16:06:24 -0800</bug_when>
    <thetext>Attachment 191059 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html&apos;, u&apos;LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html&apos;, u&apos;LayoutTests/platform/mac/TestExpectations&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:466:  css_SetSatHelper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850321</commentid>
    <comment_count>16</comment_count>
      <attachid>191059</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-07 11:26:26 -0800</bug_when>
    <thetext>Comment on attachment 191059
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +            - css_Sat(C): returns the saturation for the color C
&gt; +            - css_SetSat(C, s): sets the saturation s on the color C
&gt; +            - css_SetSatHelper(Cmin, Cmid, Cmax, s): helper function for css_SetSat

Why are you using &quot;Sat&quot; rather than &quot;Saturation&quot;? I guess we already did &quot;Lum&quot; so it is consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850325</commentid>
    <comment_count>17</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-03-07 11:31:45 -0800</bug_when>
    <thetext>(In reply to comment #16)

&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +            - css_Sat(C): returns the saturation for the color C
&gt; &gt; +            - css_SetSat(C, s): sets the saturation s on the color C
&gt; &gt; +            - css_SetSatHelper(Cmin, Cmid, Cmax, s): helper function for css_SetSat
&gt; Why are you using &quot;Sat&quot; rather than &quot;Saturation&quot;? I guess we already did &quot;Lum&quot; so it is consistent.

I chose to use that naming because it&apos;s exactly the same currently used on the specs: https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blendingnonseparable

Thank you! I&apos;ll land this manually later given the check-webkit-style false positive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850351</commentid>
    <comment_count>18</comment_count>
      <attachid>191059</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-03-07 12:02:48 -0800</bug_when>
    <thetext>Comment on attachment 191059
Patch

Clearing flags on attachment: 191059

Committed r145114: &lt;http://trac.webkit.org/changeset/145114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850352</commentid>
    <comment_count>19</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2013-03-07 12:02:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190604</attachid>
            <date>2013-02-27 14:35:24 -0800</date>
            <delta_ts>2013-03-01 16:03:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109464-20130227143138.patch</filename>
            <type>text/plain</type>
            <size>23375</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uMzM3NTEyODc2NGQ4OGM1MTJhNmViYmU5MjAzMjM1
Y2QwMGRjZDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTI3ICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgaHVlIGFuZCBzYXR1cmF0aW9uIG5vbi1zZXBhcmFibGUg
YmxlbmQgbW9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwOTQ2NAorCisgICAgICAgIEFkZGVkIHRoZSBmb2xsb3dpbmcgR0xTTCBoZWxwZXIgZnVu
Y3Rpb25zIHRvIHRoZSBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOgorCisgICAgICAgICAg
ICAtIGNzc19TYXQoQyk6IHJldHVybnMgdGhlIHNhdHVyYXRpb24gZm9yIHRoZSBjb2xvciBDCisg
ICAgICAgICAgICAtIGNzc19TZXRTYXQoQywgcyk6IHNldHMgdGhlIHNhdHVyYXRpb24gcyBvbiB0
aGUgY29sb3IgQworICAgICAgICAgICAgLSBjc3NfU2V0U2F0SGVscGVyKENtaW4sIENtaWQsIENt
YXgsIHMpOiBoZWxwZXIgZnVuY3Rpb24gZm9yIGNzc19TZXRTYXQKKworICAgICAgICBUaGUgYWJv
dmUgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGZvciB0aGUgImh1ZSIgYW5kICJzYXR1cmF0aW9u
IiBub24tc2VwYXJhYmxlCisgICAgICAgIGJsZW5kIG1vZGVzLCB0aGUgcmVsZXZhbnQgc3BlYyBm
b3Igc3VjaCBtb2RlcyBpcyBhdCBVUkw6CisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
RlhURi9yYXdmaWxlL3RpcC9jb21wb3NpdGluZy9pbmRleC5odG1sI2JsZW5kaW5nbm9uc2VwYXJh
YmxlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQt
bW9kZS1odWUuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmJs
ZW5kRnVuY3Rpb25TdHJpbmcpOgorCiAyMDEzLTAyLTI2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGFkZCBhIGJvZHkgdG8gcGxhdGZvcm0gcmVx
dWVzdCB1bnRpbCBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0uY3BwCmluZGV4IDU4ZWJlMzRkOTZkZjY0NTA2YTBkOTQ0YWVjY2M0YjgyOTY2N2M3
MjIuLjFhMTg0MzQ1M2M5YWZlNzMyYzk2YTk4OThiZDVmYTgxYzk3Yjc3MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtMjkyLDYgKzI5Miw3
IEBAIFN0cmluZyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpibGVuZEZ1bmN0aW9uU3Ry
aW5nKEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgY29uc3QgY2hhciogYmxlbmRDb2xvckV4cHJl
c3Npb24gPSAidmVjMyhjc3NfQmxlbmRDb21wb25lbnQoQ2IuciwgQ3MuciksIGNzc19CbGVuZENv
bXBvbmVudChDYi5nLCBDcy5nKSwgY3NzX0JsZW5kQ29tcG9uZW50KENiLmIsIENzLmIpKSI7CiAg
ICAgY29uc3QgY2hhciogYmxlbmRDb21wb25lbnRFeHByZXNzaW9uID0gIkNvID0gMC4wOyI7CiAg
ICAgYm9vbCBuZWVkc0x1bWlub3NpdHlIZWxwZXJGdW5jdGlvbnMgPSBmYWxzZTsKKyAgICBib29s
IG5lZWRzU2F0dXJhdGlvbkhlbHBlckZ1bmN0aW9ucyA9IGZhbHNlOwogICAgIFN0cmluZyBibGVu
ZEZ1bmN0aW9uU3RyaW5nOwogICAgIHN3aXRjaCAoYmxlbmRNb2RlKSB7CiAgICAgY2FzZSBCbGVu
ZE1vZGVOb3JtYWw6CkBAIC00MTYsOSArNDE3LDE3IEBAIFN0cmluZyBDdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtOjpibGVuZEZ1bmN0aW9uU3RyaW5nKEJsZW5kTW9kZSBibGVuZE1vZGUpCiAg
ICAgICAgIGJsZW5kQ29sb3JFeHByZXNzaW9uID0gImNzc19TZXRMdW0oQ2IsIGNzc19MdW0oQ3Mp
KSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmxlbmRNb2RlSHVlOgorICAgICAgICBuZWVk
c0x1bWlub3NpdHlIZWxwZXJGdW5jdGlvbnMgPSB0cnVlOworICAgICAgICBuZWVkc1NhdHVyYXRp
b25IZWxwZXJGdW5jdGlvbnMgPSB0cnVlOworICAgICAgICBibGVuZENvbG9yRXhwcmVzc2lvbiA9
ICJjc3NfU2V0THVtKGNzc19TZXRTYXQoQ3MsIGNzc19TYXQoQ2IpKSwgY3NzX0x1bShDYikpIjsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCbGVuZE1vZGVTYXR1cmF0aW9uOgotICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIG5lZWRz
THVtaW5vc2l0eUhlbHBlckZ1bmN0aW9ucyA9IHRydWU7CisgICAgICAgIG5lZWRzU2F0dXJhdGlv
bkhlbHBlckZ1bmN0aW9ucyA9IHRydWU7CisgICAgICAgIGJsZW5kQ29sb3JFeHByZXNzaW9uID0g
ImNzc19TZXRMdW0oY3NzX1NldFNhdChDYiwgY3NzX1NhdChDcykpLCBjc3NfTHVtKENiKSkiOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKICAgICBpZiAobmVlZHNMdW1pbm9zaXR5SGVscGVyRnVuY3Rpb25zKSB7CkBA
IC00NDYsNiArNDU1LDQ5IEBAIFN0cmluZyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpi
bGVuZEZ1bmN0aW9uU3RyaW5nKEJsZW5kTW9kZSBibGVuZE1vZGUpCiAgICAgICAgICkpOwogICAg
IH0KIAorICAgIGlmIChuZWVkc1NhdHVyYXRpb25IZWxwZXJGdW5jdGlvbnMpIHsKKyAgICAgICAg
YmxlbmRGdW5jdGlvblN0cmluZy5hcHBlbmQoU0hBREVSKAorICAgICAgICAgICAgbWVkaXVtcCBm
bG9hdCBjc3NfU2F0KG1lZGl1bXAgdmVjMyBDKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1lZGl1bXAgZmxvYXQgY01pbiA9IG1pbihtaW4oQy5yLCBDLmcpLCBDLmIpOworICAgICAg
ICAgICAgICAgIG1lZGl1bXAgZmxvYXQgY01heCA9IG1heChtYXgoQy5yLCBDLmcpLCBDLmIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjTWF4IC0gY01pbjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZvaWQgY3NzX1NldFNhdEhlbHBlcihpbm91dCBtZWRpdW1wIGZsb2F0IGNNaW4sIGlu
b3V0IG1lZGl1bXAgZmxvYXQgY01pZCwgaW5vdXQgbWVkaXVtcCBmbG9hdCBjTWF4LCBtZWRpdW1w
IGZsb2F0IHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNNYXggPiBjTWlu
KSB7CisgICAgICAgICAgICAgICAgICAgIGNNaWQgPSAoKChjTWlkIC0gY01pbikgKiBzKSAvIChj
TWF4IC0gY01pbikpOworICAgICAgICAgICAgICAgICAgICBjTWF4ID0gczsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY01pZCA9IGNNYXggPSAwLjA7CisgICAg
ICAgICAgICAgICAgY01pbiA9IDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lZGl1
bXAgdmVjMyBjc3NfU2V0U2F0KG1lZGl1bXAgdmVjMyBDLCBtZWRpdW1wIGZsb2F0IHMpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKEMuciA8PSBDLmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKEMuZyA8PSBDLmIpCisgICAgICAgICAgICAgICAgICAgICAgICBjc3NfU2V0
U2F0SGVscGVyKEMuciwgQy5nLCBDLmIsIHMpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDLnIgPD0gQy5iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNzc19TZXRTYXRIZWxwZXIoQy5yLCBDLmIsIEMuZywgcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzX1Nl
dFNhdEhlbHBlcihDLmIsIEMuciwgQy5nLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChDLnIgPD0gQy5i
KQorICAgICAgICAgICAgICAgICAgICAgICAgY3NzX1NldFNhdEhlbHBlcihDLmcsIEMuciwgQy5i
LCBzKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoQy5nIDw9IEMuYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NfU2V0U2F0
SGVscGVyKEMuZywgQy5iLCBDLnIsIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc19TZXRTYXRIZWxwZXIoQy5iLCBDLmcsIEMu
ciwgcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEM7CisgICAgICAgICAgICB9CisgICAgICAgICkpOworICAgIH0KKwog
ICAgIGJsZW5kRnVuY3Rpb25TdHJpbmcuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KFNIQURFUigKICAg
ICAgICAgbWVkaXVtcCBmbG9hdCBjc3NfQmxlbmRDb21wb25lbnQobWVkaXVtcCBmbG9hdCBDYiwg
bWVkaXVtcCBmbG9hdCBDcykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY4NDEwZTU0MTIxYWVhMGIwYjJm
YTk3ZTJiMTE5ZjUwMmU0OGFhM2QuLmM1MjJmYjIzMDZlZWNkM2VjOTQxM2VjOGY4NGYwMWMzYTBk
ZjliMDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMi0yNyAgTWljaGVsYW5nZWxvIERl
IFNpbW9uZSAgPG1pY2hlbGFuZ2Vsb0B3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgU2hhZGVy
c10gSW1wbGVtZW50IGh1ZSBhbmQgc2F0dXJhdGlvbiBub24tc2VwYXJhYmxlIGJsZW5kIG1vZGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjQK
KworICAgICAgICBBZGRlZCByZWxldmFudCB0ZXN0cyBmb3IgdGhlICJodWUiIGFuZCAic2F0dXJh
dGlvbiIgbm9uLXNlcGFyYWJsZSBibGVuZCBtb2Rlcy4KKyAgICAgICAgVGhlc2UgdGVzdHMgYXJl
IGN1cnJlbnRseSBza2lwcGVkIG9uIE1hYyBkdWUgdG8gYSBzbGlnaHQgY29sb3IgZGlmZmVyZW5j
ZTsgcGxlYXNlIHNlZSByZWxldmFudCBidWc6IGh0dHA6Ly93ZWJraXQub3JnL2IvMTA3NDg3Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLWh1ZS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtaHVlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQt
bW9kZS1zYXR1cmF0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1zYXR1cmF0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDEzLTAyLTI3ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Nocm9taXVtXSBUZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2Vw
YXJhYmxlLWJsZW5kLW1vZGUtaHVlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtaHVlLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YxN2Y4N2FhNjc5MjBlYjJhZmYyYTBhNGI0NTI4NDE5
Yzg0NTdiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1odWUtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sIGxhbmc9ImVuIj4KKzxo
ZWFkPgorICAgIDx0aXRsZT5UZXN0IHRoYXQgYmxlbmRzIHRoZSBzb3VyY2UgYW5kIHRoZSBiYWNr
ZHJvcCB3aXRoIHRoZSBodWUgYmxlbmQgbW9kZS48L3RpdGxlPgorICAgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgICAgIC8qIFRoZXNlIGFyZSBleGFjdGx5IHRoZSBjb2xvciB2YWx1ZXMg
d2UgZXhwZWN0LiBTb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBzbGlnaHQgZGlmZmVyZW50CisgICAg
ICAgICAgIGNvbG9yIHJlc3VsdC4gKi8KKyAgICAgICAgI3NvbGlkLXNvbGlkIHsKKyAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMDgsIDE1NywgMjU1KTsKKyAgICAgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAg
ICAgI2FscGhhLXNvbGlkIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNjcs
IDE5MiwgMjQyKTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3NvbGlkLWFscGhhIHsKKyAgICAgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYigxNjksIDE0MiwgMTY2KTsKKyAgICAgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAg
I2FscGhhLWFscGhhIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDUsIDE5
MiwgMjA0KTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0ic29saWQtc29saWQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFscGhhLXNvbGlkIj48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJzb2xpZC1hbHBoYSI+PC9kaXY+CisgICAgPGRpdiBpZD0iYWxwaGEt
YWxwaGEiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2Rl
LWh1ZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLWh1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYTBkOGMyYjlj
YWExYmI0ZDhkNDFmNjg3OGY2ZDk0MDdhM2I4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5k
LW1vZGUtaHVlLmh0bWwKQEAgLTAsMCArMSwxNTEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWwg
bGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3QgdGhhdCBibGVuZHMgdGhlIHNvdXJj
ZSBhbmQgdGhlIGJhY2tkcm9wIHdpdGggdGhlIGh1ZSBibGVuZCBtb2RlLjwvdGl0bGU+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB3
aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0N1c3RvbUZpbHRl
ckVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgICB9CisgICAgPC9z
Y3JpcHQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgI3NvbGlkLXNvbGlk
IHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig5MCUsIDUwJSwgMzAlKTsKKyAg
ICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2Vz
L21peC1jb2xvci5mcycpIGh1ZSBzb3VyY2UtYXRvcCksIG1peF9jb2xvciAwLjIgMC40IDAuOCAx
LjApOworICAgICAgICB9CisgICAgICAgICNhbHBoYS1zb2xpZCB7CisgICAgICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDkwJSwgNTAlLCAzMCUsIDAuNSk7CisgICAgICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgLXdlYmtp
dC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4uL3Jlc291cmNlcy9taXgtY29sb3IuZnMn
KSBodWUgc291cmNlLWF0b3ApLCBtaXhfY29sb3IgMC4yIDAuNCAwLjggMS4wKTsKKyAgICAgICAg
fQorICAgICAgICAjc29saWQtYWxwaGEgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDkwJSwgNTAlLCAzMCUpOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9u
ZSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvbWl4LWNvbG9yLmZzJykgaHVlIHNvdXJjZS1hdG9wKSwg
bWl4X2NvbG9yIDAuMiAwLjQgMC44IDAuNSk7CisgICAgICAgIH0KKyAgICAgICAgI2FscGhhLWFs
cGhhIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTAlLCA1MCUsIDMwJSwg
MC41KTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybCgnLi4v
cmVzb3VyY2VzL21peC1jb2xvci5mcycpIGh1ZSBzb3VyY2UtYXRvcCksIG1peF9jb2xvciAwLjIg
MC40IDAuOCAwLjUpOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PCEtLQorICAgIFRoZSBmb2xsb3dpbmcgcHJvb2YgYXBwbGllcyB0byB0aGUgZmlyc3QgY2FzZSAo
I3NvbGlkLXNvbGlkKSB3aGVyZSBib3RoIHRoZSBiYWNrZHJvcCBhbmQgdGhlCisgICAgc291cmNl
IGFyZSBzb2xpZC4KKworICAgIEluIHRoaXMgdGVzdCB0aGUgZm9sbG93aW5nIGNvbWJpbmF0aW9u
cyBhcmUgYWxzbyB0ZXN0ZWQ6CisgICAgICAgIEJhY2tkcm9wIHdpdGggMC41IGFscGhhIGJsZW5k
ZWQgd2l0aCBzb2xpZCBzb3VyY2UKKyAgICAgICAgU29saWQgYmFja2Ryb3AgYmxlbmRlZCB3aXRo
IHNvdXJjZSB3aXRoIDAuNSBhbHBoYQorICAgICAgICBCYWNrZHJvcCB3aXRoIDAuNSBibGVuZGVk
IHdpdGggc291cmNlIHdpdGggMC41IGFscGhhCisgICAgVGhlIHVuZGVybGF5aW5nIHByb29mIG9m
IHRoZSBhYm92ZSBtZW50aW9uZWQgY2FzZXMgaXMgdGhlIHNhbWU6IHRoZSBjb2xvcnMgYXJlIHBy
ZW11bHRpcGxpZWQKKyAgICBhbmQgdGhlbiBibGVuZGVkIHRvZ2V0aGVyLgorCisgICAgVGhlIGZp
bmFsIGNvbG9yIG9mICNzb2xpZC1zb2xpZCBkZXBlbmRzIG9uIHRoZSAiaHVlIiBibGVuZCBtb2Rl
LCB3aGljaCBpcyBhIG5vbi1zZXBhcmFibGUKKyAgICBibGVuZCBtb2RlLiBUaGlzIG1lYW5zIHRo
YXQgY29sb3JzIGFyZSBibGVuZGVkIHRvZ2V0aGVyIGFzIGEgd2hvbGUsIG5vdCBjb21wb25lbnQg
YnkgY29tcG9uZW50LgorCisgICAgVGhlIGZvcm11bGEgZm9yIHRoaXMgYmxlbmQgbW9kZSBpczoK
KyAgICAgICAgQ3IgPSBCKENiLCBDcykgPSBTZXRMdW0oU2V0U2F0KENzLCBTYXQoQ2IpKSwgTHVt
KENiKSkKKworICAgIFdpdGg6CisgICAgICAgIENyOiB0aGUgcmVzdWx0aW5nIGNvbG9yCisgICAg
ICAgIENiOiB0aGUgYmFja2Ryb3AgY29sb3IsIHdoaWNoIGlzICNzb2xpZC1zb2xpZCAoIm9yaWdp
bmFsIERPTSBlbGVtZW50IGNvbG9yIikKKyAgICAgICAgQ3M6IHRoZSBzb3VyY2UgY29sb3IsIHdo
aWNoIGlzIG1peF9jb2xvcgorICAgICAgICBMdW0oQ2IpOiB0aGUgbHVtaW5vc2l0eSBvZiBDYi4g
THVtaW5vc2l0eSBmb3IgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBieQorICAgICAgICAg
ICBMdW0oQyk6IDAuMyAqIENyZWQgKyAwLjU5ICogQ2dyZWVuICsgMC4xMSAqIENibHVlCisgICAg
ICAgIFNhdChDYik6IHRoZSBzYXR1cmF0aW9uIG9mIENiLiBTYXR1cmF0aW9uIGZvciBjb2xvciBD
IGlzIGdlbmVyYWxseSBkZWZpbmVkIGJ5CisgICAgICAgICAgIFNhdChDKTogbWF4KENyZWQsIENn
cmVlbiwgQ2JsdWUpIC0gbWluKENyZWQsIENncmVlbiwgQ2JsdWUpCisgICAgICAgU2V0U2F0KENz
LCBTYXQoQ2IpKTogdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgc2F0dXJhdGlvbgorICAgICAg
IFNldEx1bShTZXRTYXQoQ3MsIFNhdChDYikpLCBMdW0oQ2IpKTogdGhlIGZ1bmN0aW9uIHRoYXQg
c2V0cyB0aGUgbHVtaW5vc2l0eS4KKworICAgIFRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdGhlIGx1
bWlub3NpdHkgbCBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBieToKKworICAg
ICAgICBTZXRMdW0oQywgbCkKKyAgICAgICAgICAgIGQgPSBsIC0gTHVtKEMpCisgICAgICAgICAg
ICBDcmVkID0gQ3JlZCArIGQKKyAgICAgICAgICAgIENncmVlbiA9IENncmVlbiArIGQKKyAgICAg
ICAgICAgIENibHVlID0gQ2JsdWUgKyBkCisgICAgICAgICAgICByZXR1cm4gQ2xpcENvbG9yKEMp
CisKKyAgICBBdCB0aGlzIHBvaW50IHRoZSBjb2xvciBDIGhhcyB0byBiZSBjbGlwcGVkIGJldHdl
ZW4gWzAuLjFdICBieSB0aGUgQ2xpcENvbG9yIGZ1bmN0aW9uLCB3aGljaCBpcworICAgIGdlbmVy
YWxseSBkZWZpbmVkIGJ5OgorCisgICAgICAgIENsaXBDb2xvcihDKQorICAgICAgICAgICAgbCA9
IEx1bShDKQorICAgICAgICAgICAgbiA9IG1pbihDcmVkLCBDZ3JlZW4sIENibHVlKQorICAgICAg
ICAgICAgeCA9IG1heChDcmVkLCBDZ3JlZW4sIENibHVlKQorICAgICAgICAgICAgaWYgbiA8IDAu
MAorICAgICAgICAgICAgICAgIENyZWQgPSBsICsgKCgoQ3JlZCAtIGwpICogbCkgLyAobCAtIG4p
KQorICAgICAgICAgICAgICAgIENncmVlbiA9IGwgKyAoKChDZ3JlZW4gLSBsKSAqIGwpIC8gKGwg
LSBuKSkKKyAgICAgICAgICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1ZSAtIGwpICogbCkgLyAo
bCAtIG4pKQorICAgICAgICAgICAgaWYgeCA+IDEuMAorICAgICAgICAgICAgICAgIENyZWQgPSBs
ICsgKCgoQ3JlZCAtIGwpICogKDEgLSBsKSkgLyAoeCAtIGwpKQorICAgICAgICAgICAgICAgIENn
cmVlbiA9IGwgKyAoKChDZ3JlZW4gLSBsKSAqICgxIC0gbCkpIC8gKHggLSBsKSkKKyAgICAgICAg
ICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1ZSAtIGwpICogKDEgLSBsKSkgLyAoeCAtIGwpKQor
ICAgICAgICAgICAgcmV0dXJuIEMKKworICAgIFRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdGhlIHNh
dHVyYXRpb24gcyBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBieToKKworICAg
ICAgICBTZXRTYXQoQywgcykKKyAgICAgICAgICAgIGlmKENtYXggPiBDbWluKQorICAgICAgICAg
ICAgICAgIENtaWQgPSAoKChDbWlkIC0gQ21pbikgKiBzKSAvIChDbWF4IC0gQ21pbikpCisgICAg
ICAgICAgICAgICAgQ21heCA9IHMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBD
bWlkID0gQ21heCA9IDAKKyAgICAgICAgICAgIENtaW4gPSAwCisgICAgICAgICAgICByZXR1cm4g
QworCisgICAgSW4gdGhpcyB0ZXN0IGNhc2U6CisgICAgICAgIEx1bShDYikgPSAwLjMgKiAwLjkg
KyAwLjU5ICogMC41ICsgMC4xMSAqIDAuMworICAgICAgICBMdW0oQ2IpID0gMC4yNyArIDAuMjk1
ICsgMC4wMzMKKyAgICAgICAgTHVtKENiKSA9IDAuNTk4CisKKyAgICAgICAgU2F0KENiKSA9IG1h
eCgwLjksIDAuNSwgMC4zKSAtIG1pbigwLjksIDAuNSwgMC4zKQorICAgICAgICBTYXQoQ2IpID0g
MC45IC0gMC4zCisgICAgICAgIFNhdChDYikgPSAwLjYKKworICAgICAgICBGb3IgdGhlIHNha2Ug
b2YgYnJldml0eSB0aGUgcmVzdWx0IG9mIHRoaXMgY29tcHV0YXRpb24gaXMgY2FsbGVkIEN0Cisg
ICAgICAgIEN0ID0gU2V0U2F0KENzLCBTYXQoQ2IpKQorICAgICAgICAgICAgMC44ID4gMC4yCisg
ICAgICAgICAgICAgICAgQ21pZCA9ICgoKDAuNCAtIDAuMikgKiAwLjYpIC8gKDAuOCAtIDAuMikp
ID0gKDAuMiAqIDAuNikgLyAwLjYgPSAwLjIKKyAgICAgICAgICAgICAgICBDbWF4ID0gMC42Cisg
ICAgICAgICAgICBDbWluID0gMAorICAgICAgICAgICAgcmV0dXJuICgwLCAwLjIsIDAuNikKKwor
ICAgICAgICBDciA9IFNldEx1bShDdCwgTHVtKENiKSkKKyAgICAgICAgICAgIGQgPSAwLjU5OCAt
ICgwLjMgKiAwLjAgKyAwLjU5ICogMC4yICsgMC4xMSAqIDAuNikgPSAwLjExOCArIDAuMDY2ID0g
MC4xODQKKyAgICAgICAgICAgIGQgPSAwLjU5OCAtICgwLjExOCArIDAuMDY2KSA9IDAuNTk4IC0g
MC4xODQKKyAgICAgICAgICAgIGQgPSAwLjQxNAorICAgICAgICAgICAgQ3JlZCA9IDAuMCArIDAu
NDE0ID0gMC40MTQKKyAgICAgICAgICAgIEdyZWVuID0gMC4yICsgMC40MTQgPSAwLjYxNAorICAg
ICAgICAgICAgQ2JsdWUgPSAwLjYgKyAwLjQxNCA9IDEuMDE0CisgICAgICAgICAgICByZXR1cm4g
Q2xpcENvbG9yKDAuNDE0LCAwLjYxNCwgMS4wMTQpCisKKyAgICAgICAgQ2xpcENvbG9yKDAuNDE0
LCAwLjYxNCwgMS4wMTQpCisgICAgICAgICAgICBsID0gMC4zICogMC40MTQgKyAwLjU5ICogMC42
MTQgKyAwLjExICogMS4xMDE0ID0gMC4xMjQyICsgMC4zNjIyNiArIDAuMTIxMTU0ID0gMC42MDc2
MTQKKyAgICAgICAgICAgIG4gPSBtaW4oMC40MTQsIDAuNjE0LCAxLjAxNCkgPSAwLjQxNAorICAg
ICAgICAgICAgeCA9IG1heCgwLjQxNCwgMC42MTQsIDEuMDE0KSA9IDEuMDE0CisgICAgICAgICAg
ICB4ID4gMS4wCisgICAgICAgICAgICAgICAgQ3JlZCA9IDAuNjA3NjE0ICsgKCgoMC40MTQgLSAw
LjYwNzYxNCkgKiAoMSAtIDAuNjA3NjE0KSkgLyAoMS4wMTQgLSAwLjYwNzYxNCkpID0gCisgICAg
ICAgICAgICAgICAgICAgICA9IDAuNjA3NjE0ICsgKCgtMC4xOTM2MTQgKiAwLjM5MjM4NikgLyAw
LjQwNjM4NikgPSAwLjYwNzYxNCAtICgwLjA3NTk3MTQyIC8gMC40MDYzODYpID0gMC42MDc2MTQg
LSAwLjE4Njk0Mzk5ID0gMC40MjA2NzAwMQorICAgICAgICAgICAgICAgIENncmVlbiA9IDAuNjA3
NjE0ICsgKCgoMC42MTQgLSAwLjYwNzYxNCkgKiAoMSAtIDAuNjA3NjE0KSkgLyAoMS4wMTQgLSAw
LjYwNzYxNCkpID0KKyAgICAgICAgICAgICAgICAgICAgICAgPSAwLjYwNzYxNCArICgoMC4wMDMz
ODYgKiAwLjM5MjM4NikgLyAwLjQwNjM4NiA9IDAuNjA3NjE0ICsgKDAuMDAxMzI4NjIgLyAwLjQw
NjM4NikgPSAwLjYwNzYxNCArIDAuMDAzMjY5MzUgPSAwLjYxMDg4MzM1CisgICAgICAgICAgICAg
ICAgQ2JsdWUgPSAwLjYwNzYxNCArICgoKDEuMDE0IC0gMC42MDc2MTQpICogKDEgLSAwLjYwNzYx
NCkpIC8gKDEuMDE0IC0gMC42MDc2MTQpID0KKyAgICAgICAgICAgICAgICAgICAgICA9IDAuNjA3
NjE0ICsgKCgwLjQwNjM4NiAqIDAuMzkyMzg2KSAvIDAuNDA2Mzg2KSA9IDAuNjA3NjE0ICsgKDAu
MTU5NDYwMTggLyAwLjQwNjM4NikgPSAwLjYwNzYxNCArIDAuMzkyMzg2MDEgPSAxLjAKKyAgICAg
ICAgICAgIHJldHVybiAoMC40MiwgMC42MSwgMS4wKQorCisgICAgVGhpcyB2YWx1ZSBpcyBlcXVp
dmFsZW50IHRvICgxMDgsIDE1NywgMjU1KSwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGNvbG9yLgor
ICAgIFRoaXMgaXMgdGhlIGV4YWN0IGNvbG9yIHZhbHVlLCBvdGhlciBwb3J0cyBtaWdodCBleHBl
cmllbmNlIHNsaWdodCBkaWZmZXJlbmNlcy4KKy0tPgorICAgIDxkaXYgaWQ9InNvbGlkLXNvbGlk
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1zb2xpZCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
c29saWQtYWxwaGEiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFscGhhLWFscGhhIj48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1zYXR1cmF0aW9uLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
bm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtc2F0dXJhdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxZDQ5YzgyYjBhYTMyMjFlMmMxNDUwZGJjMmEwOTJkNmVlYTc0YjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9u
c2VwYXJhYmxlLWJsZW5kLW1vZGUtc2F0dXJhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPHRp
dGxlPlRlc3QgdGhhdCBibGVuZHMgdGhlIHNvdXJjZSBhbmQgdGhlIGJhY2tkcm9wIHdpdGggdGhl
IHNhdHVyYXRpb24gYmxlbmQgbW9kZS48L3RpdGxlPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgICAgIC8qIFRoZXNlIGFyZSBleGFjdGx5IHRoZSBjb2xvciB2YWx1ZXMgd2UgZXhw
ZWN0LiBTb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBzbGlnaHQgZGlmZmVyZW50CisgICAgICAgICAg
IGNvbG9yIHJlc3VsdC4gKi8KKyAgICAgICAgI3NvbGlkLXNvbGlkIHsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYigxOTEsIDE0MSwgMTE1KTsKKyAgICAgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI2Fs
cGhhLXNvbGlkIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTgsIDE4NSwg
MTk4KTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIH0KKyAgICAgICAgI3NvbGlkLWFscGhhIHsKKyAgICAgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigyMzAsIDEyOCwgNzYpOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgfQorICAgICAgICAjYWxwaGEt
YWxwaGEgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyMCwgMTg5LCAxODIp
OworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJz
b2xpZC1zb2xpZCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYWxwaGEtc29saWQiPjwvZGl2PgorICAg
IDxkaXYgaWQ9InNvbGlkLWFscGhhIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1hbHBoYSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtc2F0dXJh
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTE4
YmIxYmU4YzhjZDA3MzQ3ZTI0YmMxMGExMTA0NDE2MTA4Mjc5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJs
ZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbApAQCAtMCwwICsxLDEzNyBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8dGl0bGU+VGVzdCB0aGF0IGJs
ZW5kcyB0aGUgc291cmNlIGFuZCB0aGUgYmFja2Ryb3Agd2l0aCB0aGUgc2F0dXJhdGlvbiBibGVu
ZCBtb2RlLjwvdGl0bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93
LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIp
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICAgICAgI3NvbGlkLXNvbGlkIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJn
Yig5MCUsIDUwJSwgMzAlKTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUg
bWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1jb2xvci5mcycpIHNhdHVyYXRpb24gc291cmNlLWF0
b3ApLCBtaXhfY29sb3IgMC4xIDAuMiAwLjQgMS4wKTsKKyAgICAgICAgfQorICAgICAgICAjYWxw
aGEtc29saWQgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg5MCUsIDUwJSwg
MzAlLCAwLjUpOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSBtaXgodXJs
KCcuLi9yZXNvdXJjZXMvbWl4LWNvbG9yLmZzJykgc2F0dXJhdGlvbiBzb3VyY2UtYXRvcCksIG1p
eF9jb2xvciAwLjIgMC40IDAuOCAxLjApOworICAgICAgICB9CisgICAgICAgICNzb2xpZC1hbHBo
YSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTAlLCA1MCUsIDMwJSk7Cisg
ICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4uL3Jlc291cmNl
cy9taXgtY29sb3IuZnMnKSBzYXR1cmF0aW9uIHNvdXJjZS1hdG9wKSwgbWl4X2NvbG9yIDAuMiAw
LjQgMC44IDAuNSk7CisgICAgICAgIH0KKyAgICAgICAgI2FscGhhLWFscGhhIHsKKyAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTAlLCA1MCUsIDMwJSwgMC41KTsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAg
ICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1j
b2xvci5mcycpIHNhdHVyYXRpb24gc291cmNlLWF0b3ApLCBtaXhfY29sb3IgMC4yIDAuNCAwLjgg
MC41KTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0KKyAg
ICBUaGUgZm9sbG93aW5nIHByb29mIGFwcGxpZXMgdG8gdGhlIGZpcnN0IGNhc2UgKCNzb2xpZC1z
b2xpZCkgd2hlcmUgYm90aCB0aGUgYmFja2Ryb3AgYW5kIHRoZQorICAgIHNvdXJjZSBhcmUgc29s
aWQuCisKKyAgICBJbiB0aGlzIHRlc3QgdGhlIGZvbGxvd2luZyBjb21iaW5hdGlvbnMgYXJlIGFs
c28gdGVzdGVkOgorICAgICAgICBCYWNrZHJvcCB3aXRoIDAuNSBhbHBoYSBibGVuZGVkIHdpdGgg
c29saWQgc291cmNlCisgICAgICAgIFNvbGlkIGJhY2tkcm9wIGJsZW5kZWQgd2l0aCBzb3VyY2Ug
d2l0aCAwLjUgYWxwaGEKKyAgICAgICAgQmFja2Ryb3Agd2l0aCAwLjUgYmxlbmRlZCB3aXRoIHNv
dXJjZSB3aXRoIDAuNSBhbHBoYQorICAgIFRoZSB1bmRlcmxheWluZyBwcm9vZiBvZiB0aGUgYWJv
dmUgbWVudGlvbmVkIGNhc2VzIGlzIHRoZSBzYW1lOiB0aGUgY29sb3JzIGFyZSBwcmVtdWx0aXBs
aWVkCisgICAgYW5kIHRoZW4gYmxlbmRlZCB0b2dldGhlci4KKworICAgIFRoZSBmaW5hbCBjb2xv
ciBvZiAjc29saWQtc29saWQgZGVwZW5kcyBvbiB0aGUgInNhdHVyYXRpb24iIGJsZW5kIG1vZGUs
IHdoaWNoIGlzIGEgbm9uLXNlcGFyYWJsZQorICAgIGJsZW5kIG1vZGUuIFRoaXMgbWVhbnMgdGhh
dCBjb2xvcnMgYXJlIGJsZW5kZWQgdG9nZXRoZXIgYXMgYSB3aG9sZSwgbm90IGNvbXBvbmVudCBi
eSBjb21wb25lbnQuCisKKyAgICBUaGUgZm9ybXVsYSBmb3IgdGhpcyBibGVuZCBtb2RlIGlzOgor
ICAgICAgICBDciA9IEIoQ2IsIENzKSA9IFNldEx1bShTZXRTYXQoQ2IsIFNhdChDcykpLCBMdW0o
Q2IpKQorCisgICAgV2l0aDoKKyAgICAgICAgQ3I6IHRoZSByZXN1bHRpbmcgY29sb3IKKyAgICAg
ICAgQ2I6IHRoZSBiYWNrZHJvcCBjb2xvciwgd2hpY2ggaXMgI3NvbGlkLXNvbGlkICgib3JpZ2lu
YWwgRE9NIGVsZW1lbnQgY29sb3IiKQorICAgICAgICBDczogdGhlIHNvdXJjZSBjb2xvciwgd2hp
Y2ggaXMgbWl4X2NvbG9yCisgICAgICAgIFNhdChDYik6IHRoZSBzYXR1cmF0aW9uIG9mIENiLiBT
YXR1cmF0aW9uIGZvciBjb2xvciBDIGlzIGdlbmVyYWxseSBkZWZpbmVkIGJ5CisgICAgICAgICAg
IFNhdChDKTogbWF4KENyZWQsIENncmVlbiwgQ2JsdWUpIC0gbWluKENyZWQsIENncmVlbiwgQ2Js
dWUpCisgICAgICAgIEx1bShDcyk6IHRoZSBsdW1pbm9zaXR5IG9mIENzLiBMdW1pbm9zaXR5IGZv
ciBjb2xvciBDIGlzIGdlbmVyYWxseSBkZWZpbmVkIGJ5CisgICAgICAgICAgIEx1bShDKTogMC4z
ICogQ3JlZCArIDAuNTkgKiBDZ3JlZW4gKyAwLjExICogQ2JsdWUKKyAgICAgICAgU2V0U2F0KENi
LCBTYXQoQ3MpKTogdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgc2F0dXJhdGlvbgorICAgICAg
ICBTZXRMdW0oU2V0U2F0KENiLCBTYXQoQ3MpKSwgTHVtKENiKSk6IHRoZSBmdW5jdGlvbiB0aGF0
IHNldHMgdGhlIGx1bWlub3NpdHkuCisKKyAgICBUaGUgZnVuY3Rpb24gdGhhdCBzZXRzIHRoZSBs
dW1pbm9zaXR5IGwgb24gdGhlIGNvbG9yIEMgaXMgZ2VuZXJhbGx5IGRlZmluZWQgYnk6CisKKyAg
ICAgICAgU2V0THVtKEMsIGwpCisgICAgICAgICAgICBkID0gbCAtIEx1bShDKQorICAgICAgICAg
ICAgQ3JlZCA9IENyZWQgKyBkCisgICAgICAgICAgICBDZ3JlZW4gPSBDZ3JlZW4gKyBkCisgICAg
ICAgICAgICBDYmx1ZSA9IENibHVlICsgZAorICAgICAgICAgICAgcmV0dXJuIENsaXBDb2xvcihD
KQorCisgICAgQXQgdGhpcyBwb2ludCB0aGUgY29sb3IgQyBoYXMgdG8gYmUgY2xpcHBlZCBiZXR3
ZWVuIFswLi4xXSAgYnkgdGhlIENsaXBDb2xvciBmdW5jdGlvbiwgd2hpY2ggaXMKKyAgICBnZW5l
cmFsbHkgZGVmaW5lZCBieToKKworICAgICAgICBDbGlwQ29sb3IoQykKKyAgICAgICAgICAgIGwg
PSBMdW0oQykKKyAgICAgICAgICAgIG4gPSBtaW4oQ3JlZCwgQ2dyZWVuLCBDYmx1ZSkKKyAgICAg
ICAgICAgIHggPSBtYXgoQ3JlZCwgQ2dyZWVuLCBDYmx1ZSkKKyAgICAgICAgICAgIGlmIG4gPCAw
LjAKKyAgICAgICAgICAgICAgICBDcmVkID0gbCArICgoKENyZWQgLSBsKSAqIGwpIC8gKGwgLSBu
KSkKKyAgICAgICAgICAgICAgICBDZ3JlZW4gPSBsICsgKCgoQ2dyZWVuIC0gbCkgKiBsKSAvIChs
IC0gbikpCisgICAgICAgICAgICAgICAgQ2JsdWUgPSBsICsgKCgoQ2JsdWUgLSBsKSAqIGwpIC8g
KGwgLSBuKSkKKyAgICAgICAgICAgIGlmIHggPiAxLjAKKyAgICAgICAgICAgICAgICBDcmVkID0g
bCArICgoKENyZWQgLSBsKSAqICgxIC0gbCkpIC8gKHggLSBsKSkKKyAgICAgICAgICAgICAgICBD
Z3JlZW4gPSBsICsgKCgoQ2dyZWVuIC0gbCkgKiAoMSAtIGwpKSAvICh4IC0gbCkpCisgICAgICAg
ICAgICAgICAgQ2JsdWUgPSBsICsgKCgoQ2JsdWUgLSBsKSAqICgxIC0gbCkpIC8gKHggLSBsKSkK
KyAgICAgICAgICAgIHJldHVybiBDCisKKyAgICBUaGUgZnVuY3Rpb24gdGhhdCBzZXRzIHRoZSBz
YXR1cmF0aW9uIHMgb24gdGhlIGNvbG9yIEMgaXMgZ2VuZXJhbGx5IGRlZmluZWQgYnk6CisKKyAg
ICAgICAgU2V0U2F0KEMsIHMpCisgICAgICAgICAgICBpZihDbWF4ID4gQ21pbikKKyAgICAgICAg
ICAgICAgICBDbWlkID0gKCgoQ21pZCAtIENtaW4pICogcykgLyAoQ21heCAtIENtaW4pKQorICAg
ICAgICAgICAgICAgIENtYXggPSBzCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
Q21pZCA9IENtYXggPSAwCisgICAgICAgICAgICBDbWluID0gMAorICAgICAgICAgICAgcmV0dXJu
IEMKKworICAgIEluIHRoaXMgdGVzdCBjYXNlOgorICAgICAgICBMdW0oQ2IpID0gMC4zICogMC45
ICsgMC41OSAqIDAuNSArIDAuMTEgKiAwLjMKKyAgICAgICAgTHVtKENiKSA9IDAuMjcgKyAwLjI5
NSArIDAuMDMzCisgICAgICAgIEx1bShDYikgPSAwLjU5OAorCisgICAgICAgIFNhdChDcykgPSBt
YXgoMC4xLCAwLjIsIDAuNCkgLSBtaW4oMC4xLCAwLjIsIDAuNCkKKyAgICAgICAgU2F0KENzKSA9
IDAuNCAtIDAuMQorICAgICAgICBTYXQoQ3MpID0gMC4zCisKKyAgICAgICAgRm9yIHRoZSBzYWtl
IG9mIGJyZXZpdHkgdGhlIHJlc3VsdCBvZiB0aGlzIGNvbXB1dGF0aW9uIGlzIGNhbGxlZCBDdAor
ICAgICAgICBDdCA9IFNldFNhdChDYiwgU2F0KENzKSkKKyAgICAgICAgICAgIDAuOSA+IDAuMwor
ICAgICAgICAgICAgICAgIENtaWQgPSAoKCgwLjUgLSAwLjMpICogMC4zKSAvICgwLjkgLSAwLjMp
ID0gMC4yICogMC4zIC8gMC42ID0gMC4wNiAvIDAuNiA9IDAuMTAKKyAgICAgICAgICAgICAgICBD
bWF4ID0gMC4zCisgICAgICAgICAgICBDbWluID0gMAorICAgICAgICAgICAgcmV0dXJuICgwLjMs
IDAuMTAsIDAuMCkKKworICAgIENyID0gU2V0THVtKEN0LCAwLjU5OCkKKyAgICAgICAgZCA9IDAu
NTk4IC0gKDAuMyAqIDAuMyArIDAuNTkgKiAwLjEwICsgMC4xMSAqIDAuMCkgPSAwLjU5OCAtICgw
LjA5ICsgMC4wNTkpID0gMC41OTggLSAwLjE0OQorICAgICAgICBkID0gMC40NDkKKyAgICAgICAg
Q3JlZCA9IDAuMyArIDAuNDQ5ID0gMC43NDkKKyAgICAgICAgQ2dyZWVuID0gMC4xMCArIDAuNDQ5
ID0gMC41NDkKKyAgICAgICAgQ2JsdWUgPSAwLjAgKyAwLjQ0OSA9IDAuNDQ5CisgICAgICAgIHJl
dHVybiAoMC4wLjc0OSwgMC41NDksIDAuNDQ5KQorCisgICAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFs
ZW50IHRvICgxOTEsIDE0MCwgMTE1KSwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGNvbG9yLgorICAg
IFRoaXMgaXMgdGhlIGV4YWN0IGNvbG9yIHZhbHVlLCBvdGhlciBwb3J0cyBtaWdodCBleHBlcmll
bmNlIHNsaWdodCBkaWZmZXJlbmNlcy4KKy0tPgorICAgIDxkaXYgaWQ9InNvbGlkLXNvbGlkIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1zb2xpZCI+PC9kaXY+CisgICAgPGRpdiBpZD0ic29s
aWQtYWxwaGEiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFscGhhLWFscGhhIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggOGQ5YzQ5ZmYwZmY2ZTc2ZjcxMzBhZGJkMTJiMDE3MGZiY2Y2N2RmNS4uMTg1ZjFhZDQwZGI4
MDY4MWJiNDU1Y2M3YTI5Zjk2MmIxYjkwOWFhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk1MywxMSArOTUzLDEzIEBAIGZhc3QvY2FudmFzL2NhbnZh
cy1xdWFkcmF0aWMtc2FtZS1lbmRwb2ludC5odG1sCiBjc3MzL2ZpbHRlcnMvY29tcG9zaXRlZC1k
dXJpbmctdHJhbnNpdGlvbi1sYXllcnRyZWUuaHRtbAogCiAjIC0tLSBDdXN0b20gRmlsdGVycyAt
LS0KLSMgVGhlIGZvbGxvd2luZyAzIHRlc3RzIGFyZSBjdXJyZW50bHkgc2tpcHBlZCBvbiBNYWMg
Zm9yIHNsaWdodCBjb2xvciBkaWZmZXJlbmNlcywKKyMgVGhlIGZvbGxvd2luZyA1IHRlc3RzIGFy
ZSBjdXJyZW50bHkgc2tpcHBlZCBvbiBNYWMgZm9yIHNsaWdodCBjb2xvciBkaWZmZXJlbmNlcywK
ICMgcGxlYXNlIHNlZSB0aGUgcmVsZXZhbnQgYnVnOiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwNzQ4
Nwogd2Via2l0Lm9yZy9iLzEwNzQ4NyBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
YmxlbmQtZnJhY3Rpb25hbC1kZXN0aW5hdGlvbi1hbHBoYS5odG1sIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvMTA3NDg3IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFi
bGUtYmxlbmQtbW9kZS1jb2xvci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTA3NDg3IGNz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1s
dW1pbm9zaXR5Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDc0ODcgY3NzMy9maWx0ZXJz
L2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLWh1ZS5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMTA3NDg3IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1zYXR1cmF0aW9uLmh0bWwgWyBTa2lwIF0KIAog
IyAtLS0gVGV4dCAtLS0KIGZhc3QvZm9ybXMvdGV4dC1jb250cm9sLWludHJpbnNpYy13aWR0aHMu
aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191059</attachid>
            <date>2013-03-01 16:03:06 -0800</date>
            <delta_ts>2013-03-07 12:02:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109464-20130301155917.patch</filename>
            <type>text/plain</type>
            <size>23387</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc5YzU5N2FmMDRiNjkz
MjAzZDUwNjFiNzI4NmRlNTQyMWM1MmFlMy4uMWU1YzYzNDI1Y2Y1MWQzMDgwZTJlZjU2ZjRhNTk3
YjMwYzM5OWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTI4ICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgaHVlIGFuZCBzYXR1cmF0aW9uIG5vbi1zZXBhcmFibGUg
YmxlbmQgbW9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwOTQ2NAorCisgICAgICAgIEFkZGVkIHRoZSBmb2xsb3dpbmcgR0xTTCBoZWxwZXIgZnVu
Y3Rpb25zIHRvIHRoZSBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOgorCisgICAgICAgICAg
ICAtIGNzc19TYXQoQyk6IHJldHVybnMgdGhlIHNhdHVyYXRpb24gZm9yIHRoZSBjb2xvciBDCisg
ICAgICAgICAgICAtIGNzc19TZXRTYXQoQywgcyk6IHNldHMgdGhlIHNhdHVyYXRpb24gcyBvbiB0
aGUgY29sb3IgQworICAgICAgICAgICAgLSBjc3NfU2V0U2F0SGVscGVyKENtaW4sIENtaWQsIENt
YXgsIHMpOiBoZWxwZXIgZnVuY3Rpb24gZm9yIGNzc19TZXRTYXQKKworICAgICAgICBUaGUgYWJv
dmUgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGZvciB0aGUgImh1ZSIgYW5kICJzYXR1cmF0aW9u
IiBub24tc2VwYXJhYmxlCisgICAgICAgIGJsZW5kIG1vZGVzLCB0aGUgcmVsZXZhbnQgc3BlYyBm
b3Igc3VjaCBtb2RlcyBpcyBhdCBVUkw6CisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
RlhURi9yYXdmaWxlL3RpcC9jb21wb3NpdGluZy9pbmRleC5odG1sI2JsZW5kaW5nbm9uc2VwYXJh
YmxlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQt
bW9kZS1odWUuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmJs
ZW5kRnVuY3Rpb25TdHJpbmcpOgorCiAyMDEzLTAzLTAxICBWaWN0b3IgQ2FyYnVuZSAgPHZjYXJi
dW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdXBwb3J0IHBhZGRpbmcsIG1hcmdpbiBhbmQg
Ym9yZGVyIGZvciBpbnRlcm5hbCBVQSBjdWUgc3R5bGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXggNThlYmUzNGQ5NmRmNjQ1MDZhMGQ5NDRh
ZWNjYzRiODI5NjY3YzcyMi4uMWExODQzNDUzYzlhZmU3MzJjOTZhOTg5OGJkNWZhODFjOTdiNzcx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBA
IC0yOTIsNiArMjkyLDcgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmJs
ZW5kRnVuY3Rpb25TdHJpbmcoQmxlbmRNb2RlIGJsZW5kTW9kZSkKICAgICBjb25zdCBjaGFyKiBi
bGVuZENvbG9yRXhwcmVzc2lvbiA9ICJ2ZWMzKGNzc19CbGVuZENvbXBvbmVudChDYi5yLCBDcy5y
KSwgY3NzX0JsZW5kQ29tcG9uZW50KENiLmcsIENzLmcpLCBjc3NfQmxlbmRDb21wb25lbnQoQ2Iu
YiwgQ3MuYikpIjsKICAgICBjb25zdCBjaGFyKiBibGVuZENvbXBvbmVudEV4cHJlc3Npb24gPSAi
Q28gPSAwLjA7IjsKICAgICBib29sIG5lZWRzTHVtaW5vc2l0eUhlbHBlckZ1bmN0aW9ucyA9IGZh
bHNlOworICAgIGJvb2wgbmVlZHNTYXR1cmF0aW9uSGVscGVyRnVuY3Rpb25zID0gZmFsc2U7CiAg
ICAgU3RyaW5nIGJsZW5kRnVuY3Rpb25TdHJpbmc7CiAgICAgc3dpdGNoIChibGVuZE1vZGUpIHsK
ICAgICBjYXNlIEJsZW5kTW9kZU5vcm1hbDoKQEAgLTQxNiw5ICs0MTcsMTcgQEAgU3RyaW5nIEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmJsZW5kRnVuY3Rpb25TdHJpbmcoQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKICAgICAgICAgYmxlbmRDb2xvckV4cHJlc3Npb24gPSAiY3NzX1NldEx1bShD
YiwgY3NzX0x1bShDcykpIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCbGVuZE1vZGVIdWU6
CisgICAgICAgIG5lZWRzTHVtaW5vc2l0eUhlbHBlckZ1bmN0aW9ucyA9IHRydWU7CisgICAgICAg
IG5lZWRzU2F0dXJhdGlvbkhlbHBlckZ1bmN0aW9ucyA9IHRydWU7CisgICAgICAgIGJsZW5kQ29s
b3JFeHByZXNzaW9uID0gImNzc19TZXRMdW0oY3NzX1NldFNhdChDcywgY3NzX1NhdChDYikpLCBj
c3NfTHVtKENiKSkiOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJsZW5kTW9kZVNhdHVyYXRp
b246Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICAgICAgbmVlZHNMdW1pbm9zaXR5SGVscGVyRnVuY3Rpb25zID0gdHJ1ZTsKKyAgICAgICAg
bmVlZHNTYXR1cmF0aW9uSGVscGVyRnVuY3Rpb25zID0gdHJ1ZTsKKyAgICAgICAgYmxlbmRDb2xv
ckV4cHJlc3Npb24gPSAiY3NzX1NldEx1bShjc3NfU2V0U2F0KENiLCBjc3NfU2F0KENzKSksIGNz
c19MdW0oQ2IpKSI7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGlmIChuZWVkc0x1bWlub3NpdHlIZWxwZXJG
dW5jdGlvbnMpIHsKQEAgLTQ0Niw2ICs0NTUsNDkgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06OmJsZW5kRnVuY3Rpb25TdHJpbmcoQmxlbmRNb2RlIGJsZW5kTW9kZSkKICAg
ICAgICAgKSk7CiAgICAgfQogCisgICAgaWYgKG5lZWRzU2F0dXJhdGlvbkhlbHBlckZ1bmN0aW9u
cykgeworICAgICAgICBibGVuZEZ1bmN0aW9uU3RyaW5nLmFwcGVuZChTSEFERVIoCisgICAgICAg
ICAgICBtZWRpdW1wIGZsb2F0IGNzc19TYXQobWVkaXVtcCB2ZWMzIEMpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbWVkaXVtcCBmbG9hdCBjTWluID0gbWluKG1pbihDLnIsIEMuZyks
IEMuYik7CisgICAgICAgICAgICAgICAgbWVkaXVtcCBmbG9hdCBjTWF4ID0gbWF4KG1heChDLnIs
IEMuZyksIEMuYik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNNYXggLSBjTWluOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdm9pZCBjc3NfU2V0U2F0SGVscGVyKGlub3V0IG1lZGl1bXAg
ZmxvYXQgY01pbiwgaW5vdXQgbWVkaXVtcCBmbG9hdCBjTWlkLCBpbm91dCBtZWRpdW1wIGZsb2F0
IGNNYXgsIG1lZGl1bXAgZmxvYXQgcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoY01heCA+IGNNaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgY01pZCA9ICgoKGNNaWQgLSBj
TWluKSAqIHMpIC8gKGNNYXggLSBjTWluKSk7CisgICAgICAgICAgICAgICAgICAgIGNNYXggPSBz
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBjTWlkID0gY01h
eCA9IDAuMDsKKyAgICAgICAgICAgICAgICBjTWluID0gMC4wOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbWVkaXVtcCB2ZWMzIGNzc19TZXRTYXQobWVkaXVtcCB2ZWMzIEMsIG1lZGl1bXAg
ZmxvYXQgcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoQy5yIDw9IEMuZykg
eworICAgICAgICAgICAgICAgICAgICBpZiAoQy5nIDw9IEMuYikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNzc19TZXRTYXRIZWxwZXIoQy5yLCBDLmcsIEMuYiwgcyk7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEMuciA8PSBDLmIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzX1NldFNhdEhlbHBlcihDLnIsIEMuYiwgQy5n
LCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjc3NfU2V0U2F0SGVscGVyKEMuYiwgQy5yLCBDLmcsIHMpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKEMuciA8PSBDLmIpCisgICAgICAgICAgICAgICAgICAgICAgICBjc3NfU2V0U2F0SGVscGVy
KEMuZywgQy5yLCBDLmIsIHMpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChDLmcgPD0gQy5iKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNzc19TZXRTYXRIZWxwZXIoQy5nLCBDLmIsIEMuciwgcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzX1NldFNhdEhlbHBl
cihDLmIsIEMuZywgQy5yLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KSk7CisgICAgfQorCiAgICAgYmxlbmRGdW5jdGlvblN0cmluZy5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoU0hBREVSKAogICAgICAgICBtZWRpdW1wIGZsb2F0IGNzc19CbGVuZENvbXBvbmVudChtZWRp
dW1wIGZsb2F0IENiLCBtZWRpdW1wIGZsb2F0IENzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZThlMTMx
MzRjYTYzMzc1NjQwNzU5NzdjNmJkYTcxNzljMjUxMGEyZi4uMGVjN2U4NjVhMmNhYzRjZTBhYTRl
YmIyY2IyMjk4ZTA3MDAwMmY2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTI4ICBN
aWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgaHVlIGFuZCBzYXR1cmF0aW9uIG5vbi1zZXBhcmFi
bGUgYmxlbmQgbW9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTQ2NAorCisgICAgICAgIEFkZGVkIHJlbGV2YW50IHRlc3RzIGZvciB0aGUgImh1
ZSIgYW5kICJzYXR1cmF0aW9uIiBub24tc2VwYXJhYmxlIGJsZW5kIG1vZGVzLgorICAgICAgICBU
aGVzZSB0ZXN0cyBhcmUgY3VycmVudGx5IHNraXBwZWQgb24gTWFjIGR1ZSB0byBhIHNsaWdodCBj
b2xvciBkaWZmZXJlbmNlOyBwbGVhc2Ugc2VlIHJlbGV2YW50IGJ1ZzogaHR0cDovL3dlYmtpdC5v
cmcvYi8xMDc0ODcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJs
ZW5kLW1vZGUtaHVlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVy
cy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1odWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNl
cGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVu
ZC1tb2RlLXNhdHVyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDMtMDEgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFw
cGxlLmNvbT4KIAogCQlVbnJldmlld2VkIGdhcmRlbmluZyBvZiBBcHBsZVdpbiBwb3J0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
bnNlcGFyYWJsZS1ibGVuZC1tb2RlLWh1ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLWh1
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTdmODdhYTY3OTIwZWIyYWZmMmEwYTRiNDUy
ODQxOWM4NDU3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtaHVlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbCBsYW5nPSJlbiI+
Cis8aGVhZD4KKyAgICA8dGl0bGU+VGVzdCB0aGF0IGJsZW5kcyB0aGUgc291cmNlIGFuZCB0aGUg
YmFja2Ryb3Agd2l0aCB0aGUgaHVlIGJsZW5kIG1vZGUuPC90aXRsZT4KKyAgICA8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorICAgICAgICAvKiBUaGVzZSBhcmUgZXhhY3RseSB0aGUgY29sb3IgdmFs
dWVzIHdlIGV4cGVjdC4gU29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUgc2xpZ2h0IGRpZmZlcmVudAor
ICAgICAgICAgICBjb2xvciByZXN1bHQuICovCisgICAgICAgICNzb2xpZC1zb2xpZCB7CisgICAg
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTA4LCAxNTcsIDI1NSk7CisgICAgICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICB9Cisg
ICAgICAgICNhbHBoYS1zb2xpZCB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MTY3LCAxOTIsIDI0Mik7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICB9CisgICAgICAgICNzb2xpZC1hbHBoYSB7CisgICAgICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTY5LCAxNDIsIDE2Nik7CisgICAgICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICB9CisgICAg
ICAgICNhbHBoYS1hbHBoYSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA1
LCAxOTIsIDIwNCk7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxkaXYgaWQ9InNvbGlkLXNvbGlkIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1zb2xpZCI+
PC9kaXY+CisgICAgPGRpdiBpZD0ic29saWQtYWxwaGEiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFs
cGhhLWFscGhhIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQt
bW9kZS1odWUuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1odWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDE3MTE4
MWU0MjQ3YTI0OTQ3ZmU3ZDc5Nzc2ZTQ3MWI5ZmMyYTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1i
bGVuZC1tb2RlLWh1ZS5odG1sCkBAIC0wLDAgKzEsMTUxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDx0aXRsZT5UZXN0IHRoYXQgYmxlbmRzIHRoZSBz
b3VyY2UgYW5kIHRoZSBiYWNrZHJvcCB3aXRoIHRoZSBodWUgYmxlbmQgbW9kZS48L3RpdGxlPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NDdXN0b21G
aWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgICNzb2xpZC1z
b2xpZCB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTAlLCA1MCUsIDMwJSk7
CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4uL3Jlc291
cmNlcy9taXgtY29sb3IuZnMnKSBodWUgc291cmNlLWF0b3ApLCBtaXhfY29sb3IgMC4yIDAuNCAw
LjggMS4wKTsKKyAgICAgICAgfQorICAgICAgICAjYWxwaGEtc29saWQgeworICAgICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiYSg5MCUsIDUwJSwgMzAlLCAwLjUpOworICAgICAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIC13
ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvbWl4LWNvbG9y
LmZzJykgaHVlIHNvdXJjZS1hdG9wKSwgbWl4X2NvbG9yIDAuMiAwLjQgMC44IDEuMCk7CisgICAg
ICAgIH0KKyAgICAgICAgI3NvbGlkLWFscGhhIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYig5MCUsIDUwJSwgMzAlKTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9t
KG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1jb2xvci5mcycpIGh1ZSBzb3VyY2UtYXRv
cCksIG1peF9jb2xvciAwLjIgMC40IDAuOCAwLjUpOworICAgICAgICB9CisgICAgICAgICNhbHBo
YS1hbHBoYSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDkwJSwgNTAlLCAz
MCUsIDAuNSk7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwo
Jy4uL3Jlc291cmNlcy9taXgtY29sb3IuZnMnKSBodWUgc291cmNlLWF0b3ApLCBtaXhfY29sb3Ig
MC4yIDAuNCAwLjggMC41KTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzwhLS0KKyAgICBUaGUgZm9sbG93aW5nIHByb29mIGFwcGxpZXMgdG8gdGhlIGZpcnN0IGNh
c2UgKCNzb2xpZC1zb2xpZCkgd2hlcmUgYm90aCB0aGUgYmFja2Ryb3AgYW5kIHRoZQorICAgIHNv
dXJjZSBhcmUgc29saWQuCisKKyAgICBJbiB0aGlzIHRlc3QgdGhlIGZvbGxvd2luZyBjb21iaW5h
dGlvbnMgYXJlIGFsc28gdGVzdGVkOgorICAgICAgICBCYWNrZHJvcCB3aXRoIDAuNSBhbHBoYSBi
bGVuZGVkIHdpdGggc29saWQgc291cmNlCisgICAgICAgIFNvbGlkIGJhY2tkcm9wIGJsZW5kZWQg
d2l0aCBzb3VyY2Ugd2l0aCAwLjUgYWxwaGEKKyAgICAgICAgQmFja2Ryb3Agd2l0aCAwLjUgYWxw
aGEgYmxlbmRlZCB3aXRoIHNvdXJjZSB3aXRoIDAuNSBhbHBoYQorICAgIFRoZSB1bmRlcmx5aW5n
IHByb29mIG9mIHRoZSBhYm92ZSBtZW50aW9uZWQgY2FzZXMgaXMgdGhlIHNhbWU6IHRoZSBjb2xv
cnMgYXJlIHByZW11bHRpcGxpZWQKKyAgICBhbmQgdGhlbiBibGVuZGVkIHRvZ2V0aGVyLgorCisg
ICAgVGhlIGZpbmFsIGNvbG9yIG9mICNzb2xpZC1zb2xpZCBkZXBlbmRzIG9uIHRoZSAiaHVlIiBi
bGVuZCBtb2RlLCB3aGljaCBpcyBhIG5vbi1zZXBhcmFibGUKKyAgICBibGVuZCBtb2RlLiBUaGlz
IG1lYW5zIHRoYXQgY29sb3JzIGFyZSBibGVuZGVkIHRvZ2V0aGVyIGFzIGEgd2hvbGUsIG5vdCBj
b21wb25lbnQgYnkgY29tcG9uZW50LgorCisgICAgVGhlIGZvcm11bGEgZm9yIHRoaXMgYmxlbmQg
bW9kZSBpczoKKyAgICAgICAgQ3IgPSBCKENiLCBDcykgPSBTZXRMdW0oU2V0U2F0KENzLCBTYXQo
Q2IpKSwgTHVtKENiKSkKKworICAgIFdpdGg6CisgICAgICAgIENyOiB0aGUgcmVzdWx0aW5nIGNv
bG9yCisgICAgICAgIENiOiB0aGUgYmFja2Ryb3AgY29sb3IsIHdoaWNoIGlzICNzb2xpZC1zb2xp
ZCAoIm9yaWdpbmFsIERPTSBlbGVtZW50IGNvbG9yIikKKyAgICAgICAgQ3M6IHRoZSBzb3VyY2Ug
Y29sb3IsIHdoaWNoIGlzIG1peF9jb2xvcgorICAgICAgICBMdW0oQ2IpOiB0aGUgbHVtaW5vc2l0
eSBvZiBDYi4gTHVtaW5vc2l0eSBmb3IgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBieQor
ICAgICAgICAgICBMdW0oQyk6IDAuMyAqIENyZWQgKyAwLjU5ICogQ2dyZWVuICsgMC4xMSAqIENi
bHVlCisgICAgICAgIFNhdChDYik6IHRoZSBzYXR1cmF0aW9uIG9mIENiLiBTYXR1cmF0aW9uIGZv
ciBjb2xvciBDIGlzIGdlbmVyYWxseSBkZWZpbmVkIGJ5CisgICAgICAgICAgIFNhdChDKTogbWF4
KENyZWQsIENncmVlbiwgQ2JsdWUpIC0gbWluKENyZWQsIENncmVlbiwgQ2JsdWUpCisgICAgICAg
U2V0U2F0KENzLCBTYXQoQ2IpKTogdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgc2F0dXJhdGlv
bgorICAgICAgIFNldEx1bShTZXRTYXQoQ3MsIFNhdChDYikpLCBMdW0oQ2IpKTogdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB0aGUgbHVtaW5vc2l0eS4KKworICAgIFRoZSBmdW5jdGlvbiB0aGF0IHNl
dHMgdGhlIGx1bWlub3NpdHkgbCBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBi
eToKKworICAgICAgICBTZXRMdW0oQywgbCkKKyAgICAgICAgICAgIGQgPSBsIC0gTHVtKEMpCisg
ICAgICAgICAgICBDcmVkID0gQ3JlZCArIGQKKyAgICAgICAgICAgIENncmVlbiA9IENncmVlbiAr
IGQKKyAgICAgICAgICAgIENibHVlID0gQ2JsdWUgKyBkCisgICAgICAgICAgICByZXR1cm4gQ2xp
cENvbG9yKEMpCisKKyAgICBBdCB0aGlzIHBvaW50IHRoZSBjb2xvciBDIGhhcyB0byBiZSBjbGlw
cGVkIGJldHdlZW4gWzAuLjFdICBieSB0aGUgQ2xpcENvbG9yIGZ1bmN0aW9uLCB3aGljaCBpcwor
ICAgIGdlbmVyYWxseSBkZWZpbmVkIGJ5OgorCisgICAgICAgIENsaXBDb2xvcihDKQorICAgICAg
ICAgICAgbCA9IEx1bShDKQorICAgICAgICAgICAgbiA9IG1pbihDcmVkLCBDZ3JlZW4sIENibHVl
KQorICAgICAgICAgICAgeCA9IG1heChDcmVkLCBDZ3JlZW4sIENibHVlKQorICAgICAgICAgICAg
aWYgbiA8IDAuMAorICAgICAgICAgICAgICAgIENyZWQgPSBsICsgKCgoQ3JlZCAtIGwpICogbCkg
LyAobCAtIG4pKQorICAgICAgICAgICAgICAgIENncmVlbiA9IGwgKyAoKChDZ3JlZW4gLSBsKSAq
IGwpIC8gKGwgLSBuKSkKKyAgICAgICAgICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1ZSAtIGwp
ICogbCkgLyAobCAtIG4pKQorICAgICAgICAgICAgaWYgeCA+IDEuMAorICAgICAgICAgICAgICAg
IENyZWQgPSBsICsgKCgoQ3JlZCAtIGwpICogKDEgLSBsKSkgLyAoeCAtIGwpKQorICAgICAgICAg
ICAgICAgIENncmVlbiA9IGwgKyAoKChDZ3JlZW4gLSBsKSAqICgxIC0gbCkpIC8gKHggLSBsKSkK
KyAgICAgICAgICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1ZSAtIGwpICogKDEgLSBsKSkgLyAo
eCAtIGwpKQorICAgICAgICAgICAgcmV0dXJuIEMKKworICAgIFRoZSBmdW5jdGlvbiB0aGF0IHNl
dHMgdGhlIHNhdHVyYXRpb24gcyBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVmaW5lZCBi
eToKKworICAgICAgICBTZXRTYXQoQywgcykKKyAgICAgICAgICAgIGlmKENtYXggPiBDbWluKQor
ICAgICAgICAgICAgICAgIENtaWQgPSAoKChDbWlkIC0gQ21pbikgKiBzKSAvIChDbWF4IC0gQ21p
bikpCisgICAgICAgICAgICAgICAgQ21heCA9IHMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBDbWlkID0gQ21heCA9IDAKKyAgICAgICAgICAgIENtaW4gPSAwCisgICAgICAgICAg
ICByZXR1cm4gQworCisgICAgSW4gdGhpcyB0ZXN0IGNhc2U6CisgICAgICAgIEx1bShDYikgPSAw
LjMgKiAwLjkgKyAwLjU5ICogMC41ICsgMC4xMSAqIDAuMworICAgICAgICBMdW0oQ2IpID0gMC4y
NyArIDAuMjk1ICsgMC4wMzMKKyAgICAgICAgTHVtKENiKSA9IDAuNTk4CisKKyAgICAgICAgU2F0
KENiKSA9IG1heCgwLjksIDAuNSwgMC4zKSAtIG1pbigwLjksIDAuNSwgMC4zKQorICAgICAgICBT
YXQoQ2IpID0gMC45IC0gMC4zCisgICAgICAgIFNhdChDYikgPSAwLjYKKworICAgICAgICBGb3Ig
dGhlIHNha2Ugb2YgYnJldml0eSB0aGUgcmVzdWx0IG9mIHRoaXMgY29tcHV0YXRpb24gaXMgY2Fs
bGVkIEN0CisgICAgICAgIEN0ID0gU2V0U2F0KENzLCBTYXQoQ2IpKQorICAgICAgICAgICAgMC44
ID4gMC4yCisgICAgICAgICAgICAgICAgQ21pZCA9ICgoKDAuNCAtIDAuMikgKiAwLjYpIC8gKDAu
OCAtIDAuMikpID0gKDAuMiAqIDAuNikgLyAwLjYgPSAwLjIKKyAgICAgICAgICAgICAgICBDbWF4
ID0gMC42CisgICAgICAgICAgICBDbWluID0gMAorICAgICAgICAgICAgcmV0dXJuICgwLCAwLjIs
IDAuNikKKworICAgICAgICBDciA9IFNldEx1bShDdCwgTHVtKENiKSkKKyAgICAgICAgICAgIGQg
PSAwLjU5OCAtICgwLjMgKiAwLjAgKyAwLjU5ICogMC4yICsgMC4xMSAqIDAuNikgPSAwLjExOCAr
IDAuMDY2ID0gMC4xODQKKyAgICAgICAgICAgIGQgPSAwLjU5OCAtICgwLjExOCArIDAuMDY2KSA9
IDAuNTk4IC0gMC4xODQKKyAgICAgICAgICAgIGQgPSAwLjQxNAorICAgICAgICAgICAgQ3JlZCA9
IDAuMCArIDAuNDE0ID0gMC40MTQKKyAgICAgICAgICAgIEdyZWVuID0gMC4yICsgMC40MTQgPSAw
LjYxNAorICAgICAgICAgICAgQ2JsdWUgPSAwLjYgKyAwLjQxNCA9IDEuMDE0CisgICAgICAgICAg
ICByZXR1cm4gQ2xpcENvbG9yKDAuNDE0LCAwLjYxNCwgMS4wMTQpCisKKyAgICAgICAgQ2xpcENv
bG9yKDAuNDE0LCAwLjYxNCwgMS4wMTQpCisgICAgICAgICAgICBsID0gMC4zICogMC40MTQgKyAw
LjU5ICogMC42MTQgKyAwLjExICogMS4xMDE0ID0gMC4xMjQyICsgMC4zNjIyNiArIDAuMTIxMTU0
ID0gMC42MDc2MTQKKyAgICAgICAgICAgIG4gPSBtaW4oMC40MTQsIDAuNjE0LCAxLjAxNCkgPSAw
LjQxNAorICAgICAgICAgICAgeCA9IG1heCgwLjQxNCwgMC42MTQsIDEuMDE0KSA9IDEuMDE0Cisg
ICAgICAgICAgICB4ID4gMS4wCisgICAgICAgICAgICAgICAgQ3JlZCA9IDAuNjA3NjE0ICsgKCgo
MC40MTQgLSAwLjYwNzYxNCkgKiAoMSAtIDAuNjA3NjE0KSkgLyAoMS4wMTQgLSAwLjYwNzYxNCkp
ID0gCisgICAgICAgICAgICAgICAgICAgICA9IDAuNjA3NjE0ICsgKCgtMC4xOTM2MTQgKiAwLjM5
MjM4NikgLyAwLjQwNjM4NikgPSAwLjYwNzYxNCAtICgwLjA3NTk3MTQyIC8gMC40MDYzODYpID0g
MC42MDc2MTQgLSAwLjE4Njk0Mzk5ID0gMC40MjA2NzAwMQorICAgICAgICAgICAgICAgIENncmVl
biA9IDAuNjA3NjE0ICsgKCgoMC42MTQgLSAwLjYwNzYxNCkgKiAoMSAtIDAuNjA3NjE0KSkgLyAo
MS4wMTQgLSAwLjYwNzYxNCkpID0KKyAgICAgICAgICAgICAgICAgICAgICAgPSAwLjYwNzYxNCAr
ICgoMC4wMDMzODYgKiAwLjM5MjM4NikgLyAwLjQwNjM4NiA9IDAuNjA3NjE0ICsgKDAuMDAxMzI4
NjIgLyAwLjQwNjM4NikgPSAwLjYwNzYxNCArIDAuMDAzMjY5MzUgPSAwLjYxMDg4MzM1CisgICAg
ICAgICAgICAgICAgQ2JsdWUgPSAwLjYwNzYxNCArICgoKDEuMDE0IC0gMC42MDc2MTQpICogKDEg
LSAwLjYwNzYxNCkpIC8gKDEuMDE0IC0gMC42MDc2MTQpID0KKyAgICAgICAgICAgICAgICAgICAg
ICA9IDAuNjA3NjE0ICsgKCgwLjQwNjM4NiAqIDAuMzkyMzg2KSAvIDAuNDA2Mzg2KSA9IDAuNjA3
NjE0ICsgKDAuMTU5NDYwMTggLyAwLjQwNjM4NikgPSAwLjYwNzYxNCArIDAuMzkyMzg2MDEgPSAx
LjAKKyAgICAgICAgICAgIHJldHVybiAoMC40MiwgMC42MSwgMS4wKQorCisgICAgVGhpcyB2YWx1
ZSBpcyBlcXVpdmFsZW50IHRvICgxMDgsIDE1NywgMjU1KSwgd2hpY2ggaXMgdGhlIGV4cGVjdGVk
IGNvbG9yLgorICAgIFRoaXMgaXMgdGhlIGV4YWN0IGNvbG9yIHZhbHVlLCBvdGhlciBwb3J0cyBt
aWdodCBleHBlcmllbmNlIHNsaWdodCBkaWZmZXJlbmNlcy4KKy0tPgorICAgIDxkaXYgaWQ9InNv
bGlkLXNvbGlkIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1zb2xpZCI+PC9kaXY+CisgICAg
PGRpdiBpZD0ic29saWQtYWxwaGEiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFscGhhLWFscGhhIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1zYXR1cmF0
aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtc2F0dXJhdGlvbi1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxZDQ5YzgyYjBhYTMyMjFlMmMxNDUwZGJjMmEwOTJkNmVlYTc0YjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1m
aWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1vZGUtc2F0dXJhdGlvbi1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+
CisgICAgPHRpdGxlPlRlc3QgdGhhdCBibGVuZHMgdGhlIHNvdXJjZSBhbmQgdGhlIGJhY2tkcm9w
IHdpdGggdGhlIHNhdHVyYXRpb24gYmxlbmQgbW9kZS48L3RpdGxlPgorICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgICAgIC8qIFRoZXNlIGFyZSBleGFjdGx5IHRoZSBjb2xvciB2YWx1
ZXMgd2UgZXhwZWN0LiBTb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBzbGlnaHQgZGlmZmVyZW50Cisg
ICAgICAgICAgIGNvbG9yIHJlc3VsdC4gKi8KKyAgICAgICAgI3NvbGlkLXNvbGlkIHsKKyAgICAg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTEsIDE0MSwgMTE1KTsKKyAgICAgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAg
ICAgICAgI2FscGhhLXNvbGlkIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigx
OTgsIDE4NSwgMTk4KTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3NvbGlkLWFscGhhIHsKKyAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzAsIDEyOCwgNzYpOworICAgICAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgfQorICAgICAg
ICAjYWxwaGEtYWxwaGEgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyMCwg
MTg5LCAxODIpOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
ZGl2IGlkPSJzb2xpZC1zb2xpZCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYWxwaGEtc29saWQiPjwv
ZGl2PgorICAgIDxkaXYgaWQ9InNvbGlkLWFscGhhIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBo
YS1hbHBoYSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbm9uc2VwYXJhYmxlLWJsZW5kLW1v
ZGUtc2F0dXJhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0
b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYzMyOGJiZjk0ZDZhYzQ0MmJiNzliMzJjNGNhMjJkYzllYzExOWM4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5v
bnNlcGFyYWJsZS1ibGVuZC1tb2RlLXNhdHVyYXRpb24uaHRtbApAQCAtMCwwICsxLDEzNyBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8dGl0bGU+VGVz
dCB0aGF0IGJsZW5kcyB0aGUgc291cmNlIGFuZCB0aGUgYmFja2Ryb3Agd2l0aCB0aGUgc2F0dXJh
dGlvbiBibGVuZCBtb2RlLjwvdGl0bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiLCAiMSIpOworICAgICAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJs
ZWQiLCAiMSIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAgICAgI3NvbGlkLXNvbGlkIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYig5MCUsIDUwJSwgMzAlKTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3Vz
dG9tKG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1jb2xvci5mcycpIHNhdHVyYXRpb24g
c291cmNlLWF0b3ApLCBtaXhfY29sb3IgMC4xIDAuMiAwLjQgMS4wKTsKKyAgICAgICAgfQorICAg
ICAgICAjYWxwaGEtc29saWQgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg5
MCUsIDUwJSwgMzAlLCAwLjUpOworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9u
ZSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvbWl4LWNvbG9yLmZzJykgc2F0dXJhdGlvbiBzb3VyY2Ut
YXRvcCksIG1peF9jb2xvciAwLjIgMC40IDAuOCAxLjApOworICAgICAgICB9CisgICAgICAgICNz
b2xpZC1hbHBoYSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTAlLCA1MCUs
IDMwJSk7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4u
L3Jlc291cmNlcy9taXgtY29sb3IuZnMnKSBzYXR1cmF0aW9uIHNvdXJjZS1hdG9wKSwgbWl4X2Nv
bG9yIDAuMiAwLjQgMC44IDAuNSk7CisgICAgICAgIH0KKyAgICAgICAgI2FscGhhLWFscGhhIHsK
KyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTAlLCA1MCUsIDMwJSwgMC41KTsK
KyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybCgnLi4vcmVzb3Vy
Y2VzL21peC1jb2xvci5mcycpIHNhdHVyYXRpb24gc291cmNlLWF0b3ApLCBtaXhfY29sb3IgMC4y
IDAuNCAwLjggMC41KTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzwhLS0KKyAgICBUaGUgZm9sbG93aW5nIHByb29mIGFwcGxpZXMgdG8gdGhlIGZpcnN0IGNhc2Ug
KCNzb2xpZC1zb2xpZCkgd2hlcmUgYm90aCB0aGUgYmFja2Ryb3AgYW5kIHRoZQorICAgIHNvdXJj
ZSBhcmUgc29saWQuCisKKyAgICBJbiB0aGlzIHRlc3QgdGhlIGZvbGxvd2luZyBjb21iaW5hdGlv
bnMgYXJlIGFsc28gdGVzdGVkOgorICAgICAgICBCYWNrZHJvcCB3aXRoIDAuNSBhbHBoYSBibGVu
ZGVkIHdpdGggc29saWQgc291cmNlCisgICAgICAgIFNvbGlkIGJhY2tkcm9wIGJsZW5kZWQgd2l0
aCBzb3VyY2Ugd2l0aCAwLjUgYWxwaGEKKyAgICAgICAgQmFja2Ryb3Agd2l0aCAwLjUgYWxwaGEg
YmxlbmRlZCB3aXRoIHNvdXJjZSB3aXRoIDAuNSBhbHBoYQorICAgIFRoZSB1bmRlcmx5aW5nIHBy
b29mIG9mIHRoZSBhYm92ZSBtZW50aW9uZWQgY2FzZXMgaXMgdGhlIHNhbWU6IHRoZSBjb2xvcnMg
YXJlIHByZW11bHRpcGxpZWQKKyAgICBhbmQgdGhlbiBibGVuZGVkIHRvZ2V0aGVyLgorCisgICAg
VGhlIGZpbmFsIGNvbG9yIG9mICNzb2xpZC1zb2xpZCBkZXBlbmRzIG9uIHRoZSAic2F0dXJhdGlv
biIgYmxlbmQgbW9kZSwgd2hpY2ggaXMgYSBub24tc2VwYXJhYmxlCisgICAgYmxlbmQgbW9kZS4g
VGhpcyBtZWFucyB0aGF0IGNvbG9ycyBhcmUgYmxlbmRlZCB0b2dldGhlciBhcyBhIHdob2xlLCBu
b3QgY29tcG9uZW50IGJ5IGNvbXBvbmVudC4KKworICAgIFRoZSBmb3JtdWxhIGZvciB0aGlzIGJs
ZW5kIG1vZGUgaXM6CisgICAgICAgIENyID0gQihDYiwgQ3MpID0gU2V0THVtKFNldFNhdChDYiwg
U2F0KENzKSksIEx1bShDYikpCisKKyAgICBXaXRoOgorICAgICAgICBDcjogdGhlIHJlc3VsdGlu
ZyBjb2xvcgorICAgICAgICBDYjogdGhlIGJhY2tkcm9wIGNvbG9yLCB3aGljaCBpcyAjc29saWQt
c29saWQgKCJvcmlnaW5hbCBET00gZWxlbWVudCBjb2xvciIpCisgICAgICAgIENzOiB0aGUgc291
cmNlIGNvbG9yLCB3aGljaCBpcyBtaXhfY29sb3IKKyAgICAgICAgU2F0KENiKTogdGhlIHNhdHVy
YXRpb24gb2YgQ2IuIFNhdHVyYXRpb24gZm9yIGNvbG9yIEMgaXMgZ2VuZXJhbGx5IGRlZmluZWQg
YnkKKyAgICAgICAgICAgU2F0KEMpOiBtYXgoQ3JlZCwgQ2dyZWVuLCBDYmx1ZSkgLSBtaW4oQ3Jl
ZCwgQ2dyZWVuLCBDYmx1ZSkKKyAgICAgICAgTHVtKENzKTogdGhlIGx1bWlub3NpdHkgb2YgQ3Mu
IEx1bWlub3NpdHkgZm9yIGNvbG9yIEMgaXMgZ2VuZXJhbGx5IGRlZmluZWQgYnkKKyAgICAgICAg
ICAgTHVtKEMpOiAwLjMgKiBDcmVkICsgMC41OSAqIENncmVlbiArIDAuMTEgKiBDYmx1ZQorICAg
ICAgICBTZXRTYXQoQ2IsIFNhdChDcykpOiB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHRoZSBzYXR1
cmF0aW9uCisgICAgICAgIFNldEx1bShTZXRTYXQoQ2IsIFNhdChDcykpLCBMdW0oQ2IpKTogdGhl
IGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgbHVtaW5vc2l0eS4KKworICAgIFRoZSBmdW5jdGlvbiB0
aGF0IHNldHMgdGhlIGx1bWlub3NpdHkgbCBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVm
aW5lZCBieToKKworICAgICAgICBTZXRMdW0oQywgbCkKKyAgICAgICAgICAgIGQgPSBsIC0gTHVt
KEMpCisgICAgICAgICAgICBDcmVkID0gQ3JlZCArIGQKKyAgICAgICAgICAgIENncmVlbiA9IENn
cmVlbiArIGQKKyAgICAgICAgICAgIENibHVlID0gQ2JsdWUgKyBkCisgICAgICAgICAgICByZXR1
cm4gQ2xpcENvbG9yKEMpCisKKyAgICBBdCB0aGlzIHBvaW50IHRoZSBjb2xvciBDIGhhcyB0byBi
ZSBjbGlwcGVkIGJldHdlZW4gWzAuLjFdICBieSB0aGUgQ2xpcENvbG9yIGZ1bmN0aW9uLCB3aGlj
aCBpcworICAgIGdlbmVyYWxseSBkZWZpbmVkIGJ5OgorCisgICAgICAgIENsaXBDb2xvcihDKQor
ICAgICAgICAgICAgbCA9IEx1bShDKQorICAgICAgICAgICAgbiA9IG1pbihDcmVkLCBDZ3JlZW4s
IENibHVlKQorICAgICAgICAgICAgeCA9IG1heChDcmVkLCBDZ3JlZW4sIENibHVlKQorICAgICAg
ICAgICAgaWYgbiA8IDAuMAorICAgICAgICAgICAgICAgIENyZWQgPSBsICsgKCgoQ3JlZCAtIGwp
ICogbCkgLyAobCAtIG4pKQorICAgICAgICAgICAgICAgIENncmVlbiA9IGwgKyAoKChDZ3JlZW4g
LSBsKSAqIGwpIC8gKGwgLSBuKSkKKyAgICAgICAgICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1
ZSAtIGwpICogbCkgLyAobCAtIG4pKQorICAgICAgICAgICAgaWYgeCA+IDEuMAorICAgICAgICAg
ICAgICAgIENyZWQgPSBsICsgKCgoQ3JlZCAtIGwpICogKDEgLSBsKSkgLyAoeCAtIGwpKQorICAg
ICAgICAgICAgICAgIENncmVlbiA9IGwgKyAoKChDZ3JlZW4gLSBsKSAqICgxIC0gbCkpIC8gKHgg
LSBsKSkKKyAgICAgICAgICAgICAgICBDYmx1ZSA9IGwgKyAoKChDYmx1ZSAtIGwpICogKDEgLSBs
KSkgLyAoeCAtIGwpKQorICAgICAgICAgICAgcmV0dXJuIEMKKworICAgIFRoZSBmdW5jdGlvbiB0
aGF0IHNldHMgdGhlIHNhdHVyYXRpb24gcyBvbiB0aGUgY29sb3IgQyBpcyBnZW5lcmFsbHkgZGVm
aW5lZCBieToKKworICAgICAgICBTZXRTYXQoQywgcykKKyAgICAgICAgICAgIGlmKENtYXggPiBD
bWluKQorICAgICAgICAgICAgICAgIENtaWQgPSAoKChDbWlkIC0gQ21pbikgKiBzKSAvIChDbWF4
IC0gQ21pbikpCisgICAgICAgICAgICAgICAgQ21heCA9IHMKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBDbWlkID0gQ21heCA9IDAKKyAgICAgICAgICAgIENtaW4gPSAwCisgICAg
ICAgICAgICByZXR1cm4gQworCisgICAgSW4gdGhpcyB0ZXN0IGNhc2U6CisgICAgICAgIEx1bShD
YikgPSAwLjMgKiAwLjkgKyAwLjU5ICogMC41ICsgMC4xMSAqIDAuMworICAgICAgICBMdW0oQ2Ip
ID0gMC4yNyArIDAuMjk1ICsgMC4wMzMKKyAgICAgICAgTHVtKENiKSA9IDAuNTk4CisKKyAgICAg
ICAgU2F0KENzKSA9IG1heCgwLjEsIDAuMiwgMC40KSAtIG1pbigwLjEsIDAuMiwgMC40KQorICAg
ICAgICBTYXQoQ3MpID0gMC40IC0gMC4xCisgICAgICAgIFNhdChDcykgPSAwLjMKKworICAgICAg
ICBGb3IgdGhlIHNha2Ugb2YgYnJldml0eSB0aGUgcmVzdWx0IG9mIHRoaXMgY29tcHV0YXRpb24g
aXMgY2FsbGVkIEN0CisgICAgICAgIEN0ID0gU2V0U2F0KENiLCBTYXQoQ3MpKQorICAgICAgICAg
ICAgMC45ID4gMC4zCisgICAgICAgICAgICAgICAgQ21pZCA9ICgoKDAuNSAtIDAuMykgKiAwLjMp
IC8gKDAuOSAtIDAuMykgPSAwLjIgKiAwLjMgLyAwLjYgPSAwLjA2IC8gMC42ID0gMC4xMAorICAg
ICAgICAgICAgICAgIENtYXggPSAwLjMKKyAgICAgICAgICAgIENtaW4gPSAwCisgICAgICAgICAg
ICByZXR1cm4gKDAuMywgMC4xMCwgMC4wKQorCisgICAgQ3IgPSBTZXRMdW0oQ3QsIDAuNTk4KQor
ICAgICAgICBkID0gMC41OTggLSAoMC4zICogMC4zICsgMC41OSAqIDAuMTAgKyAwLjExICogMC4w
KSA9IDAuNTk4IC0gKDAuMDkgKyAwLjA1OSkgPSAwLjU5OCAtIDAuMTQ5CisgICAgICAgIGQgPSAw
LjQ0OQorICAgICAgICBDcmVkID0gMC4zICsgMC40NDkgPSAwLjc0OQorICAgICAgICBDZ3JlZW4g
PSAwLjEwICsgMC40NDkgPSAwLjU0OQorICAgICAgICBDYmx1ZSA9IDAuMCArIDAuNDQ5ID0gMC40
NDkKKyAgICAgICAgcmV0dXJuICgwLjc0OSwgMC41NDksIDAuNDQ5KQorCisgICAgVGhpcyB2YWx1
ZSBpcyBlcXVpdmFsZW50IHRvICgxOTEsIDE0MCwgMTE1KSwgd2hpY2ggaXMgdGhlIGV4cGVjdGVk
IGNvbG9yLgorICAgIFRoaXMgaXMgdGhlIGV4YWN0IGNvbG9yIHZhbHVlLCBvdGhlciBwb3J0cyBt
aWdodCBleHBlcmllbmNlIHNsaWdodCBkaWZmZXJlbmNlcy4KKy0tPgorICAgIDxkaXYgaWQ9InNv
bGlkLXNvbGlkIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJhbHBoYS1zb2xpZCI+PC9kaXY+CisgICAg
PGRpdiBpZD0ic29saWQtYWxwaGEiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFscGhhLWFscGhhIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMWJlZmFmZDRjOGI0ZDI4ODQzZDNmMWJjMDA3ZDVlNGE3MmRmOTQzOC4u
ODQzNzllODYzN2RjMDYzZDU0NGNmZDdjMTA0MzQwZmUxZDNmMmY4YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk1MywxMSArOTUzLDEzIEBAIGZhc3Qv
Y2FudmFzL2NhbnZhcy1xdWFkcmF0aWMtc2FtZS1lbmRwb2ludC5odG1sCiBjc3MzL2ZpbHRlcnMv
Y29tcG9zaXRlZC1kdXJpbmctdHJhbnNpdGlvbi1sYXllcnRyZWUuaHRtbAogCiAjIC0tLSBDdXN0
b20gRmlsdGVycyAtLS0KLSMgVGhlIGZvbGxvd2luZyAzIHRlc3RzIGFyZSBjdXJyZW50bHkgc2tp
cHBlZCBvbiBNYWMgZm9yIHNsaWdodCBjb2xvciBkaWZmZXJlbmNlcywKKyMgVGhlIGZvbGxvd2lu
ZyA1IHRlc3RzIGFyZSBjdXJyZW50bHkgc2tpcHBlZCBvbiBNYWMgZm9yIHNsaWdodCBjb2xvciBk
aWZmZXJlbmNlcywKICMgcGxlYXNlIHNlZSB0aGUgcmVsZXZhbnQgYnVnOiBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwNzQ4Nwogd2Via2l0Lm9yZy9iLzEwNzQ4NyBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1
c3RvbS1maWx0ZXItYmxlbmQtZnJhY3Rpb25hbC1kZXN0aW5hdGlvbi1hbHBoYS5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTA3NDg3IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1jb2xvci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTA3NDg3IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUt
YmxlbmQtbW9kZS1sdW1pbm9zaXR5Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDc0ODcg
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLW5vbnNlcGFyYWJsZS1ibGVuZC1tb2Rl
LWh1ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA3NDg3IGNzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1ub25zZXBhcmFibGUtYmxlbmQtbW9kZS1zYXR1cmF0aW9uLmh0bWwg
WyBTa2lwIF0KIAogIyAtLS0gVGV4dCAtLS0KIGZhc3QvZm9ybXMvdGV4dC1jb250cm9sLWludHJp
bnNpYy13aWR0aHMuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>