<?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>68476</bug_id>
          
          <creation_ts>2011-09-20 14:25:47 -0700</creation_ts>
          <short_desc>Make -webkit-filter animatable</short_desc>
          <delta_ts>2011-12-14 13:16:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>68475</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>470338</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-09-20 14:25:47 -0700</bug_when>
    <thetext>We&apos;ll need some logic to animate filters, similar to the way transforms animate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470339</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-09-20 14:26:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/10155818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519030</commentid>
    <comment_count>2</comment_count>
      <attachid>118736</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-11 23:04:46 -0800</bug_when>
    <thetext>Created attachment 118736
Work in progresss. Only blur() animates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519295</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-12-12 10:09:12 -0800</bug_when>
    <thetext>Cool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519747</commentid>
    <comment_count>4</comment_count>
      <attachid>118928</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-12 18:06:39 -0800</bug_when>
    <thetext>Created attachment 118928
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520694</commentid>
    <comment_count>5</comment_count>
      <attachid>119158</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-13 22:57:09 -0800</bug_when>
    <thetext>Created attachment 119158
Fixed testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520707</commentid>
    <comment_count>6</comment_count>
      <attachid>119160</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-13 23:13:14 -0800</bug_when>
    <thetext>Created attachment 119160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520714</commentid>
    <comment_count>7</comment_count>
      <attachid>119160</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 23:17:58 -0800</bug_when>
    <thetext>Comment on attachment 119160
Patch

Attachment 119160 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10871121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520716</commentid>
    <comment_count>8</comment_count>
      <attachid>119160</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-13 23:19:21 -0800</bug_when>
    <thetext>Comment on attachment 119160
Patch

Attachment 119160 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10876139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520721</commentid>
    <comment_count>9</comment_count>
      <attachid>119166</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-13 23:27:47 -0800</bug_when>
    <thetext>Created attachment 119166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520733</commentid>
    <comment_count>10</comment_count>
      <attachid>119166</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 23:52:52 -0800</bug_when>
    <thetext>Comment on attachment 119166
Patch

Attachment 119166 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10872146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520763</commentid>
    <comment_count>11</comment_count>
      <attachid>119166</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-14 00:51:30 -0800</bug_when>
    <thetext>Comment on attachment 119166
Patch

Attachment 119166 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10874155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520802</commentid>
    <comment_count>12</comment_count>
      <attachid>119166</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-14 02:10:20 -0800</bug_when>
    <thetext>Comment on attachment 119166
Patch

Attachment 119166 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10872192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520814</commentid>
    <comment_count>13</comment_count>
      <attachid>119166</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-14 03:05:09 -0800</bug_when>
    <thetext>Comment on attachment 119166
Patch

Attachment 119166 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10871180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520823</commentid>
    <comment_count>14</comment_count>
      <attachid>119166</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-14 03:26:24 -0800</bug_when>
    <thetext>Comment on attachment 119166
Patch

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

&gt; Source/WebCore/Target.pri:3265
&gt;          rendering/style/FilterOperations.cpp
&gt; +        rendering/style/FilterOperation.cpp

rendering/style/FilterOperations.cpp \
rendering/style/FilterOperation.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520947</commentid>
    <comment_count>15</comment_count>
      <attachid>119224</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-14 08:38:55 -0800</bug_when>
    <thetext>Created attachment 119224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521002</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-14 09:40:56 -0800</bug_when>
    <thetext>Patch needs:

diff --git a/Source/WebCore/page/animation/KeyframeAnimation.cpp b/Source/WebCore/page/animation/KeyframeAnimation.cpp
index 9393e4a..f0231e2 100644
--- a/Source/WebCore/page/animation/KeyframeAnimation.cpp
+++ b/Source/WebCore/page/animation/KeyframeAnimation.cpp
@@ -452,7 +452,7 @@ void KeyframeAnimation::checkForMatchingFilterFunctionLists()
 
     for (size_t i = 0; i &lt; numKeyframes; ++i) {
         const KeyframeValue&amp; currentKeyframe = m_keyframes[i];
-        if (currentKeyframe.style()-&gt;transform().operations().size()) {
+        if (currentKeyframe.style()-&gt;filter().operations().size()) {
             firstNonEmptyFilterKeyframeIndex = i;
             break;
         }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521015</commentid>
    <comment_count>17</comment_count>
      <attachid>119224</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-12-14 09:58:58 -0800</bug_when>
    <thetext>Comment on attachment 119224
Patch

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

Looks good. Just a few nits

&gt; Source/WebCore/page/animation/AnimationBase.cpp:201
&gt; +                RefPtr&lt;FilterOperation&gt; identityOp = PassthroughFilterOperation::create();

You should avoid creating this object when not needed

&gt; Source/WebCore/page/animation/ImplicitAnimation.cpp:273
&gt; +    // Transform lists match.

Add a FIXME here so we can change this variable and get rid of this useless comment when isTransformFunctionListValid gets renamed

&gt; Source/WebCore/rendering/style/FilterOperation.cpp:35
&gt; +PassRefPtr&lt;FilterOperation&gt; BasicColorMatrixFilterOperation::blend(const FilterOperation* from, double progress, bool blendToPassthrough)

Why &quot;Basic&quot;? I don&apos;t see any other forms of this object that would cause you to have to discriminate it like this.

&gt; Source/WebCore/rendering/style/FilterOperation.cpp:63
&gt; +PassRefPtr&lt;FilterOperation&gt; BasicComponentTransferFilterOperation::blend(const FilterOperation* from, double progress, bool blendToPassthrough)

Same here

&gt; Source/WebCore/rendering/style/FilterOperation.h:-113
&gt; -

Spurious change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521232</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-14 13:16:53 -0800</bug_when>
    <thetext>Landed with a test: 
http://trac.webkit.org/changeset/102815</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118736</attachid>
            <date>2011-12-11 23:04:46 -0800</date>
            <delta_ts>2011-12-13 23:13:10 -0800</delta_ts>
            <desc>Work in progresss. Only blur() animates.</desc>
            <filename>filter_animation.txt</filename>
            <type>text/plain</type>
            <size>15022</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5k
ZXggYzU1MjM4MS4uOWFkZjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTE5NSw2ICsxOTUsNDAgQEAgc3RhdGljIGlubGluZSBU
cmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBj
b25zdCBUcmEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRp
b25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgICAKKyAgICBGaWx0ZXJPcGVyYXRp
b25zIHJlc3VsdDsKKworICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIgZnVuY3Rpb24gbGlzdCwg
dXNlIHRoYXQgdG8gZG8gYSBwZXItZnVuY3Rpb24gYW5pbWF0aW9uLgorICAgIGlmIChhbmltLT5m
aWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSkgeworICAgICAgICBzaXplX3QgZnJvbVNpemUgPSBm
cm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgICAgIHNpemVfdCB0b1NpemUgPSB0by5vcGVy
YXRpb25zKCkuc2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9T
aXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8g
ZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICAgICAgUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMoKVtpXS5nZXQo
KSA6IDA7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0
b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJv
bU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4oMCkpOworICAgICAgICAgICAgaWYgKGJsZW5kZWRPcCkKKyAgICAgICAgICAgICAgICByZXN1
bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IElkZW50
aXR5RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvZ3Jl
c3MgPiAwLjUpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3Ag
OiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIElmIHRoZSBmaWx0ZXIgZnVuY3Rpb24gbGlzdHMgZG9uJ3QgbWF0Y2gsIHdlIGNv
dWxkIHRyeSB0byBjcm9zcy1mYWRlLCBidXQgZG9uJ3QgeWV0IGhhdmUgYSB3YXkgdG8gcmVwcmVz
ZW50IHRoYXQgaW4gQ1NTLgorICAgICAgICAvLyBGb3Igbm93IHdlJ2xsIGp1c3QgZmFpbCB0byBh
bmltYXRlLgorICAgICAgICByZXN1bHQgPSB0bzsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorI2VuZGlmIC8vRU5BQkxFKENTU19GSUxURVJTKQorCiBzdGF0aWMgaW5saW5lIEVWaXNp
YmlsaXR5IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBFVmlzaWJpbGl0eSBm
cm9tLCBFVmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIC8vIEFueSBub24t
emVybyByZXN1bHQgbWVhbnMgd2UgY29uc2lkZXIgdGhlIG9iamVjdCB0byBiZSB2aXNpYmxlLiAg
T25seSBhdCAwIGRvIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8gYmUKQEAgLTk3MSw2ICsxMDA1
LDEwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAoKQogICAgICAgICBn
UHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyY+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCAmUmVuZGVyU3R5bGU6
OnRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm0pKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQorICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyY+KENTU1Byb3BlcnR5V2Vi
a2l0RmlsdGVyLCAmUmVuZGVyU3R5bGU6OmZpbHRlciwgJlJlbmRlclN0eWxlOjpzZXRGaWx0ZXIp
KTsKKyNlbmRpZgorCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3Bl
cnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNv
bG9yLCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRDb2x1
bW5SdWxlQ29sb3IpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJv
cGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
Q29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dFN0cm9rZUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFRl
eHRTdHJva2VDb2xvcikpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxs
Q29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dEZpbGxDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRUZXh0
RmlsbENvbG9yKSk7CkBAIC0xMDg5LDE4ICsxMTI3LDE5IEBAIHN0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiB3cmFwcGVyRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiBBbmltYXRpb25CYXNl
OjpBbmltYXRpb25CYXNlKGNvbnN0IEFuaW1hdGlvbiogdHJhbnNpdGlvbiwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSkKICAgICA6IG1fYW5pbVN0
YXRlKEFuaW1hdGlvblN0YXRlTmV3KQogICAgICwgbV9pc0FuaW1hdGluZyhmYWxzZSkKKyAgICAs
IG1faXNBY2NlbGVyYXRlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFs
aWQoZmFsc2UpCisgICAgLCBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaChmYWxzZSkKICAgICAs
IG1fc3RhcnRUaW1lKDApCiAgICAgLCBtX3BhdXNlVGltZSgtMSkKICAgICAsIG1fcmVxdWVzdGVk
U3RhcnRUaW1lKDApCisgICAgLCBtX3RvdGFsRHVyYXRpb24oLTEpCisgICAgLCBtX25leHRJdGVy
YXRpb25EdXJhdGlvbigtMSkKICAgICAsIG1fb2JqZWN0KHJlbmRlcmVyKQogICAgICwgbV9hbmlt
YXRpb24oY29uc3RfY2FzdDxBbmltYXRpb24qPih0cmFuc2l0aW9uKSkKICAgICAsIG1fY29tcEFu
aW0oY29tcEFuaW0pCi0gICAgLCBtX2lzQWNjZWxlcmF0ZWQoZmFsc2UpCi0gICAgLCBtX3RyYW5z
Zm9ybUZ1bmN0aW9uTGlzdFZhbGlkKGZhbHNlKQotICAgICwgbV9uZXh0SXRlcmF0aW9uRHVyYXRp
b24oLTEpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZHVyYXRpb24KLSAgICBtX3RvdGFs
RHVyYXRpb24gPSAtMTsKICAgICBpZiAobV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCkgPiAw
KQogICAgICAgICBtX3RvdGFsRHVyYXRpb24gPSBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAqIG1f
YW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCmluZGV4IDdhNmIwN2EuLmU2MTdmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKQEAgLTE2NSw4ICsx
NjUsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIXBvc3RBY3RpdmUoKSAmJiBhZmZlY3Rz
UHJvcGVydHkocHJvcGVydHkpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiByZW5hbWUgdGhpcyB1
c2luZyB0aGUgImxpc3RzIG1hdGNoIiB0ZXJtaW5vbG9neS4KICAgICBib29sIGlzVHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlz
dFZhbGlkOyB9Ci0gICAgCisgICAgYm9vbCBmaWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQorCiAgICAgLy8gRnJlZXpl
IHRoZSBhbmltYXRpb247IHVzZWQgYnkgRHVtcFJlbmRlclRyZWUuCiAgICAgdm9pZCBmcmVlemVB
dFRpbWUoZG91YmxlIHQpOwogCkBAIC0yMzAsMTYgKzIzMiwyMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
QW5pbVN0YXRlIG1fYW5pbVN0YXRlOwogCiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nOyAgICAgICAv
LyB0cmFuc2l0aW9uL2FuaW1hdGlvbiByZXF1aXJlcyBjb250aW51YWwgdGltZXIgZmlyaW5nCisg
ICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWQ7CisgICAgYm9vbCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlz
dFZhbGlkOworICAgIGJvb2wgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2g7CisKICAgICBkb3Vi
bGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1fcGF1c2VUaW1lOwogICAgIGRvdWJsZSBtX3Jl
cXVlc3RlZFN0YXJ0VGltZTsKKworICAgIGRvdWJsZSBtX3RvdGFsRHVyYXRpb247CisgICAgZG91
YmxlIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uOworCiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVj
dDsKIAogICAgIFJlZlB0cjxBbmltYXRpb24+IG1fYW5pbWF0aW9uOwogICAgIENvbXBvc2l0ZUFu
aW1hdGlvbiogbV9jb21wQW5pbTsKLSAgICBib29sIG1faXNBY2NlbGVyYXRlZDsKLSAgICBib29s
IG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQ7Ci0gICAgZG91YmxlIG1fdG90YWxEdXJhdGlv
biwgbV9uZXh0SXRlcmF0aW9uRHVyYXRpb247CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGVuc3VyZVByb3BlcnR5TWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggNTZkNzFhYS4uZGVmNmQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9u
LmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnJlc2V0KFJl
bmRlclN0eWxlKiB0bykKICAgICAgICAgCiAgICAgLy8gc2V0IHRoZSB0cmFuc2Zvcm0gYW5pbWF0
aW9uIGxpc3QKICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOworICAgIGNoZWNr
Rm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCk7CiB9CiAKIHZvaWQgSW1wbGljaXRBbmlt
YXRpb246OnNldE92ZXJyaWRkZW4oYm9vbCBiKQpAQCAtMjY3LDEwICsyNjgsMzQgQEAgdm9pZCBJ
bXBsaWNpdEFuaW1hdGlvbjo6dmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKQogICAgIGlm
ICh2YWwgIT0gdG9WYWwgJiYgIXRvVmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgpICYmICF2YWwt
Pm9wZXJhdGlvbnNNYXRjaCgqdG9WYWwpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBLZXlm
cmFtZXMgYXJlIHZhbGlkCisgICAgLy8gVHJhbnNmb3JtIGxpc3RzIG1hdGNoLgogICAgIG1fdHJh
bnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQgPSB0cnVlOwogfQogCit2b2lkIEltcGxpY2l0QW5pbWF0
aW9uOjpjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpCit7CisgICAgbV9maWx0
ZXJGdW5jdGlvbkxpc3RzTWF0Y2ggPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoIW1fZnJvbVN0eWxl
IHx8ICFtX3RvU3R5bGUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyogdmFsID0gJm1fZnJvbVN0eWxlLT5maWx0ZXIoKTsKKyAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zKiB0b1ZhbCA9ICZtX3RvU3R5bGUtPmZpbHRlcigpOworCisgICAgaWYg
KHZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgdmFsID0gdG9WYWw7CisKKyAg
ICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgIC8vIEFuIGVtdHB5IHRyYW5zZm9ybSBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisg
ICAgaWYgKHZhbCAhPSB0b1ZhbCAmJiAhdG9WYWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkgJiYg
IXZhbC0+b3BlcmF0aW9uc01hdGNoKCp0b1ZhbCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IFRyYW5zZm9ybSBsaXN0cyBtYXRjaC4KKyAgICBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCA9
IHRydWU7Cit9CisKIGRvdWJsZSBJbXBsaWNpdEFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2Uo
KQogewogICAgIGRvdWJsZSB0ID0gQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5o
CmluZGV4IGM0MGMwMGEuLmZhMzM0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaApAQCAtNzYsNiArNzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGRvdWJs
ZSBlbGFwc2VkVGltZSk7CiAKICAgICB2b2lkIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0
KCk7CisgICAgdm9pZCBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpOwogCiBw
cml2YXRlOgogICAgIEltcGxpY2l0QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGludCBhbmlt
YXRpbmdQcm9wZXJ0eSwgUmVuZGVyT2JqZWN0KiwgQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVy
U3R5bGUqIGZyb21TdHlsZSk7ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IDMxNzVhZDYuLjdhYmZkZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5j
cHAKQEAgLTU2LDYgKzU2LDcgQEAgS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqIHIKIAogICAgIC8vIFVw
ZGF0ZSB0aGUgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFnIGJhc2VkIG9uIHdoZXRo
ZXIgdGhlIGZ1bmN0aW9uIGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0Y2guCiAgICAgdmFsaWRh
dGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKKyAgICBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVu
Y3Rpb25MaXN0cygpOwogfQogCiBLZXlmcmFtZUFuaW1hdGlvbjo6fktleWZyYW1lQW5pbWF0aW9u
KCkKQEAgLTQzNSw2ICs0MzYsNDYgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6dmFsaWRhdGVU
cmFuc2Zvcm1GdW5jdGlvbkxpc3QoKQogICAgIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQg
PSB0cnVlOwogfQogCit2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpjaGVja0Zvck1hdGNoaW5nRmls
dGVyRnVuY3Rpb25MaXN0cygpCit7CisgICAgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2ggPSBm
YWxzZTsKKworICAgIGlmIChtX2tleWZyYW1lcy5zaXplKCkgPCAyIHx8ICFtX2tleWZyYW1lcy5j
b250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0RmlsdGVyKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRW1wdHkgZmlsdGVycyBtYXRjaCBhbnl0aGluZywgc28gZmluZCB0aGUgZmly
c3Qgbm9uLWVtcHR5IGVudHJ5IGFzIHRoZSByZWZlcmVuY2UKKyAgICBzaXplX3QgbnVtS2V5ZnJh
bWVzID0gbV9rZXlmcmFtZXMuc2l6ZSgpOworICAgIHNpemVfdCBmaXJzdE5vbkVtcHR5RmlsdGVy
S2V5ZnJhbWVJbmRleCA9IG51bUtleWZyYW1lczsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtS2V5ZnJhbWVzOyArK2kpIHsKKyAgICAgICAgY29uc3QgS2V5ZnJhbWVWYWx1ZSYgY3Vy
cmVudEtleWZyYW1lID0gbV9rZXlmcmFtZXNbaV07CisgICAgICAgIGlmIChjdXJyZW50S2V5ZnJh
bWUuc3R5bGUoKS0+dHJhbnNmb3JtKCkub3BlcmF0aW9ucygpLnNpemUoKSkgeworICAgICAgICAg
ICAgZmlyc3ROb25FbXB0eUZpbHRlcktleWZyYW1lSW5kZXggPSBpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZpcnN0Tm9uRW1wdHlGaWx0ZXJL
ZXlmcmFtZUluZGV4ID09IG51bUtleWZyYW1lcykKKyAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBmaXJzdFZhbCA9ICZtX2tleWZyYW1lc1tmaXJz
dE5vbkVtcHR5RmlsdGVyS2V5ZnJhbWVJbmRleF0uc3R5bGUoKS0+ZmlsdGVyKCk7CisgICAgCisg
ICAgLy8gU2VlIGlmIHRoZSBrZXlmcmFtZXMgYXJlIHZhbGlkCisgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFtZUluZGV4ICsgMTsgaSA8IG51bUtleWZyYW1lczsg
KytpKSB7CisgICAgICAgIGNvbnN0IEtleWZyYW1lVmFsdWUmIGN1cnJlbnRLZXlmcmFtZSA9IG1f
a2V5ZnJhbWVzW2ldOworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWwgPSAmY3Vy
cmVudEtleWZyYW1lLnN0eWxlKCktPmZpbHRlcigpOworICAgICAgICAKKyAgICAgICAgLy8gQW4g
ZW10cHkgdHJhbnNmb3JtIGxpc3QgbWF0Y2hlcyBhbnl0aGluZy4KKyAgICAgICAgaWYgKHZhbC0+
b3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAK
KyAgICAgICAgaWYgKCFmaXJzdFZhbC0+b3BlcmF0aW9uc01hdGNoKCp2YWwpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCA9
IHRydWU7Cit9CisKIGRvdWJsZSBLZXlmcmFtZUFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2Uo
KQogewogICAgIGRvdWJsZSB0ID0gQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5o
CmluZGV4IDUwOTliNTAuLjAyOTY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaApAQCAtNzcsNiArNzcsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNQcm9wZXJ0eShpbnQpIGNvbnN0OwogCiAgICAgdm9p
ZCB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOworICAgIHZvaWQgY2hlY2tGb3JNYXRj
aGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKIAogcHJpdmF0ZToKICAgICBLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiwgaW50IGluZGV4
LCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaAppbmRl
eCA4MWQ5YzBjLi45M2FiYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKICAgICAgICAgQ1VTVE9NLAogI2VuZGlmCisgICAgICAgIElERU5USVRZ
LAogICAgICAgICBOT05FCiAgICAgfTsKIApAQCAtNjQsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3QgPSAw
OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAv
KnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvSWRlbnRpdHkqLyA9IGZhbHNlKSB7IHJldHVybiAw
OyB9CisKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0g
bV90eXBlOyB9CiAKQEAgLTgwLDYgKzg0LDI2IEBAIHByb3RlY3RlZDoKIC8vIGhhdmUgY29kZSB0
byBhcHBseSB0aGVpciBlZmZlY3QgdGhleSdsbCBtb3ZlIHRvIHNlcGFyYXRlIGZpbGVzLgogLy8g
QXQgdGhlIG1vbWVudCB3ZSdyZSBqdXN0IHN0b3JpbmcgdGhlIGRhdGEgZm9yIHJvdW5kdHJpcHBp
bmcuCiAKK2NsYXNzIElkZW50aXR5RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJh
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SWRlbnRpdHlGaWx0ZXJPcGVy
YXRpb24+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElkZW50
aXR5RmlsdGVyT3BlcmF0aW9uKCkpOworICAgIH0KKworcHJpdmF0ZToKKworICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpc1NhbWVUeXBlKG8pOworICAgIH0KKworICAgIElkZW50aXR5RmlsdGVy
T3BlcmF0aW9uKCkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oSURFTlRJVFkpCisgICAgewor
ICAgIH0KK307CisKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0
ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVy
YXRpb25UeXBlIHR5cGUpCkBAIC0yMTMsOCArMjM3LDIyIEBAIHB1YmxpYzoKICAgICBMZW5ndGgg
c3RkRGV2aWF0aW9uWCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWDsgfQogICAgIExl
bmd0aCBzdGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25ZOyB9CiAK
LXByaXZhdGU6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b0lkZW50aXR5ID0gZmFsc2UpCisgICAgeworICAgICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNT
YW1lVHlwZSgqdGhpcykpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgCisgICAg
ICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCisgICAgICAgICAgICByZXR1cm4gQmx1ckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChtX3N0ZERldmlhdGlvblgudHlwZSgpKS5ibGVuZChtX3N0
ZERldmlhdGlvblgsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICBMZW5ndGgobV9zdGREZXZpYXRpb25ZLnR5cGUoKSkuYmxlbmQobV9z
dGREZXZpYXRpb25ZLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSksIG1fdHlwZSk7
CisKKyAgICAgICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgICAgICBMZW5ndGggZnJv
bVggPSBmcm9tT3AgPyBmcm9tT3AtPm1fc3RkRGV2aWF0aW9uWCA6IExlbmd0aChtX3N0ZERldmlh
dGlvblgudHlwZSgpKTsKKyAgICAgICAgTGVuZ3RoIGZyb21ZID0gZnJvbU9wID8gZnJvbU9wLT5t
X3N0ZERldmlhdGlvblkgOiBMZW5ndGgobV9zdGREZXZpYXRpb25ZLnR5cGUoKSk7CisgICAgICAg
IHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9zdGREZXZpYXRpb25YLmJsZW5k
KGZyb21YLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSksIG1fc3RkRGV2aWF0aW9u
WS5ibGVuZChmcm9tWSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpLCBtX3R5cGUp
OworICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUo
bykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0
aW9ucy5jcHAKaW5kZXggNzI3ODUyYi4uZmUxOTAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsMjEg
QEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIG8pIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRmlsdGVyT3BlcmF0aW9u
czo6b3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAor
eworICAgIHNpemVfdCBudW1PcGVyYXRpb25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICAv
LyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlz
dHMgZG9uJ3QgbWF0Y2gKKyAgICBpZiAobnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25z
KCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gSWYgdGhlIHR5
cGVzIG9mIGVhY2ggZnVuY3Rpb24gYXJlIG5vdCB0aGUgc2FtZSwgdGhlIGxpc3RzIGRvbid0IG1h
dGNoCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PcGVyYXRpb25zOyArK2kpIHsKKyAg
ICAgICAgaWYgKCFvcGVyYXRpb25zKClbaV0tPmlzU2FtZVR5cGUoKm90aGVyLm9wZXJhdGlvbnMo
KVtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVy
T3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJh
dGlvbnMuaAppbmRleCAyZWJhODI5Li5iZjE5M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNpemUo
KTsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29wZXJhdGlvbnMuYXQoaW5k
ZXgpLmdldCgpIDogMDsgfQogCisgICAgYm9vbCBvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiA+IG1fb3BlcmF0aW9uczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>118928</attachid>
            <date>2011-12-12 18:06:39 -0800</date>
            <delta_ts>2011-12-13 22:57:09 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>animating-filters.html</filename>
            <type>text/html</type>
            <size>2585</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW4iPgogICAgICAgIHNlY3Rpb24gewogICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGltZyB7CiAgICAgICAgICAg
IGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBtYXJnaW46IDEwcHg7CiAgICAgICAgICAgIGhl
aWdodDogMjAwcHg7CiAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICAgICAgLXdlYmtp
dC10cmFuc2l0aW9uOiAtd2Via2l0LWZpbHRlciAxczsKICAgICAgICB9CiAgICAgICAgCiAgICAg
ICAgaW1nOmhvdmVyIHsKICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IG5vbmUgIWltcG9ydGFu
dDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW1nLmdyYXlzY2FsZSB7CiAgICAgICAgICAg
IC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMSk7CiAgICAgICAgfQoKICAgICAgICBpbWcuc2Vw
aWEgewogICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogc2VwaWEoMSk7CiAgICAgICAgfQogICAg
ICAgIAogICAgICAgIGltZy5zYXR1cmF0ZSB7CiAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBz
YXR1cmF0ZSgwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbWcuaHVlLXJvdGF0ZSB7
CiAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBodWUtcm90YXRlKDE4MGRlZyk7CiAgICAgICAg
fQoKICAgICAgICBpbWcuaW52ZXJ0IHsKICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGludmVy
dCgpOwogICAgICAgIH0KCiAgICAgICAgaW1nLm9wYWNpdHkgewogICAgICAgICAgICAtd2Via2l0
LWZpbHRlcjogb3BhY2l0eSgwLjEpOwogICAgICAgIH0KCiAgICAgICAgaW1nLmdhbW1hIHsKICAg
ICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGdhbW1hKDAuNSwgMC4yLCAwLjIpOwogICAgICAgIH0K
CiAgICAgICAgaW1nLmJsdXIgewogICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogYmx1cigxMHB4
IDEwcHgpOwogICAgICAgIH0KCiAgICAgICAgaW1nLmRyb3Atc2hhZG93IHsKICAgICAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGRyb3Atc2hhZG93KDEwcHggMTBweCBibGFjayAyMHB4KTsKICAgICAg
ICB9CiAgICA8L3N0eWxlPgogICAgCjwvaGVhZD4KPGJvZHk+CgogICAgPHNlY3Rpb24+CiAgICAg
ICAgPGgyPkdyYXlzY2FsZTwvaDI+CiAgICAgICAgPGltZyBjbGFzcz0iZ3JheXNjYWxlIiBzcmM9
Imh0dHA6Ly9mYXJtOC5zdGF0aWNmbGlja3IuY29tLzcxNDQvNjQ4MTE2NzAyM182MWMwMTU3M2U5
X3ouanBnIj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbj4KICAgICAgICA8aDI+U2VwaWE8
L2gyPgogICAgICAgIDxpbWcgY2xhc3M9InNlcGlhIiBzcmM9Imh0dHA6Ly9mYXJtOC5zdGF0aWNm
bGlja3IuY29tLzcxNDQvNjQ4MTE2NzAyM182MWMwMTU3M2U5X3ouanBnIj4KICAgIDwvc2VjdGlv
bj4KCiAgICA8c2VjdGlvbj4KICAgICAgICA8aDI+U2F0dXJhdGU8L2gyPgogICAgICAgIDxpbWcg
Y2xhc3M9InNhdHVyYXRlIiBzcmM9Imh0dHA6Ly9mYXJtOC5zdGF0aWNmbGlja3IuY29tLzcxNDQv
NjQ4MTE2NzAyM182MWMwMTU3M2U5X3ouanBnIj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlv
bj4KICAgICAgICA8aDI+SHVlIFJvdGF0ZTwvaDI+CiAgICAgICAgPGltZyBjbGFzcz0iaHVlLXJv
dGF0ZSIgc3JjPSJodHRwOi8vZmFybTguc3RhdGljZmxpY2tyLmNvbS83MTQ0LzY0ODExNjcwMjNf
NjFjMDE1NzNlOV96LmpwZyI+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24+CiAgICAgICAg
PGgyPkludmVydDwvaDI+CiAgICAgICAgPGltZyBjbGFzcz0iaW52ZXJ0IiBzcmM9Imh0dHA6Ly9m
YXJtOC5zdGF0aWNmbGlja3IuY29tLzcxNDQvNjQ4MTE2NzAyM182MWMwMTU3M2U5X3ouanBnIj4K
ICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbj4KICAgICAgICA8aDI+T3BhY2l0eTwvaDI+CiAg
ICAgICAgPGltZyBjbGFzcz0ib3BhY2l0eSIgc3JjPSJodHRwOi8vZmFybTguc3RhdGljZmxpY2ty
LmNvbS83MTQ0LzY0ODExNjcwMjNfNjFjMDE1NzNlOV96LmpwZyI+CiAgICA8L3NlY3Rpb24+Cgog
ICAgPHNlY3Rpb24+CiAgICAgICAgPGgyPkdhbW1hPC9oMj4KICAgICAgICA8aW1nIGNsYXNzPSJn
YW1tYSIgc3JjPSJodHRwOi8vZmFybTguc3RhdGljZmxpY2tyLmNvbS83MTQ0LzY0ODExNjcwMjNf
NjFjMDE1NzNlOV96LmpwZyI+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24+CiAgICAgICAg
PGgyPkJsdXI8L2gyPgogICAgICAgIDxpbWcgY2xhc3M9ImJsdXIiIHNyYz0iaHR0cDovL2Zhcm04
LnN0YXRpY2ZsaWNrci5jb20vNzE0NC82NDgxMTY3MDIzXzYxYzAxNTczZTlfei5qcGciPgogICAg
PC9zZWN0aW9uPgoKICAgIDxzZWN0aW9uPgogICAgICAgIDxoMj5Ecm9wIFNoYWRvdzwvaDI+CiAg
ICAgICAgPGltZyBjbGFzcz0iZHJvcC1zaGFkb3ciIHNyYz0iaHR0cDovL2Zhcm04LnN0YXRpY2Zs
aWNrci5jb20vNzE0NC82NDgxMTY3MDIzXzYxYzAxNTczZTlfei5qcGciPgogICAgPC9zZWN0aW9u
PgoKCjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>119158</attachid>
            <date>2011-12-13 22:57:09 -0800</date>
            <delta_ts>2011-12-13 22:57:09 -0800</delta_ts>
            <desc>Fixed testcase</desc>
            <filename>filter-effects.html</filename>
            <type>text/html</type>
            <size>2583</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW4iPgogICAgICAgIHNlY3Rpb24gewogICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGltZyB7CiAgICAgICAgICAg
IGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBtYXJnaW46IDEwcHg7CiAgICAgICAgICAgIGhl
aWdodDogMjAwcHg7CiAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICAgICAgLXdlYmtp
dC10cmFuc2l0aW9uOiAtd2Via2l0LWZpbHRlciAxczsKICAgICAgICB9CiAgICAgICAgCiAgICAg
ICAgaW1nOmhvdmVyIHsKICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IG5vbmUgIWltcG9ydGFu
dDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW1nLmdyYXlzY2FsZSB7CiAgICAgICAgICAg
IC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMSk7CiAgICAgICAgfQoKICAgICAgICBpbWcuc2Vw
aWEgewogICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogc2VwaWEoMSk7CiAgICAgICAgfQogICAg
ICAgIAogICAgICAgIGltZy5zYXR1cmF0ZSB7CiAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBz
YXR1cmF0ZSgwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbWcuaHVlLXJvdGF0ZSB7
CiAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBodWUtcm90YXRlKDE4MGRlZyk7CiAgICAgICAg
fQoKICAgICAgICBpbWcuaW52ZXJ0IHsKICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGludmVy
dCgpOwogICAgICAgIH0KCiAgICAgICAgaW1nLm9wYWNpdHkgewogICAgICAgICAgICAtd2Via2l0
LWZpbHRlcjogb3BhY2l0eSgwLjEpOwogICAgICAgIH0KCiAgICAgICAgaW1nLmdhbW1hIHsKICAg
ICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGdhbW1hKDAuNSAwLjIgMC4yKTsKICAgICAgICB9Cgog
ICAgICAgIGltZy5ibHVyIHsKICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCAx
MHB4KTsKICAgICAgICB9CgogICAgICAgIGltZy5kcm9wLXNoYWRvdyB7CiAgICAgICAgICAgIC13
ZWJraXQtZmlsdGVyOiBkcm9wLXNoYWRvdygxMHB4IDEwcHggYmxhY2sgMjBweCk7CiAgICAgICAg
fQogICAgPC9zdHlsZT4KICAgIAo8L2hlYWQ+Cjxib2R5PgoKICAgIDxzZWN0aW9uPgogICAgICAg
IDxoMj5HcmF5c2NhbGU8L2gyPgogICAgICAgIDxpbWcgY2xhc3M9ImdyYXlzY2FsZSIgc3JjPSJo
dHRwOi8vZmFybTguc3RhdGljZmxpY2tyLmNvbS83MTQ0LzY0ODExNjcwMjNfNjFjMDE1NzNlOV96
LmpwZyI+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24+CiAgICAgICAgPGgyPlNlcGlhPC9o
Mj4KICAgICAgICA8aW1nIGNsYXNzPSJzZXBpYSIgc3JjPSJodHRwOi8vZmFybTguc3RhdGljZmxp
Y2tyLmNvbS83MTQ0LzY0ODExNjcwMjNfNjFjMDE1NzNlOV96LmpwZyI+CiAgICA8L3NlY3Rpb24+
CgogICAgPHNlY3Rpb24+CiAgICAgICAgPGgyPlNhdHVyYXRlPC9oMj4KICAgICAgICA8aW1nIGNs
YXNzPSJzYXR1cmF0ZSIgc3JjPSJodHRwOi8vZmFybTguc3RhdGljZmxpY2tyLmNvbS83MTQ0LzY0
ODExNjcwMjNfNjFjMDE1NzNlOV96LmpwZyI+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24+
CiAgICAgICAgPGgyPkh1ZSBSb3RhdGU8L2gyPgogICAgICAgIDxpbWcgY2xhc3M9Imh1ZS1yb3Rh
dGUiIHNyYz0iaHR0cDovL2Zhcm04LnN0YXRpY2ZsaWNrci5jb20vNzE0NC82NDgxMTY3MDIzXzYx
YzAxNTczZTlfei5qcGciPgogICAgPC9zZWN0aW9uPgoKICAgIDxzZWN0aW9uPgogICAgICAgIDxo
Mj5JbnZlcnQ8L2gyPgogICAgICAgIDxpbWcgY2xhc3M9ImludmVydCIgc3JjPSJodHRwOi8vZmFy
bTguc3RhdGljZmxpY2tyLmNvbS83MTQ0LzY0ODExNjcwMjNfNjFjMDE1NzNlOV96LmpwZyI+CiAg
ICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24+CiAgICAgICAgPGgyPk9wYWNpdHk8L2gyPgogICAg
ICAgIDxpbWcgY2xhc3M9Im9wYWNpdHkiIHNyYz0iaHR0cDovL2Zhcm04LnN0YXRpY2ZsaWNrci5j
b20vNzE0NC82NDgxMTY3MDIzXzYxYzAxNTczZTlfei5qcGciPgogICAgPC9zZWN0aW9uPgoKICAg
IDxzZWN0aW9uPgogICAgICAgIDxoMj5HYW1tYTwvaDI+CiAgICAgICAgPGltZyBjbGFzcz0iZ2Ft
bWEiIHNyYz0iaHR0cDovL2Zhcm04LnN0YXRpY2ZsaWNrci5jb20vNzE0NC82NDgxMTY3MDIzXzYx
YzAxNTczZTlfei5qcGciPgogICAgPC9zZWN0aW9uPgoKICAgIDxzZWN0aW9uPgogICAgICAgIDxo
Mj5CbHVyPC9oMj4KICAgICAgICA8aW1nIGNsYXNzPSJibHVyIiBzcmM9Imh0dHA6Ly9mYXJtOC5z
dGF0aWNmbGlja3IuY29tLzcxNDQvNjQ4MTE2NzAyM182MWMwMTU3M2U5X3ouanBnIj4KICAgIDwv
c2VjdGlvbj4KCiAgICA8c2VjdGlvbj4KICAgICAgICA8aDI+RHJvcCBTaGFkb3c8L2gyPgogICAg
ICAgIDxpbWcgY2xhc3M9ImRyb3Atc2hhZG93IiBzcmM9Imh0dHA6Ly9mYXJtOC5zdGF0aWNmbGlj
a3IuY29tLzcxNDQvNjQ4MTE2NzAyM182MWMwMTU3M2U5X3ouanBnIj4KICAgIDwvc2VjdGlvbj4K
Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119160</attachid>
            <date>2011-12-13 23:13:14 -0800</date>
            <delta_ts>2011-12-13 23:27:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68476-20111213231312.patch</filename>
            <type>text/plain</type>
            <size>34009</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRhOWE1MTRhY2Y4ODQw
MWQ3ZmJjNTVjYTllMDQ2MmU5YjUzNTE1ZS4uYzI0Mzc1OWZiOTI0NDFiZGU3MTYyMmI5NDdhNTY5
YTM4OTRmMjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDExLTEyLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgLXdlYmtp
dC1maWx0ZXIgYW5pbWF0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEFkZCAtd2Via2l0LWZpbHRlciB0byB0aGUgbGlzdCBvZiBDU1Mg
cHJvcGVydGllcyB0aGF0IGFyZSBhbmltYXRhYmxlLiBBbmltYXRlCisgICAgICAgIGl0IGxpa2Ug
d2UgZG8gdHJhbnNmb3JtcywgYnkgbG9va2luZyBmb3IgbWF0Y2hpbmcgbGlzdHMgb2YgZmlsdGVy
IGZ1bmN0aW9ucy4KKyAgICAgICAgRWFjaCBraW5kIG9mIGZpbHRlciBvcGVyYXRpb24gaGFzIGEg
YmxlbmQoKSBtZXRob2QgdGhhdCBoYW5kbGVzIGJsZW5kaW5nCisgICAgICAgIGZvciB0aGF0IGZp
bHRlci4KKworICAgICAgICBbVGVzdHMgd2lsbCBiZSBhZGRlZCBsYXRlcl0KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBGaWx0ZXJPcGVyYXRpb24uY3BwIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmUuZ3lwaTog
RGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvCisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOiBOZXcgYmxlbmRGdW5jKCkgZm9yIEZpbHRlck9wZXJhdGlvbnMsIHdoaWNoIGRv
ZXMgcGVyLWZpbHRlciBibGVuZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
OmVuc3VyZVByb3BlcnR5TWFwKTogTWFrZSBQcm9wZXJ0eVdyYXBwZXIgZm9yIGZpbHRlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKTogQWRqdXN0IGlu
aXRpYWxpemF0aW9uIG9yZGVyLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDogQWRqdXN0ZWQgdGhlIG1lbWJlciB2YXJpYWJsZSBvcmRlciB0byBtaW5pbWl6ZSBwYWRk
aW5nLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZmlsdGVyRnVuY3Rpb25MaXN0
c01hdGNoKTogQWNjZXNzb3IgZm9yIHRoZSBmbGFnLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0
aW9uOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6dmFsaWRh
dGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QpOiBBZGp1c3QgY29tbWVudC4gVGhlICJpcyB2YWxpZCIg
dGVybWlub2xvZ3kgaXMgY29uZnVzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmlt
YXRpb246OmNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKTogTmV3IG1ldGhvZCB0
byBjaGVjayBmb3IgbWF0Y2hpbmcgbGlzdHMKKyAgICAgICAgb2YgZmlsdGVyIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6Y2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMp
OiBOZXcgbWV0aG9kIHRvIGNoZWNrIGZvciBtYXRjaGluZyBsaXN0cworICAgICAgICBvZiBmaWx0
ZXIgZnVuY3Rpb25zLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6
cGFzc3Rocm91Z2hBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91bnQpOiBEaWZmZXJl
bnQgZmlsdGVycyBoYXZlCisgICAgICAgIGRpZmZlcmVudCB2YWx1ZXMgZm9yIG1fYW1vdW50IGZv
ciB0aGUgInBhc3N0aHJvdWdoIiBiZWhhdmlvci4gVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYXBw
cm9wcmlhdGUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpHYW1tYUZpbHRlck9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Qmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91
Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6IE5ldyAibm8tb3AiIGZpbHRlci4KKyAgICAgICAg
KFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNo
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oOgorCisyMDEx
LTEyLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAg
IFNoYXJlIGJsZW5kIHByb2dyZXNzIGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NDY0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDM4NGZhYmFmODlhYjhhZGZmZGJhN2VjODczODI1ZWE0YTI2NWM0MzkuLmNmMjhlZjcyYmM4
N2M3YjUxMTZhYmE2MDYxYzNjMGUzOTU1ZjE5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzI1Nyw2ICszMjU3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsdGVyT3BlcmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWx0ZXJPcGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWx0ZXJPcGVyYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlm
cmFtZUxpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0ZWRlODMyNGJjNjE4ZmY4MGEzNTRiNmM5
N2IwZTQ2M2EyYTI1YWQuLjk3MGM5Y2E2M2Y1ZWU5YmY5YmY0OThmMzE4YzQ4YjhhN2RjZjAyYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMzI2Miw2ICszMjYyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9G
RUxpZ2h0aW5nTkVPTi5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bS9GRUdhdXNzaWFuQmx1ck5FT04uY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCisgICAgICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24u
Y3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NQVRITUw9MSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGUxYTkwZmVlZjU0OTdiYzI1ODI1YTEyMDkxODE2ODAyNDVhNGFkYjguLmJmZTcw
ODEyZDhjOTU4YjNiZGZmN2I4MTVhNzAwOTNjYTE0NGZiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTQ3ODMsNiArNDc4Myw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJE
aXJlY3RpdmVzLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNw
cCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWEyMTBkM2FlMTg5NWQyNWM1NWM5
NjdjN2YzMzQ0Zjg0ZmU2Yzk3MS4uMTdjNzM0NDQwYTJmYWIxZjM3YWVlZmQwN2ZiZmE0YTBjMWMw
ZDkxZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTQwMTQzLDYgKzQwMTQzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcRmlsdGVyT3BlcmF0aW9uLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRpb24uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzZWQ1NDdiM2I3Y2I3YzAwNDgwNjhmOGVlZGIxYmMxMzI1MDA0YWM5Li5jNWViMmFiMjhh
NWI4YjcxZTYzY2EyZjZlZmU4NjlkZDgzNjc4YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDgsNiArMjQ4LDcgQEAKIAkJ
MEY1QjdBNTUxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCN0E1MzEwRjY1RDdB
MDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZFQ0Q0NTBGMjUyRjM3MDBCREUyNzEgLyog
Q1NTUHJvcGVydHlMb25naGFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2RUNENDMwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hh
bmQuaCAqLzsgfTsKIAkJMEY2RUNENDYwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2RUNENDQwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwICovOyB9
OworCQkwRkI3RTZGNDE0OTcwRUIzMDAzNDZGQUUgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdFNkYzMTQ5NzBF
QjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRkNGMzMyNDBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAg
Ki87IH07CiAJCTBGQ0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjgwRjJC
OUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJEMEYyQjlB
MjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRM
YXllci5oICovOyB9OwpAQCAtNzMzMiw2ICs3MzMzLDcgQEAKIAkJMEY1QjdBNTMxMEY2NUQ3QTAw
Mzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlckVtYmVkZGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNkVDRDQzMEYyNTJGMzcwMEJERTI3MSAvKiBDU1NQcm9wZXJ0eUxvbmdoYW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5TG9uZ2hhbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2RUNENDQwRjI1MkYzNzAwQkRFMjcxIC8q
IENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTUHJvcGVydHlMb25naGFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQjdFNkYzMTQ5NzBFQjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsdGVyT3BlcmF0aW9uLmNwcDsgcGF0
aCA9IHN0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkNGMzMyODBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlRpbGVkTGF5ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0YzMzI5MEYyQjlBMjUwMDRCNjc5NSAv
KiBXZWJUaWxlZExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlRp
bGVkTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODcxLDYgKzE5ODcz
LDcgQEAKIAkJCQlCQzIyNzQ2RTBFODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oICovLAogCQkJ
CUJDNUVCNjlDMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuY3BwICovLAogCQkJCUJDNUVC
NjlEMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuaCAqLywKKwkJCQkwRkI3RTZGMzE0OTcw
RUIzMDAzNDZGQUUgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk1MDM4QkYyNTE0NzUw
RjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJNTAzOEJGMjYxNDc1MEYx
OTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovLAogCQkJCTUwMzhCRjI3MTQ3NTBG
MTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi8sCkBAIC0yNzcxNSw2ICsyNzcxOCw3
IEBACiAJCQkJOEMxMDkxOTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0VsZW1lbnRTdHlsZURlY2xh
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAv
KiBLaWxsUmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2OTM5MTAw
RkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCN0U2
RjQxNDk3MEVCMzAwMzQ2RkFFIC8qIEZpbHRlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5k
ZXggMjJhODA2NjcwYjQ4YjNmY2EzMmI2OGU3MWJkMDVlYzhmZjg5ZTJmYy4uOWYyMTZiOTI1ZmM0
MDY4ZDI1NTEzZTA1YzEwY2VlYTRkOTRjOTFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTE4MSw2ICsxODEsNDAgQEAgc3RhdGlj
IGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdCBUcmEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhjb25z
dCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgICAKKyAgICBGaWx0
ZXJPcGVyYXRpb25zIHJlc3VsdDsKKworICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIgZnVuY3Rp
b24gbGlzdCwgdXNlIHRoYXQgdG8gZG8gYSBwZXItZnVuY3Rpb24gYW5pbWF0aW9uLgorICAgIGlm
IChhbmltLT5maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSkgeworICAgICAgICBzaXplX3QgZnJv
bVNpemUgPSBmcm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgICAgIHNpemVfdCB0b1NpemUg
PSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9t
U2l6ZSwgdG9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKysp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJv
bVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICAgICAgUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMo
KVtpXS5nZXQoKSA6IDA7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJv
bU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4oMCkpOworICAgICAgICAgICAgaWYgKGJsZW5kZWRPcCkKKyAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlP
cCA9IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAocHJvZ3Jlc3MgPiAwLjUpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9t
T3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoZSBmaWx0ZXIgZnVuY3Rpb24gbGlzdHMgZG9uJ3Qg
bWF0Y2gsIHdlIGNvdWxkIHRyeSB0byBjcm9zcy1mYWRlLCBidXQgZG9uJ3QgeWV0IGhhdmUgYSB3
YXkgdG8gcmVwcmVzZW50IHRoYXQgaW4gQ1NTLgorICAgICAgICAvLyBGb3Igbm93IHdlJ2xsIGp1
c3QgZmFpbCB0byBhbmltYXRlLgorICAgICAgICByZXN1bHQgPSB0bzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKwogc3RhdGlj
IGlubGluZSBFVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
RVZpc2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAg
ICAvLyBBbnkgbm9uLXplcm8gcmVzdWx0IG1lYW5zIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8g
YmUgdmlzaWJsZS4gIE9ubHkgYXQgMCBkbyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlCkBA
IC05NTcsNiArOTkxLDEwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAo
KQogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyY+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCAm
UmVuZGVyU3R5bGU6OnRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm0pKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyY+KENT
U1Byb3BlcnR5V2Via2l0RmlsdGVyLCAmUmVuZGVyU3R5bGU6OmZpbHRlciwgJlJlbmRlclN0eWxl
OjpzZXRGaWx0ZXIpKTsKKyNlbmRpZgorCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBl
bmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZUNvbG9yLCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5SdWxlQ29sb3IpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFw
cGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dFN0cm9rZUNvbG9yLCAmUmVuZGVy
U3R5bGU6OnNldFRleHRTdHJva2VDb2xvcikpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+
YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dEZpbGxDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRUZXh0RmlsbENvbG9yKSk7CkBAIC0xMDc1LDE4ICsxMTEzLDE5IEBAIHN0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiBB
bmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKGNvbnN0IEFuaW1hdGlvbiogdHJhbnNpdGlvbiwg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSkKICAg
ICA6IG1fYW5pbVN0YXRlKEFuaW1hdGlvblN0YXRlTmV3KQogICAgICwgbV9pc0FuaW1hdGluZyhm
YWxzZSkKKyAgICAsIG1faXNBY2NlbGVyYXRlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoZmFsc2UpCisgICAgLCBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaChm
YWxzZSkKICAgICAsIG1fc3RhcnRUaW1lKDApCiAgICAgLCBtX3BhdXNlVGltZSgtMSkKICAgICAs
IG1fcmVxdWVzdGVkU3RhcnRUaW1lKDApCisgICAgLCBtX3RvdGFsRHVyYXRpb24oLTEpCisgICAg
LCBtX25leHRJdGVyYXRpb25EdXJhdGlvbigtMSkKICAgICAsIG1fb2JqZWN0KHJlbmRlcmVyKQog
ICAgICwgbV9hbmltYXRpb24oY29uc3RfY2FzdDxBbmltYXRpb24qPih0cmFuc2l0aW9uKSkKICAg
ICAsIG1fY29tcEFuaW0oY29tcEFuaW0pCi0gICAgLCBtX2lzQWNjZWxlcmF0ZWQoZmFsc2UpCi0g
ICAgLCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKGZhbHNlKQotICAgICwgbV9uZXh0SXRl
cmF0aW9uRHVyYXRpb24oLTEpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZHVyYXRpb24K
LSAgICBtX3RvdGFsRHVyYXRpb24gPSAtMTsKICAgICBpZiAobV9hbmltYXRpb24tPml0ZXJhdGlv
bkNvdW50KCkgPiAwKQogICAgICAgICBtX3RvdGFsRHVyYXRpb24gPSBtX2FuaW1hdGlvbi0+ZHVy
YXRpb24oKSAqIG1fYW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCmluZGV4IDdhNmIwN2EyZmJiYjEw
NWZhM2VmZjlkMjk4MjA5NzcxNDk1NGUzYWIuLmU2MTdmOTY4ZTE5ZGEwMjNhZDc5NTQ1ZDkxNmIw
M2MxNzRmY2E2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmgKQEAgLTE2NSw4ICsxNjUsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIXBv
c3RBY3RpdmUoKSAmJiBhZmZlY3RzUHJvcGVydHkocHJvcGVydHkpOwogICAgIH0KIAorICAgIC8v
IEZJWE1FOiByZW5hbWUgdGhpcyB1c2luZyB0aGUgImxpc3RzIG1hdGNoIiB0ZXJtaW5vbG9neS4K
ICAgICBib29sIGlzVHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkOyB9Ci0gICAgCisgICAgYm9vbCBmaWx0ZXJGdW5j
dGlvbkxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRj
aDsgfQorCiAgICAgLy8gRnJlZXplIHRoZSBhbmltYXRpb247IHVzZWQgYnkgRHVtcFJlbmRlclRy
ZWUuCiAgICAgdm9pZCBmcmVlemVBdFRpbWUoZG91YmxlIHQpOwogCkBAIC0yMzAsMTYgKzIzMiwy
MSBAQCBwcm90ZWN0ZWQ6CiAgICAgQW5pbVN0YXRlIG1fYW5pbVN0YXRlOwogCiAgICAgYm9vbCBt
X2lzQW5pbWF0aW5nOyAgICAgICAvLyB0cmFuc2l0aW9uL2FuaW1hdGlvbiByZXF1aXJlcyBjb250
aW51YWwgdGltZXIgZmlyaW5nCisgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWQ7CisgICAgYm9vbCBt
X3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkOworICAgIGJvb2wgbV9maWx0ZXJGdW5jdGlvbkxp
c3RzTWF0Y2g7CisKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1fcGF1c2VU
aW1lOwogICAgIGRvdWJsZSBtX3JlcXVlc3RlZFN0YXJ0VGltZTsKKworICAgIGRvdWJsZSBtX3Rv
dGFsRHVyYXRpb247CisgICAgZG91YmxlIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uOworCiAgICAg
UmVuZGVyT2JqZWN0KiBtX29iamVjdDsKIAogICAgIFJlZlB0cjxBbmltYXRpb24+IG1fYW5pbWF0
aW9uOwogICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogbV9jb21wQW5pbTsKLSAgICBib29sIG1faXNB
Y2NlbGVyYXRlZDsKLSAgICBib29sIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQ7Ci0gICAg
ZG91YmxlIG1fdG90YWxEdXJhdGlvbiwgbV9uZXh0SXRlcmF0aW9uRHVyYXRpb247CiAgICAgCiBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByb3BlcnR5TWFwKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXgg
NTZkNzFhYWI0M2UxNjc5MTg3MzJjYTE3YWRiYzcwODJiZGQ3ZmFhNS4uYTdlYWNmMzIzMGE2ZjBk
NjMwYjA2NjJmYzQxMGQ0OGI3N2RlY2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIHZv
aWQgSW1wbGljaXRBbmltYXRpb246OnJlc2V0KFJlbmRlclN0eWxlKiB0bykKICAgICAgICAgCiAg
ICAgLy8gc2V0IHRoZSB0cmFuc2Zvcm0gYW5pbWF0aW9uIGxpc3QKICAgICB2YWxpZGF0ZVRyYW5z
Zm9ybUZ1bmN0aW9uTGlzdCgpOworICAgIGNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxp
c3RzKCk7CiB9CiAKIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnNldE92ZXJyaWRkZW4oYm9vbCBi
KQpAQCAtMjY3LDEwICsyNjgsMzQgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6dmFsaWRhdGVU
cmFuc2Zvcm1GdW5jdGlvbkxpc3QoKQogICAgIGlmICh2YWwgIT0gdG9WYWwgJiYgIXRvVmFsLT5v
cGVyYXRpb25zKCkuaXNFbXB0eSgpICYmICF2YWwtPm9wZXJhdGlvbnNNYXRjaCgqdG9WYWwpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBLZXlmcmFtZXMgYXJlIHZhbGlkCisgICAgLy8gVHJh
bnNmb3JtIGxpc3RzIG1hdGNoLgogICAgIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQgPSB0
cnVlOwogfQogCit2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpjaGVja0Zvck1hdGNoaW5nRmlsdGVy
RnVuY3Rpb25MaXN0cygpCit7CisgICAgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2ggPSBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIW1fZnJvbVN0eWxlIHx8ICFtX3RvU3R5bGUpCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogdmFsID0gJm1fZnJv
bVN0eWxlLT5maWx0ZXIoKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB0b1ZhbCA9ICZt
X3RvU3R5bGUtPmZpbHRlcigpOworCisgICAgaWYgKHZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHko
KSkKKyAgICAgICAgdmFsID0gdG9WYWw7CisKKyAgICBpZiAodmFsLT5vcGVyYXRpb25zKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEFuIGVtdHB5IGZpbHRl
ciBsaXN0IG1hdGNoZXMgYW55dGhpbmcuCisgICAgaWYgKHZhbCAhPSB0b1ZhbCAmJiAhdG9WYWwt
Pm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkgJiYgIXZhbC0+b3BlcmF0aW9uc01hdGNoKCp0b1ZhbCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpbHRlciBsaXN0cyBtYXRjaC4KKyAgICBtX2Zp
bHRlckZ1bmN0aW9uTGlzdHNNYXRjaCA9IHRydWU7Cit9CisKIGRvdWJsZSBJbXBsaWNpdEFuaW1h
dGlvbjo6dGltZVRvTmV4dFNlcnZpY2UoKQogewogICAgIGRvdWJsZSB0ID0gQW5pbWF0aW9uQmFz
ZTo6dGltZVRvTmV4dFNlcnZpY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCmluZGV4IGM0MGMwMGE2NDYzYTgyMDNiNTk0YTgwM2Ex
NDJhN2VkYzhjOTAwNGEuLmZhMzM0N2Y5YmI0MGZmZWVkNzdkNDYwNzU1NDExODg0MzNiYjA1YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uaApAQCAtNzYsNiArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzZW5kVHJhbnNpdGlv
bkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGRvdWJsZSBlbGFwc2VkVGltZSk7CiAKICAgICB2
b2lkIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0KCk7CisgICAgdm9pZCBjaGVja0Zvck1h
dGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpOwogCiBwcml2YXRlOgogICAgIEltcGxpY2l0QW5p
bWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGludCBhbmltYXRpbmdQcm9wZXJ0eSwgUmVuZGVyT2Jq
ZWN0KiwgQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyU3R5bGUqIGZyb21TdHlsZSk7ICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwCmluZGV4IDMxNzVhZDY0ODQ2NzdkM2EzZjc5ZmMyOTA2OTkxNmQ3NTgwMGNmZWQuLmMwODMy
OTJiODI5N2I2OTQyNDlhYThkNTE5YzAzYWY1NDM1MDk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKQEAgLTU2LDYgKzU2
LDcgQEAgS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlv
biogYW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqIHIKIAogICAgIC8vIFVwZGF0ZSB0aGUgbV90cmFu
c2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFnIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGZ1bmN0aW9u
IGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0Y2guCiAgICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5j
dGlvbkxpc3QoKTsKKyAgICBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpOwog
fQogCiBLZXlmcmFtZUFuaW1hdGlvbjo6fktleWZyYW1lQW5pbWF0aW9uKCkKQEAgLTQzNSw2ICs0
MzYsNDUgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6dmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlv
bkxpc3QoKQogICAgIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQgPSB0cnVlOwogfQogCit2
b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0
cygpCit7CisgICAgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2ggPSBmYWxzZTsKKworICAgIGlm
IChtX2tleWZyYW1lcy5zaXplKCkgPCAyIHx8ICFtX2tleWZyYW1lcy5jb250YWluc1Byb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0RmlsdGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRW1w
dHkgZmlsdGVycyBtYXRjaCBhbnl0aGluZywgc28gZmluZCB0aGUgZmlyc3Qgbm9uLWVtcHR5IGVu
dHJ5IGFzIHRoZSByZWZlcmVuY2UKKyAgICBzaXplX3QgbnVtS2V5ZnJhbWVzID0gbV9rZXlmcmFt
ZXMuc2l6ZSgpOworICAgIHNpemVfdCBmaXJzdE5vbkVtcHR5RmlsdGVyS2V5ZnJhbWVJbmRleCA9
IG51bUtleWZyYW1lczsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtS2V5ZnJhbWVz
OyArK2kpIHsKKyAgICAgICAgY29uc3QgS2V5ZnJhbWVWYWx1ZSYgY3VycmVudEtleWZyYW1lID0g
bV9rZXlmcmFtZXNbaV07CisgICAgICAgIGlmIChjdXJyZW50S2V5ZnJhbWUuc3R5bGUoKS0+dHJh
bnNmb3JtKCkub3BlcmF0aW9ucygpLnNpemUoKSkgeworICAgICAgICAgICAgZmlyc3ROb25FbXB0
eUZpbHRlcktleWZyYW1lSW5kZXggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgaWYgKGZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFtZUluZGV4ID09
IG51bUtleWZyYW1lcykKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiBmaXJzdFZhbCA9ICZtX2tleWZyYW1lc1tmaXJzdE5vbkVtcHR5RmlsdGVy
S2V5ZnJhbWVJbmRleF0uc3R5bGUoKS0+ZmlsdGVyKCk7CisgICAgCisgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFtZUluZGV4ICsgMTsgaSA8IG51bUtleWZyYW1l
czsgKytpKSB7CisgICAgICAgIGNvbnN0IEtleWZyYW1lVmFsdWUmIGN1cnJlbnRLZXlmcmFtZSA9
IG1fa2V5ZnJhbWVzW2ldOworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWwgPSAm
Y3VycmVudEtleWZyYW1lLnN0eWxlKCktPmZpbHRlcigpOworICAgICAgICAKKyAgICAgICAgLy8g
QW4gZW10cHkgZmlsdGVyIGxpc3QgbWF0Y2hlcyBhbnl0aGluZy4KKyAgICAgICAgaWYgKHZhbC0+
b3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAK
KyAgICAgICAgaWYgKCFmaXJzdFZhbC0+b3BlcmF0aW9uc01hdGNoKCp2YWwpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCA9
IHRydWU7Cit9CisKIGRvdWJsZSBLZXlmcmFtZUFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2Uo
KQogewogICAgIGRvdWJsZSB0ID0gQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5o
CmluZGV4IDUwOTliNTAzNDY5Y2RkMzQ2MWJmMjM0ZTY2NTcyY2U3NzE0OTRjNWQuLjAyOTY1MDhm
YTZlMzIzYzJkMzRlOGQyNTc2YThkMzkyZjRhYzgxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaApAQCAtNzcsNiArNzcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNQcm9wZXJ0eShpbnQpIGNvbnN0Owog
CiAgICAgdm9pZCB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOworICAgIHZvaWQgY2hl
Y2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKIAogcHJpdmF0ZToKICAgICBLZXlm
cmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0Kiwg
aW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJP
cGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJh
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1ZmMwNTViYjRhYjU2NDhhNmQ5ZGU3YWEyM2RlZDAyNjEz
ZGU1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlck9w
ZXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK3sKKyAgICBpZiAoZnJvbSAm
JiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAor
ICAgIGlmIChibGVuZFRvUGFzc3Rocm91Z2gpCisgICAgICAgIHJldHVybiBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQobV9hbW91bnQsIHBhc3N0
aHJvdWdoQW1vdW50KCksIHByb2dyZXNzKSwgbV90eXBlKTsKKyAgICAgICAgCisgICAgY29uc3Qg
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgIGRvdWJsZSBm
cm9tQW1vdW50ID0gZnJvbU9wID8gZnJvbU9wLT5hbW91bnQoKSA6IHBhc3N0aHJvdWdoQW1vdW50
KCk7CisgICAgcmV0dXJuIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShX
ZWJDb3JlOjpibGVuZChmcm9tQW1vdW50LCBtX2Ftb3VudCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwor
fQorCitkb3VibGUgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hB
bW91bnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBHUkFZU0NB
TEU6CisgICAgY2FzZSBTRVBJQToKKyAgICBjYXNlIEhVRV9ST1RBVEU6CisgICAgICAgIHJldHVy
biAwOworICAgIGNhc2UgU0FUVVJBVEU6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9CisKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCit7CisgICAgaWYgKGZyb20gJiYg
IWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAKKyAg
ICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4gQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKG1fYW1vdW50LCBw
YXNzdGhyb3VnaEFtb3VudCgpLCBwcm9ncmVzcyksIG1fdHlwZSk7CisgICAgICAgIAorICAgIGNv
bnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGZyb21PcCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmcm9t
KTsKKyAgICBkb3VibGUgZnJvbUFtb3VudCA9IGZyb21PcCA/IGZyb21PcC0+YW1vdW50KCkgOiBw
YXNzdGhyb3VnaEFtb3VudCgpOworICAgIHJldHVybiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoZnJvbUFtb3VudCArIChtX2Ftb3VudCAtIGZyb21BbW91bnQp
ICogcHJvZ3Jlc3MsIG1fdHlwZSk7Cit9CisKK2RvdWJsZSBCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIE9QQUNJVFk6CisgICAgICAgIHJldHVybiAxOworICAgIGNh
c2UgSU5WRVJUOgorICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCkKK3sKKyAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCisgICAg
ICAgIHJldHVybiB0aGlzOworICAgIAorICAgIGlmIChibGVuZFRvUGFzc3Rocm91Z2gpCisgICAg
ICAgIHJldHVybiBHYW1tYUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKG1f
YW1wbGl0dWRlLCAxLjAsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1f
ZXhwb25lbnQsIDEuMCwgcHJvZ3Jlc3MpLCBXZWJDb3JlOjpibGVuZChtX29mZnNldCwgMC4wLCBw
cm9ncmVzcyksIG1fdHlwZSk7CisgICAgICAgIAorICAgIGNvbnN0IEdhbW1hRmlsdGVyT3BlcmF0
aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxjb25zdCBHYW1tYUZpbHRlck9wZXJhdGlvbio+KGZy
b20pOworICAgIGRvdWJsZSBmcm9tQW1wbGl0dWRlID0gZnJvbU9wID8gZnJvbU9wLT5hbXBsaXR1
ZGUoKSA6IDE7CisgICAgZG91YmxlIGZyb21FeHBvbmVudCA9IGZyb21PcCA/IGZyb21PcC0+ZXhw
b25lbnQoKSA6IDE7CisgICAgZG91YmxlIGZyb21PZmZzZXQgPSBmcm9tT3AgPyBmcm9tT3AtPm9m
ZnNldCgpIDogMDsKKyAgICByZXR1cm4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShXZWJD
b3JlOjpibGVuZChtX2FtcGxpdHVkZSwgZnJvbUFtcGxpdHVkZSwgcHJvZ3Jlc3MpLCBXZWJDb3Jl
OjpibGVuZChtX2V4cG9uZW50LCBmcm9tRXhwb25lbnQsIHByb2dyZXNzKSwKKyAgICAgICAgV2Vi
Q29yZTo6YmxlbmQobV9vZmZzZXQsIGZyb21PZmZzZXQsIHByb2dyZXNzKSwgbV90eXBlKTsKK30K
KworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK3sKKyAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhp
cykpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAorICAgIGlmIChibGVuZFRvUGFzc3Rocm91
Z2gpCisgICAgICAgIHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKG1f
c3RkRGV2aWF0aW9uWC50eXBlKCkpLmJsZW5kKG1fc3RkRGV2aWF0aW9uWCwgcHJvZ3Jlc3MpLCAK
KyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKG1fc3RkRGV2aWF0aW9uWS50eXBlKCkpLmJsZW5k
KG1fc3RkRGV2aWF0aW9uWSwgcHJvZ3Jlc3MpLCBtX3R5cGUpOworCisgICAgY29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJh
dGlvbio+KGZyb20pOworICAgIExlbmd0aCBmcm9tWCA9IGZyb21PcCA/IGZyb21PcC0+bV9zdGRE
ZXZpYXRpb25YIDogTGVuZ3RoKG1fc3RkRGV2aWF0aW9uWC50eXBlKCkpOworICAgIExlbmd0aCBm
cm9tWSA9IGZyb21PcCA/IGZyb21PcC0+bV9zdGREZXZpYXRpb25ZIDogTGVuZ3RoKG1fc3RkRGV2
aWF0aW9uWS50eXBlKCkpOworICAgIHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
bV9zdGREZXZpYXRpb25YLmJsZW5kKGZyb21YLCBwcm9ncmVzcyksIG1fc3RkRGV2aWF0aW9uWS5i
bGVuZChmcm9tWSwgcHJvZ3Jlc3MpLCBtX3R5cGUpOworfQorCitQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
eworICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4g
RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKAorICAgICAgICAgICAgV2ViQ29yZTo6
YmxlbmQobV94LCAwLCBwcm9ncmVzcyksCisgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX3ks
IDAsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1fc3RkRGV2aWF0aW9u
LCAwLCBwcm9ncmVzcyksCisgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX2NvbG9yLCBDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpLCBwcm9ncmVzcyksCisgICAgICAgICAgICBtX3R5cGUpOwor
CisgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgIGludCBmcm9t
WCA9IGZyb21PcCA/IGZyb21PcC0+eCgpIDogMDsKKyAgICBpbnQgZnJvbVkgPSBmcm9tT3AgPyBm
cm9tT3AtPnkoKSA6IDA7CisgICAgaW50IGZyb21TdGREZXZpYXRpb24gPSBmcm9tT3AgPyBmcm9t
T3AtPnN0ZERldmlhdGlvbigpIDogMDsKKyAgICBDb2xvciBmcm9tQ29sb3IgPSBmcm9tT3AgPyBm
cm9tT3AtPmNvbG9yKCkgOiBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIAorICAgIHJl
dHVybiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoCisgICAgICAgIFdlYkNvcmU6
OmJsZW5kKG1feCwgZnJvbVgsIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQobV95
LCBmcm9tWSwgcHJvZ3Jlc3MpLAorICAgICAgICBXZWJDb3JlOjpibGVuZChtX3N0ZERldmlhdGlv
biwgZnJvbVN0ZERldmlhdGlvbiwgcHJvZ3Jlc3MpLAorICAgICAgICBXZWJDb3JlOjpibGVuZCht
X2NvbG9yLCBmcm9tQ29sb3IsIHByb2dyZXNzKSwgbV90eXBlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDgxZDljMGM1
YmE5MmMwNTc3MmMxNzE0YTU0NWQ5OTg3MTEzZDdkZjQuLmVhYWUzODZmNzIzMmU2M2QyNzQ0MDk0
YmMwNDk4OTc0OTU2ZmUxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKICAgICAgICAgQ1VTVE9NLAogI2VuZGlmCisgICAgICAgIFBBU1NUSFJP
VUdILAogICAgICAgICBOT05FCiAgICAgfTsKIApAQCAtNjQsNiArNjUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3Qg
PSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJs
ZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJl
dHVybiAwOyB9CisKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBl
KCkgPT0gbV90eXBlOyB9CiAKQEAgLTc2LDkgKzc5LDI1IEBAIHByb3RlY3RlZDoKICAgICBPcGVy
YXRpb25UeXBlIG1fdHlwZTsKIH07CiAKLS8vIEVhY2ggb2YgdGhlIGluZGl2aWR1YWwgb3BlcmF0
aW9ucyBhcmUgcHJvdmlkZWQgaGVyZS4gT25jZSB0aGV5IGFjdHVhbGx5Ci0vLyBoYXZlIGNvZGUg
dG8gYXBwbHkgdGhlaXIgZWZmZWN0IHRoZXknbGwgbW92ZSB0byBzZXBhcmF0ZSBmaWxlcy4KLS8v
IEF0IHRoZSBtb21lbnQgd2UncmUganVzdCBzdG9yaW5nIHRoZSBkYXRhIGZvciByb3VuZHRyaXBw
aW5nLgorY2xhc3MgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3Bl
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7CisgICAgfQorCitwcml2YXRlOgorCisgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUobyk7CisgICAgfQorCisgICAgUGFzc3Ro
cm91Z2hGaWx0ZXJPcGVyYXRpb24oKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbihQQVNTVEhS
T1VHSCkKKyAgICB7CisgICAgfQorfTsKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
IDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CkBAIC0xMTAsNyArMTI5LDYgQEAg
cHJpdmF0ZToKIAogLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUgYW5kIEhVRV9ST1RBVEUg
YXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZmZWN0LgogLy8gRm9yIEhV
RV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQgaW4gbV9hbW91bnQuCi0K
IGNsYXNzIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3Bl
cmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBl
KQpAQCAtMTIwLDggKzEzOCw5IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25z
dCB7IHJldHVybiBtX2Ftb3VudDsgfQogCi1wcml2YXRlOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAorcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8p
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCkBAIC0xMjksNyArMTQ4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uKj4oJm8pOwogICAgICAgICByZXR1cm4gbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50
OwogICAgIH0KLQorICAgIAorICAgIGRvdWJsZSBwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0Owor
ICAgIAogICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtb3VudCwg
T3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQogICAg
ICAgICAsIG1fYW1vdW50KGFtb3VudCkKQEAgLTE0MCw3ICsxNjEsNiBAQCBwcml2YXRlOgogfTsK
IAogLy8gSU5WRVJUIGFuZCBPUEFDSVRZIGFyZSB2YXJpYXRpb25zIG9uIGEgYmFzaWMgY29tcG9u
ZW50IHRyYW5zZmVyIGVmZmVjdC4KLQogY2xhc3MgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0
ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC0xNTAsOCArMTcwLDkgQEAg
cHVibGljOgogCiAgICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9
CiAKLXByaXZhdGU6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCitwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CiAgICAgICAg
IGlmICghaXNTYW1lVHlwZShvKSkKQEAgLTE2MCw2ICsxODEsOCBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OwogICAgIH0KIAorICAgIGRvdWJs
ZSBwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0OworCiAgICAgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAg
ICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCiAgICAgICAgICwgbV9hbW91bnQoYW1vdW50KQpA
QCAtMTgwLDggKzIwMyw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZXhwb25lbnQoKSBjb25zdCB7
IHJldHVybiBtX2V4cG9uZW50OyB9CiAgICAgZG91YmxlIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAKLXByaXZhdGU6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCitwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKQEAgLTIxMyw4ICsyMzcsOSBAQCBwdWJs
aWM6CiAgICAgTGVuZ3RoIHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlh
dGlvblg7IH0KICAgICBMZW5ndGggc3RkRGV2aWF0aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rk
RGV2aWF0aW9uWTsgfQogCi1wcml2YXRlOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAorcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCkBAIC0yMzQsNiArMjU5LDcgQEAgcHJp
dmF0ZToKICAgICBMZW5ndGggbV9zdGREZXZpYXRpb25ZOwogfTsKIAorLy8gRklYTUU6IHNoYXJw
ZW4gd2lsbCBiZSByZW1vdmVkLgogY2xhc3MgU2hhcnBlbkZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJw
ZW5GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBMZW5ndGggcmFkaXVzLCBk
b3VibGUgdGhyZXNob2xkLCBPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC0yNDYsNyArMjcyLDYgQEAg
cHVibGljOgogICAgIGRvdWJsZSB0aHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiBtX3RocmVzaG9s
ZDsgfQogCiBwcml2YXRlOgotCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8p
KQpAQCAtMjgwLDYgKzMwNSw4IEBAIHB1YmxpYzoKICAgICBpbnQgc3RkRGV2aWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KICAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBi
b29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKwogcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTI5
OSw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBpbnQgbV94OworICAg
IGludCBtX3g7IC8vIEZJWE1FOiB4IGFuZCB5IHNob3VsZCBiZSBMZW5ndGhzPwogICAgIGludCBt
X3k7CiAgICAgaW50IG1fc3RkRGV2aWF0aW9uOwogICAgIENvbG9yIG1fY29sb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNzI3ODUyYmJmOTBkN2U3ZTA4NmEyNWY2NDRmZGNjMDgxNDgwN2NhNC4uZmUxOTAzODZiNjZj
NDFlNTQzMWFjNDgxYTllMWNiZDgwNjUxYTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsMjEgQEAg
Ym9vbCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IG8pIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRmlsdGVyT3BlcmF0aW9uczo6
b3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBjb25zdAorewor
ICAgIHNpemVfdCBudW1PcGVyYXRpb25zID0gb3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICAvLyBJ
ZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1bmN0aW9uIGxpc3RzIGRvbid0IG1hdGNoLCB0aGUgbGlzdHMg
ZG9uJ3QgbWF0Y2gKKyAgICBpZiAobnVtT3BlcmF0aW9ucyAhPSBvdGhlci5vcGVyYXRpb25zKCku
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gSWYgdGhlIHR5cGVz
IG9mIGVhY2ggZnVuY3Rpb24gYXJlIG5vdCB0aGUgc2FtZSwgdGhlIGxpc3RzIGRvbid0IG1hdGNo
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PcGVyYXRpb25zOyArK2kpIHsKKyAgICAg
ICAgaWYgKCFvcGVyYXRpb25zKClbaV0tPmlzU2FtZVR5cGUoKm90aGVyLm9wZXJhdGlvbnMoKVtp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlv
bnMuaAppbmRleCAyZWJhODI5OTQzODAwYmE3ODNhYmNkODkzMDU5ODIxODRiMmFmNGQ0Li5iZjE5
M2Y1YjVkNjEwNzRjODg3OGE3OWEwZmUwZGE4YTA2Y2Y2MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTU2LDYgKzU2LDgg
QEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25z
LnNpemUoKTsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29wZXJhdGlvbnMu
YXQoaW5kZXgpLmdldCgpIDogMDsgfQogCisgICAgYm9vbCBvcGVyYXRpb25zTWF0Y2goY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiA+IG1fb3BlcmF0aW9uczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119166</attachid>
            <date>2011-12-13 23:27:47 -0800</date>
            <delta_ts>2011-12-14 08:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68476-20111213232745.patch</filename>
            <type>text/plain</type>
            <size>34271</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRhOWE1MTRhY2Y4ODQw
MWQ3ZmJjNTVjYTllMDQ2MmU5YjUzNTE1ZS4uYzI0Mzc1OWZiOTI0NDFiZGU3MTYyMmI5NDdhNTY5
YTM4OTRmMjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDExLTEyLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgLXdlYmtp
dC1maWx0ZXIgYW5pbWF0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEFkZCAtd2Via2l0LWZpbHRlciB0byB0aGUgbGlzdCBvZiBDU1Mg
cHJvcGVydGllcyB0aGF0IGFyZSBhbmltYXRhYmxlLiBBbmltYXRlCisgICAgICAgIGl0IGxpa2Ug
d2UgZG8gdHJhbnNmb3JtcywgYnkgbG9va2luZyBmb3IgbWF0Y2hpbmcgbGlzdHMgb2YgZmlsdGVy
IGZ1bmN0aW9ucy4KKyAgICAgICAgRWFjaCBraW5kIG9mIGZpbHRlciBvcGVyYXRpb24gaGFzIGEg
YmxlbmQoKSBtZXRob2QgdGhhdCBoYW5kbGVzIGJsZW5kaW5nCisgICAgICAgIGZvciB0aGF0IGZp
bHRlci4KKworICAgICAgICBbVGVzdHMgd2lsbCBiZSBhZGRlZCBsYXRlcl0KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBGaWx0ZXJPcGVyYXRpb24uY3BwIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmUuZ3lwaTog
RGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvCisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOiBOZXcgYmxlbmRGdW5jKCkgZm9yIEZpbHRlck9wZXJhdGlvbnMsIHdoaWNoIGRv
ZXMgcGVyLWZpbHRlciBibGVuZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
OmVuc3VyZVByb3BlcnR5TWFwKTogTWFrZSBQcm9wZXJ0eVdyYXBwZXIgZm9yIGZpbHRlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKTogQWRqdXN0IGlu
aXRpYWxpemF0aW9uIG9yZGVyLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDogQWRqdXN0ZWQgdGhlIG1lbWJlciB2YXJpYWJsZSBvcmRlciB0byBtaW5pbWl6ZSBwYWRk
aW5nLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZmlsdGVyRnVuY3Rpb25MaXN0
c01hdGNoKTogQWNjZXNzb3IgZm9yIHRoZSBmbGFnLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0
aW9uOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6dmFsaWRh
dGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QpOiBBZGp1c3QgY29tbWVudC4gVGhlICJpcyB2YWxpZCIg
dGVybWlub2xvZ3kgaXMgY29uZnVzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmlt
YXRpb246OmNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKTogTmV3IG1ldGhvZCB0
byBjaGVjayBmb3IgbWF0Y2hpbmcgbGlzdHMKKyAgICAgICAgb2YgZmlsdGVyIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6Y2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMp
OiBOZXcgbWV0aG9kIHRvIGNoZWNrIGZvciBtYXRjaGluZyBsaXN0cworICAgICAgICBvZiBmaWx0
ZXIgZnVuY3Rpb25zLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6
cGFzc3Rocm91Z2hBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91bnQpOiBEaWZmZXJl
bnQgZmlsdGVycyBoYXZlCisgICAgICAgIGRpZmZlcmVudCB2YWx1ZXMgZm9yIG1fYW1vdW50IGZv
ciB0aGUgInBhc3N0aHJvdWdoIiBiZWhhdmlvci4gVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYXBw
cm9wcmlhdGUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpHYW1tYUZpbHRlck9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Qmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91
Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6IE5ldyAibm8tb3AiIGZpbHRlci4KKyAgICAgICAg
KFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNo
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oOgorCisyMDEx
LTEyLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAg
IFNoYXJlIGJsZW5kIHByb2dyZXNzIGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NDY0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDM4NGZhYmFmODlhYjhhZGZmZGJhN2VjODczODI1ZWE0YTI2NWM0MzkuLmNmMjhlZjcyYmM4
N2M3YjUxMTZhYmE2MDYxYzNjMGUzOTU1ZjE5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzI1Nyw2ICszMjU3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsdGVyT3BlcmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWx0ZXJPcGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWx0ZXJPcGVyYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlm
cmFtZUxpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0ZWRlODMyNGJjNjE4ZmY4MGEzNTRiNmM5
N2IwZTQ2M2EyYTI1YWQuLjk3MGM5Y2E2M2Y1ZWU5YmY5YmY0OThmMzE4YzQ4YjhhN2RjZjAyYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMzI2Miw2ICszMjYyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9G
RUxpZ2h0aW5nTkVPTi5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bS9GRUdhdXNzaWFuQmx1ck5FT04uY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCisgICAgICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24u
Y3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NQVRITUw9MSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGUxYTkwZmVlZjU0OTdiYzI1ODI1YTEyMDkxODE2ODAyNDVhNGFkYjguLmJmZTcw
ODEyZDhjOTU4YjNiZGZmN2I4MTVhNzAwOTNjYTE0NGZiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTQ3ODMsNiArNDc4Myw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJE
aXJlY3RpdmVzLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNw
cCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWEyMTBkM2FlMTg5NWQyNWM1NWM5
NjdjN2YzMzQ0Zjg0ZmU2Yzk3MS4uMTdjNzM0NDQwYTJmYWIxZjM3YWVlZmQwN2ZiZmE0YTBjMWMw
ZDkxZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTQwMTQzLDYgKzQwMTQzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcRmlsdGVyT3BlcmF0aW9uLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRpb24uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzZWQ1NDdiM2I3Y2I3YzAwNDgwNjhmOGVlZGIxYmMxMzI1MDA0YWM5Li5jNWViMmFiMjhh
NWI4YjcxZTYzY2EyZjZlZmU4NjlkZDgzNjc4YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDgsNiArMjQ4LDcgQEAKIAkJ
MEY1QjdBNTUxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCN0E1MzEwRjY1RDdB
MDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZFQ0Q0NTBGMjUyRjM3MDBCREUyNzEgLyog
Q1NTUHJvcGVydHlMb25naGFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2RUNENDMwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hh
bmQuaCAqLzsgfTsKIAkJMEY2RUNENDYwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2RUNENDQwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwICovOyB9
OworCQkwRkI3RTZGNDE0OTcwRUIzMDAzNDZGQUUgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdFNkYzMTQ5NzBF
QjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRkNGMzMyNDBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAg
Ki87IH07CiAJCTBGQ0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjgwRjJC
OUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJEMEYyQjlB
MjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRM
YXllci5oICovOyB9OwpAQCAtNzMzMiw2ICs3MzMzLDcgQEAKIAkJMEY1QjdBNTMxMEY2NUQ3QTAw
Mzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlckVtYmVkZGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNkVDRDQzMEYyNTJGMzcwMEJERTI3MSAvKiBDU1NQcm9wZXJ0eUxvbmdoYW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5TG9uZ2hhbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2RUNENDQwRjI1MkYzNzAwQkRFMjcxIC8q
IENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTUHJvcGVydHlMb25naGFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQjdFNkYzMTQ5NzBFQjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsdGVyT3BlcmF0aW9uLmNwcDsgcGF0
aCA9IHN0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkNGMzMyODBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlRpbGVkTGF5ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0YzMzI5MEYyQjlBMjUwMDRCNjc5NSAv
KiBXZWJUaWxlZExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlRp
bGVkTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODcxLDYgKzE5ODcz
LDcgQEAKIAkJCQlCQzIyNzQ2RTBFODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oICovLAogCQkJ
CUJDNUVCNjlDMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuY3BwICovLAogCQkJCUJDNUVC
NjlEMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuaCAqLywKKwkJCQkwRkI3RTZGMzE0OTcw
RUIzMDAzNDZGQUUgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk1MDM4QkYyNTE0NzUw
RjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJNTAzOEJGMjYxNDc1MEYx
OTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovLAogCQkJCTUwMzhCRjI3MTQ3NTBG
MTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi8sCkBAIC0yNzcxNSw2ICsyNzcxOCw3
IEBACiAJCQkJOEMxMDkxOTgxNDk0RkIxMjAwQjVEM0ZFIC8qIENTU0VsZW1lbnRTdHlsZURlY2xh
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAv
KiBLaWxsUmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBGQTQxNDk2OTM5MTAw
RkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCN0U2
RjQxNDk3MEVCMzAwMzQ2RkFFIC8qIEZpbHRlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5k
ZXggMjJhODA2NjcwYjQ4YjNmY2EzMmI2OGU3MWJkMDVlYzhmZjg5ZTJmYy4uNTFiMTdhNmQyMzM5
ZDU5NDBjODc0ZTFjZGFjY2ZiZGY4YjcxNDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTE4MSw2ICsxODEsNDAgQEAgc3RhdGlj
IGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdCBUcmEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhjb25z
dCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgICAKKyAgICBGaWx0
ZXJPcGVyYXRpb25zIHJlc3VsdDsKKworICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIgZnVuY3Rp
b24gbGlzdCwgdXNlIHRoYXQgdG8gZG8gYSBwZXItZnVuY3Rpb24gYW5pbWF0aW9uLgorICAgIGlm
IChhbmltLT5maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSkgeworICAgICAgICBzaXplX3QgZnJv
bVNpemUgPSBmcm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgICAgIHNpemVfdCB0b1NpemUg
PSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9t
U2l6ZSwgdG9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKysp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJv
bVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICAgICAgUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMo
KVtpXS5nZXQoKSA6IDA7CisgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJv
bU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4oMCkpOworICAgICAgICAgICAgaWYgKGJsZW5kZWRPcCkKKyAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlP
cCA9IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAocHJvZ3Jlc3MgPiAwLjUpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9t
T3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoZSBmaWx0ZXIgZnVuY3Rpb24gbGlzdHMgZG9uJ3Qg
bWF0Y2gsIHdlIGNvdWxkIHRyeSB0byBjcm9zcy1mYWRlLCBidXQgZG9uJ3QgeWV0IGhhdmUgYSB3
YXkgdG8gcmVwcmVzZW50IHRoYXQgaW4gQ1NTLgorICAgICAgICAvLyBGb3Igbm93IHdlJ2xsIGp1
c3QgZmFpbCB0byBhbmltYXRlLgorICAgICAgICByZXN1bHQgPSB0bzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKwogc3RhdGlj
IGlubGluZSBFVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
RVZpc2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAg
ICAvLyBBbnkgbm9uLXplcm8gcmVzdWx0IG1lYW5zIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8g
YmUgdmlzaWJsZS4gIE9ubHkgYXQgMCBkbyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlCkBA
IC05NTcsNiArOTkxLDEwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAo
KQogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyY+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCAm
UmVuZGVyU3R5bGU6OnRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm0pKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyY+KENT
U1Byb3BlcnR5V2Via2l0RmlsdGVyLCAmUmVuZGVyU3R5bGU6OmZpbHRlciwgJlJlbmRlclN0eWxl
OjpzZXRGaWx0ZXIpKTsKKyNlbmRpZgorCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBl
bmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZUNvbG9yLCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5SdWxlQ29sb3IpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFw
cGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dFN0cm9rZUNvbG9yLCAmUmVuZGVy
U3R5bGU6OnNldFRleHRTdHJva2VDb2xvcikpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+
YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dEZpbGxDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRUZXh0RmlsbENvbG9yKSk7CkBAIC0xMDc1LDE4ICsxMTEzLDIxIEBAIHN0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiBB
bmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKGNvbnN0IEFuaW1hdGlvbiogdHJhbnNpdGlvbiwg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSkKICAg
ICA6IG1fYW5pbVN0YXRlKEFuaW1hdGlvblN0YXRlTmV3KQogICAgICwgbV9pc0FuaW1hdGluZyhm
YWxzZSkKKyAgICAsIG1faXNBY2NlbGVyYXRlZChmYWxzZSkKKyAgICAsIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoZmFsc2UpCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICwgbV9m
aWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc3RhcnRUaW1l
KDApCiAgICAgLCBtX3BhdXNlVGltZSgtMSkKICAgICAsIG1fcmVxdWVzdGVkU3RhcnRUaW1lKDAp
CisgICAgLCBtX3RvdGFsRHVyYXRpb24oLTEpCisgICAgLCBtX25leHRJdGVyYXRpb25EdXJhdGlv
bigtMSkKICAgICAsIG1fb2JqZWN0KHJlbmRlcmVyKQogICAgICwgbV9hbmltYXRpb24oY29uc3Rf
Y2FzdDxBbmltYXRpb24qPih0cmFuc2l0aW9uKSkKICAgICAsIG1fY29tcEFuaW0oY29tcEFuaW0p
Ci0gICAgLCBtX2lzQWNjZWxlcmF0ZWQoZmFsc2UpCi0gICAgLCBtX3RyYW5zZm9ybUZ1bmN0aW9u
TGlzdFZhbGlkKGZhbHNlKQotICAgICwgbV9uZXh0SXRlcmF0aW9uRHVyYXRpb24oLTEpCiB7CiAg
ICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZHVyYXRpb24KLSAgICBtX3RvdGFsRHVyYXRpb24gPSAt
MTsKICAgICBpZiAobV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCkgPiAwKQogICAgICAgICBt
X3RvdGFsRHVyYXRpb24gPSBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAqIG1fYW5pbWF0aW9uLT5p
dGVyYXRpb25Db3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5oCmluZGV4IDdhNmIwN2EyZmJiYjEwNWZhM2VmZjlkMjk4MjA5NzcxNDk1NGUz
YWIuLjRkMTczOGE3YWRhMzllNjAwYWQxZmI0Yzg0NjhjMGIzOTc1NmRkMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKQEAgLTE2NSw4ICsxNjUs
MTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIXBvc3RBY3RpdmUoKSAmJiBhZmZlY3RzUHJv
cGVydHkocHJvcGVydHkpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiByZW5hbWUgdGhpcyB1c2lu
ZyB0aGUgImxpc3RzIG1hdGNoIiB0ZXJtaW5vbG9neS4KICAgICBib29sIGlzVHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZh
bGlkOyB9Ci0gICAgCisgICAgYm9vbCBmaWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQorCiAgICAgLy8gRnJlZXplIHRo
ZSBhbmltYXRpb247IHVzZWQgYnkgRHVtcFJlbmRlclRyZWUuCiAgICAgdm9pZCBmcmVlemVBdFRp
bWUoZG91YmxlIHQpOwogCkBAIC0yMzAsMTYgKzIzMiwyMiBAQCBwcm90ZWN0ZWQ6CiAgICAgQW5p
bVN0YXRlIG1fYW5pbVN0YXRlOwogCiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nOyAgICAgICAvLyB0
cmFuc2l0aW9uL2FuaW1hdGlvbiByZXF1aXJlcyBjb250aW51YWwgdGltZXIgZmlyaW5nCisgICAg
Ym9vbCBtX2lzQWNjZWxlcmF0ZWQ7CisgICAgYm9vbCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZh
bGlkOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBib29sIG1fZmlsdGVyRnVuY3Rpb25M
aXN0c01hdGNoOworI2VuZGlmCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBt
X3BhdXNlVGltZTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRTdGFydFRpbWU7CisKKyAgICBkb3Vi
bGUgbV90b3RhbER1cmF0aW9uOworICAgIGRvdWJsZSBtX25leHRJdGVyYXRpb25EdXJhdGlvbjsK
KwogICAgIFJlbmRlck9iamVjdCogbV9vYmplY3Q7CiAKICAgICBSZWZQdHI8QW5pbWF0aW9uPiBt
X2FuaW1hdGlvbjsKICAgICBDb21wb3NpdGVBbmltYXRpb24qIG1fY29tcEFuaW07Ci0gICAgYm9v
bCBtX2lzQWNjZWxlcmF0ZWQ7Ci0gICAgYm9vbCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlk
OwotICAgIGRvdWJsZSBtX3RvdGFsRHVyYXRpb24sIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uOwog
ICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcm9wZXJ0eU1hcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
CmluZGV4IDU2ZDcxYWFiNDNlMTY3OTE4NzMyY2ExN2FkYmM3MDgyYmRkN2ZhYTUuLmQ5OTQ2ZWEx
YjlkNmYwNjcxYTA3YjEwZmQ1NWQyMTY1ZDRjY2IzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKQEAgLTIxMSw2ICsyMTEs
OSBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNldChSZW5kZXJTdHlsZSogdG8pCiAgICAg
ICAgIAogICAgIC8vIHNldCB0aGUgdHJhbnNmb3JtIGFuaW1hdGlvbiBsaXN0CiAgICAgdmFsaWRh
dGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAg
Y2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKKyNlbmRpZgogfQogCiB2b2lk
IEltcGxpY2l0QW5pbWF0aW9uOjpzZXRPdmVycmlkZGVuKGJvb2wgYikKQEAgLTI2NywxMCArMjcw
LDM2IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25M
aXN0KCkKICAgICBpZiAodmFsICE9IHRvVmFsICYmICF0b1ZhbC0+b3BlcmF0aW9ucygpLmlzRW1w
dHkoKSAmJiAhdmFsLT5vcGVyYXRpb25zTWF0Y2goKnRvVmFsKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gS2V5ZnJhbWVzIGFyZSB2YWxpZAorICAgIC8vIFRyYW5zZm9ybSBsaXN0cyBtYXRj
aC4KICAgICBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkID0gdHJ1ZTsKIH0KIAorI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKK3ZvaWQgSW1wbGljaXRBbmltYXRpb246OmNoZWNrRm9yTWF0Y2hp
bmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCkKK3sKKyAgICBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRj
aCA9IGZhbHNlOworICAgIAorICAgIGlmICghbV9mcm9tU3R5bGUgfHwgIW1fdG9TdHlsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiB2YWwg
PSAmbV9mcm9tU3R5bGUtPmZpbHRlcigpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHRv
VmFsID0gJm1fdG9TdHlsZS0+ZmlsdGVyKCk7CisKKyAgICBpZiAodmFsLT5vcGVyYXRpb25zKCku
aXNFbXB0eSgpKQorICAgICAgICB2YWwgPSB0b1ZhbDsKKworICAgIGlmICh2YWwtPm9wZXJhdGlv
bnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgLy8gQW4gZW10
cHkgZmlsdGVyIGxpc3QgbWF0Y2hlcyBhbnl0aGluZy4KKyAgICBpZiAodmFsICE9IHRvVmFsICYm
ICF0b1ZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHkoKSAmJiAhdmFsLT5vcGVyYXRpb25zTWF0Y2go
KnRvVmFsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmlsdGVyIGxpc3RzIG1hdGNoLgor
ICAgIG1fZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoID0gdHJ1ZTsKK30KKyNlbmRpZgorCiBkb3Vi
bGUgSW1wbGljaXRBbmltYXRpb246OnRpbWVUb05leHRTZXJ2aWNlKCkKIHsKICAgICBkb3VibGUg
dCA9IEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaAppbmRleCBjNDBjMDBhNjQ2
M2E4MjAzYjU5NGE4MDNhMTQyYTdlZGM4YzkwMDRhLi5lOGM2ZDZiYTg1MGRiNjhmOWJmZGZhM2Uw
YjE2ZDVkM2U3MWRjNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmgKQEAgLTc2LDYgKzc2LDkgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgc2VuZFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBkb3VibGUgZWxhcHNl
ZFRpbWUpOwogCiAgICAgdm9pZCB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOworI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2b2lkIGNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5j
dGlvbkxpc3RzKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBJbXBsaWNpdEFuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBpbnQgYW5pbWF0aW5nUHJvcGVydHksIFJlbmRlck9iamVjdCosIENv
bXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpOyAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRl
eCAzMTc1YWQ2NDg0Njc3ZDNhM2Y3OWZjMjkwNjk5MTZkNzU4MDBjZmVkLi45MzkzZTRhY2I0ZmM3
ZDE3Y2I2YmRjYjJiZTgyY2IyMzg3MmI4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC01Niw2ICs1Niw5IEBAIEtl
eWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1h
dGlvbiwgUmVuZGVyT2JqZWN0KiByCiAKICAgICAvLyBVcGRhdGUgdGhlIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQgZmxhZyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBmdW5jdGlvbiBsaXN0cyBp
biB0aGUga2V5ZnJhbWVzIG1hdGNoLgogICAgIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0
KCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIGNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJG
dW5jdGlvbkxpc3RzKCk7CisjZW5kaWYKIH0KIAogS2V5ZnJhbWVBbmltYXRpb246On5LZXlmcmFt
ZUFuaW1hdGlvbigpCkBAIC00MzUsNiArNDM4LDQ3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246
OnZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0KCkKICAgICBtX3RyYW5zZm9ybUZ1bmN0aW9u
TGlzdFZhbGlkID0gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgS2V5
ZnJhbWVBbmltYXRpb246OmNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCkKK3sK
KyAgICBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCA9IGZhbHNlOworCisgICAgaWYgKG1fa2V5
ZnJhbWVzLnNpemUoKSA8IDIgfHwgIW1fa2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRGaWx0ZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBFbXB0eSBmaWx0
ZXJzIG1hdGNoIGFueXRoaW5nLCBzbyBmaW5kIHRoZSBmaXJzdCBub24tZW1wdHkgZW50cnkgYXMg
dGhlIHJlZmVyZW5jZQorICAgIHNpemVfdCBudW1LZXlmcmFtZXMgPSBtX2tleWZyYW1lcy5zaXpl
KCk7CisgICAgc2l6ZV90IGZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFtZUluZGV4ID0gbnVtS2V5
ZnJhbWVzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1LZXlmcmFtZXM7ICsraSkg
eworICAgICAgICBjb25zdCBLZXlmcmFtZVZhbHVlJiBjdXJyZW50S2V5ZnJhbWUgPSBtX2tleWZy
YW1lc1tpXTsKKyAgICAgICAgaWYgKGN1cnJlbnRLZXlmcmFtZS5zdHlsZSgpLT50cmFuc2Zvcm0o
KS5vcGVyYXRpb25zKCkuc2l6ZSgpKSB7CisgICAgICAgICAgICBmaXJzdE5vbkVtcHR5RmlsdGVy
S2V5ZnJhbWVJbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpZiAoZmlyc3ROb25FbXB0eUZpbHRlcktleWZyYW1lSW5kZXggPT0gbnVtS2V5
ZnJhbWVzKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMqIGZpcnN0VmFsID0gJm1fa2V5ZnJhbWVzW2ZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFt
ZUluZGV4XS5zdHlsZSgpLT5maWx0ZXIoKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gZmly
c3ROb25FbXB0eUZpbHRlcktleWZyYW1lSW5kZXggKyAxOyBpIDwgbnVtS2V5ZnJhbWVzOyArK2kp
IHsKKyAgICAgICAgY29uc3QgS2V5ZnJhbWVWYWx1ZSYgY3VycmVudEtleWZyYW1lID0gbV9rZXlm
cmFtZXNbaV07CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHZhbCA9ICZjdXJyZW50
S2V5ZnJhbWUuc3R5bGUoKS0+ZmlsdGVyKCk7CisgICAgICAgIAorICAgICAgICAvLyBBbiBlbXRw
eSBmaWx0ZXIgbGlzdCBtYXRjaGVzIGFueXRoaW5nLgorICAgICAgICBpZiAodmFsLT5vcGVyYXRp
b25zKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAg
ICBpZiAoIWZpcnN0VmFsLT5vcGVyYXRpb25zTWF0Y2goKnZhbCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIG1fZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoID0gdHJ1ZTsK
K30KKyNlbmRpZgorCiBkb3VibGUgS2V5ZnJhbWVBbmltYXRpb246OnRpbWVUb05leHRTZXJ2aWNl
KCkKIHsKICAgICBkb3VibGUgdCA9IEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aAppbmRleCA1MDk5YjUwMzQ2OWNkZDM0NjFiZjIzNGU2NjU3MmNlNzcxNDk0YzVkLi42ZTY0Y2My
ZDQxYzkxMDA1ZjU2YjFlMGQxZDcxMDUzMjVkZTBmOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKQEAgLTc3LDYgKzc3LDkgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzUHJvcGVydHkoaW50KSBjb25zdDsK
IAogICAgIHZvaWQgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKKyNpZiBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCisgICAgdm9pZCBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0
cygpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltYXRpb24sIFJlbmRlck9iamVjdCosIGludCBpbmRleCwgQ29tcG9zaXRlQW5p
bWF0aW9uKiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRh
NWZjMDU1YmI0YWI1NjQ4YTZkOWRlN2FhMjNkZWQwMjYxM2RlNWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAt
MCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKKworI2luY2x1ZGUg
IkFuaW1hdGlvblV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2gpCit7CisgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRo
aXMpKQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJv
dWdoKQorICAgICAgICByZXR1cm4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKFdlYkNvcmU6OmJsZW5kKG1fYW1vdW50LCBwYXNzdGhyb3VnaEFtb3VudCgpLCBwcm9ncmVz
cyksIG1fdHlwZSk7CisgICAgICAgIAorICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24qIGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24qPihmcm9tKTsKKyAgICBkb3VibGUgZnJvbUFtb3VudCA9IGZyb21PcCA/IGZy
b21PcC0+YW1vdW50KCkgOiBwYXNzdGhyb3VnaEFtb3VudCgpOworICAgIHJldHVybiBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbUFtb3Vu
dCwgbV9hbW91bnQsIHByb2dyZXNzKSwgbV90eXBlKTsKK30KKworZG91YmxlIEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1vdW50KCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgR1JBWVNDQUxFOgorICAgIGNhc2UgU0VQSUE6Cisg
ICAgY2FzZSBIVUVfUk9UQVRFOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFNBVFVSQVRF
OgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQoreworICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgCisgICAgaWYgKGJsZW5kVG9QYXNzdGhyb3Vn
aCkKKyAgICAgICAgcmV0dXJuIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX2Ftb3VudCwgcGFzc3Rocm91Z2hBbW91bnQoKSwgcHJv
Z3Jlc3MpLCBtX3R5cGUpOworICAgICAgICAKKyAgICBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZnJvbSk7CisgICAgZG91YmxlIGZyb21BbW91
bnQgPSBmcm9tT3AgPyBmcm9tT3AtPmFtb3VudCgpIDogcGFzc3Rocm91Z2hBbW91bnQoKTsKKyAg
ICByZXR1cm4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGZy
b21BbW91bnQgKyAobV9hbW91bnQgLSBmcm9tQW1vdW50KSAqIHByb2dyZXNzLCBtX3R5cGUpOwor
fQorCitkb3VibGUgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Ro
cm91Z2hBbW91bnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBP
UEFDSVRZOgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIElOVkVSVDoKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEdh
bW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCit7CisgICAgaWYgKGZyb20g
JiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAK
KyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4gR2FtbWFGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX2FtcGxpdHVkZSwgMS4wLCBwcm9ncmVz
cyksCisgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX2V4cG9uZW50LCAxLjAsIHByb2dyZXNz
KSwgV2ViQ29yZTo6YmxlbmQobV9vZmZzZXQsIDAuMCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOworICAg
ICAgICAKKyAgICBjb25zdCBHYW1tYUZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nh
c3Q8Y29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qPihmcm9tKTsKKyAgICBkb3VibGUgZnJvbUFt
cGxpdHVkZSA9IGZyb21PcCA/IGZyb21PcC0+YW1wbGl0dWRlKCkgOiAxOworICAgIGRvdWJsZSBm
cm9tRXhwb25lbnQgPSBmcm9tT3AgPyBmcm9tT3AtPmV4cG9uZW50KCkgOiAxOworICAgIGRvdWJs
ZSBmcm9tT2Zmc2V0ID0gZnJvbU9wID8gZnJvbU9wLT5vZmZzZXQoKSA6IDA7CisgICAgcmV0dXJu
IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQobV9hbXBsaXR1ZGUs
IGZyb21BbXBsaXR1ZGUsIHByb2dyZXNzKSwgV2ViQ29yZTo6YmxlbmQobV9leHBvbmVudCwgZnJv
bUV4cG9uZW50LCBwcm9ncmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1fb2Zmc2V0LCBm
cm9tT2Zmc2V0LCBwcm9ncmVzcyksIG1fdHlwZSk7Cit9CisKK1Bhc3NSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCit7CisgICAg
aWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAgICAgICByZXR1cm4gdGhp
czsKKyAgICAKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4gQmx1
ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChtX3N0ZERldmlhdGlvblgudHlwZSgpKS5i
bGVuZChtX3N0ZERldmlhdGlvblgsIHByb2dyZXNzKSwgCisgICAgICAgICAgICAgICAgICAgIExl
bmd0aChtX3N0ZERldmlhdGlvblkudHlwZSgpKS5ibGVuZChtX3N0ZERldmlhdGlvblksIHByb2dy
ZXNzKSwgbV90eXBlKTsKKworICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qIGZyb21PcCA9
IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmcm9tKTsKKyAgICBMZW5n
dGggZnJvbVggPSBmcm9tT3AgPyBmcm9tT3AtPm1fc3RkRGV2aWF0aW9uWCA6IExlbmd0aChtX3N0
ZERldmlhdGlvblgudHlwZSgpKTsKKyAgICBMZW5ndGggZnJvbVkgPSBmcm9tT3AgPyBmcm9tT3At
Pm1fc3RkRGV2aWF0aW9uWSA6IExlbmd0aChtX3N0ZERldmlhdGlvblkudHlwZSgpKTsKKyAgICBy
ZXR1cm4gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fc3RkRGV2aWF0aW9uWC5ibGVuZChm
cm9tWCwgcHJvZ3Jlc3MpLCBtX3N0ZERldmlhdGlvblkuYmxlbmQoZnJvbVksIHByb2dyZXNzKSwg
bV90eXBlKTsKK30KKworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK3sKKyAgICBpZiAoZnJvbSAmJiAhZnJv
bS0+aXNTYW1lVHlwZSgqdGhpcykpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgaWYgKGJs
ZW5kVG9QYXNzdGhyb3VnaCkKKyAgICAgICAgcmV0dXJuIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZSgKKyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1feCwgMCwgcHJvZ3Jlc3Mp
LAorICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV95LCAwLCBwcm9ncmVzcyksCisgICAgICAg
ICAgICBXZWJDb3JlOjpibGVuZChtX3N0ZERldmlhdGlvbiwgMCwgcHJvZ3Jlc3MpLAorICAgICAg
ICAgICAgV2ViQ29yZTo6YmxlbmQobV9jb2xvciwgQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KSwg
cHJvZ3Jlc3MpLAorICAgICAgICAgICAgbV90eXBlKTsKKworICAgIGNvbnN0IERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24qIGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24qPihmcm9tKTsKKyAgICBpbnQgZnJvbVggPSBmcm9tT3AgPyBmcm9tT3AtPngo
KSA6IDA7CisgICAgaW50IGZyb21ZID0gZnJvbU9wID8gZnJvbU9wLT55KCkgOiAwOworICAgIGlu
dCBmcm9tU3RkRGV2aWF0aW9uID0gZnJvbU9wID8gZnJvbU9wLT5zdGREZXZpYXRpb24oKSA6IDA7
CisgICAgQ29sb3IgZnJvbUNvbG9yID0gZnJvbU9wID8gZnJvbU9wLT5jb2xvcigpIDogQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAKKyAgICByZXR1cm4gRHJvcFNoYWRvd0ZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKAorICAgICAgICBXZWJDb3JlOjpibGVuZChtX3gsIGZyb21YLCBwcm9n
cmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1feSwgZnJvbVksIHByb2dyZXNzKSwKKyAg
ICAgICAgV2ViQ29yZTo6YmxlbmQobV9zdGREZXZpYXRpb24sIGZyb21TdGREZXZpYXRpb24sIHBy
b2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9jb2xvciwgZnJvbUNvbG9yLCBwcm9n
cmVzcyksIG1fdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA4MWQ5YzBjNWJhOTJjMDU3NzJjMTcxNGE1NDVkOTk4
NzExM2Q3ZGY0Li5lYWFlMzg2ZjcyMzJlNjNkMjc0NDA5NGJjMDQ5ODk3NDk1NmZlMWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgICAg
IENVU1RPTSwKICNlbmRpZgorICAgICAgICBQQVNTVEhST1VHSCwKICAgICAgICAgTk9ORQogICAg
IH07CiAKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8p
OyB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8q
YmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkgeyByZXR1cm4gMDsgfQorCiAgICAgdmlydHVh
bCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8p
IGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IG1fdHlwZTsgfQogCkBAIC03
Niw5ICs3OSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiB9Owog
Ci0vLyBFYWNoIG9mIHRoZSBpbmRpdmlkdWFsIG9wZXJhdGlvbnMgYXJlIHByb3ZpZGVkIGhlcmUu
IE9uY2UgdGhleSBhY3R1YWxseQotLy8gaGF2ZSBjb2RlIHRvIGFwcGx5IHRoZWlyIGVmZmVjdCB0
aGV5J2xsIG1vdmUgdG8gc2VwYXJhdGUgZmlsZXMuCi0vLyBBdCB0aGUgbW9tZW50IHdlJ3JlIGp1
c3Qgc3RvcmluZyB0aGUgZGF0YSBmb3Igcm91bmR0cmlwcGluZy4KK2NsYXNzIFBhc3N0aHJvdWdo
RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0
aW9uKCkpOworICAgIH0KKworcHJpdmF0ZToKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBp
c1NhbWVUeXBlKG8pOworICAgIH0KKworICAgIFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkK
KyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oUEFTU1RIUk9VR0gpCisgICAgeworICAgIH0KK307
CiAKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgpAQCAtMTEwLDcgKzEyOSw2IEBAIHByaXZhdGU6CiAKIC8vIEdSQVlTQ0FM
RSwgU0VQSUEsIFNBVFVSQVRFIGFuZCBIVUVfUk9UQVRFIGFyZSB2YXJpYXRpb25zIG9uIGEgYmFz
aWMgY29sb3IgbWF0cml4IGVmZmVjdC4KIC8vIEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Yg
cm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1vdW50LgotCiBjbGFzcyBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4gY3JlYXRl
KGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKQEAgLTEyMCw4ICsxMzgsOSBAQCBw
dWJsaWM6CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0K
IAotcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFpc1NhbWVUeXBlKG8pKQpAQCAtMTI5LDcgKzE0OCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvKTsKICAgICAgICAg
cmV0dXJuIG1fYW1vdW50ID09IG90aGVyLT5tX2Ftb3VudDsKICAgICB9Ci0KKyAgICAKKyAgICBk
b3VibGUgcGFzc3Rocm91Z2hBbW91bnQoKSBjb25zdDsKKyAgICAKICAgICBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKICAg
ICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKICAgICAgICAgLCBtX2Ftb3VudChhbW91bnQp
CkBAIC0xNDAsNyArMTYxLDYgQEAgcHJpdmF0ZToKIH07CiAKIC8vIElOVkVSVCBhbmQgT1BBQ0lU
WSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCi0K
IGNsYXNzIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmls
dGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0
aW9uVHlwZSB0eXBlKQpAQCAtMTUwLDggKzE3MCw5IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBh
bW91bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQogCi1wcml2YXRlOgorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KTsKIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJP
cGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCkBA
IC0xNjAsNiArMTgxLDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90
aGVyLT5tX2Ftb3VudDsKICAgICB9CiAKKyAgICBkb3VibGUgcGFzc3Rocm91Z2hBbW91bnQoKSBj
b25zdDsKKwogICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZG91Ymxl
IGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0
eXBlKQogICAgICAgICAsIG1fYW1vdW50KGFtb3VudCkKQEAgLTE4MCw4ICsyMDMsOSBAQCBwdWJs
aWM6CiAgICAgZG91YmxlIGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQog
ICAgIGRvdWJsZSBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCi1wcml2YXRl
OgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKTsKIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2Ft
ZVR5cGUobykpCkBAIC0yMTMsOCArMjM3LDkgQEAgcHVibGljOgogICAgIExlbmd0aCBzdGREZXZp
YXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25YOyB9CiAgICAgTGVuZ3RoIHN0
ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblk7IH0KIAotcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2ggPSBmYWxzZSk7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFpc1Nh
bWVUeXBlKG8pKQpAQCAtMjM0LDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoIG1fc3Rk
RGV2aWF0aW9uWTsKIH07CiAKKy8vIEZJWE1FOiBzaGFycGVuIHdpbGwgYmUgcmVtb3ZlZC4KIGNs
YXNzIFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFycGVuRmlsdGVyT3BlcmF0aW9uPiBjcmVh
dGUoZG91YmxlIGFtb3VudCwgTGVuZ3RoIHJhZGl1cywgZG91YmxlIHRocmVzaG9sZCwgT3BlcmF0
aW9uVHlwZSB0eXBlKQpAQCAtMjQ2LDcgKzI3Miw2IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdGhy
ZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlc2hvbGQ7IH0KIAogcHJpdmF0ZToKLQogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKQEAgLTI4MCw2ICszMDUsOCBAQCBw
dWJsaWM6CiAgICAgaW50IHN0ZERldmlhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0
aW9uOyB9CiAgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gg
PSBmYWxzZSk7CisKIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yOTksNyArMzI2LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgaW50IG1feDsKKyAgICBpbnQgbV94OyAvLyBGSVhNRTogeCBh
bmQgeSBzaG91bGQgYmUgTGVuZ3Rocz8KICAgICBpbnQgbV95OwogICAgIGludCBtX3N0ZERldmlh
dGlvbjsKICAgICBDb2xvciBtX2NvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IDcyNzg1MmJiZjkwZDdlN2UwODZh
MjVmNjQ0ZmRjYzA4MTQ4MDdjYTQuLmZlMTkwMzg2YjY2YzQxZTU0MzFhYzQ4MWE5ZTFjYmQ4MDY1
MWEzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVy
T3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDIxIEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdGlvbnNNYXRjaChjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QKK3sKKyAgICBzaXplX3QgbnVtT3BlcmF0aW9u
cyA9IG9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgLy8gSWYgdGhlIHNpemVzIG9mIHRoZSBmdW5j
dGlvbiBsaXN0cyBkb24ndCBtYXRjaCwgdGhlIGxpc3RzIGRvbid0IG1hdGNoCisgICAgaWYgKG51
bU9wZXJhdGlvbnMgIT0gb3RoZXIub3BlcmF0aW9ucygpLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIC8vIElmIHRoZSB0eXBlcyBvZiBlYWNoIGZ1bmN0aW9uIGFyZSBu
b3QgdGhlIHNhbWUsIHRoZSBsaXN0cyBkb24ndCBtYXRjaAorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtT3BlcmF0aW9uczsgKytpKSB7CisgICAgICAgIGlmICghb3BlcmF0aW9ucygpW2ld
LT5pc1NhbWVUeXBlKCpvdGhlci5vcGVyYXRpb25zKClbaV0pKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggMmViYTgyOTk0Mzgw
MGJhNzgzYWJjZDg5MzA1OTgyMTg0YjJhZjRkNC4uYmYxOTNmNWI1ZDYxMDc0Yzg4NzhhNzlhMGZl
MGRhOGEwNmNmNjI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9ucy5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBt
X29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6IDA7IH0K
IAorICAgIGJvb2wgb3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29w
ZXJhdGlvbnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119224</attachid>
            <date>2011-12-14 08:38:55 -0800</date>
            <delta_ts>2011-12-14 09:58:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68476-20111214083853.patch</filename>
            <type>text/plain</type>
            <size>34423</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRhOWE1MTRhY2Y4ODQw
MWQ3ZmJjNTVjYTllMDQ2MmU5YjUzNTE1ZS4uYzI0Mzc1OWZiOTI0NDFiZGU3MTYyMmI5NDdhNTY5
YTM4OTRmMjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDExLTEyLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgLXdlYmtp
dC1maWx0ZXIgYW5pbWF0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEFkZCAtd2Via2l0LWZpbHRlciB0byB0aGUgbGlzdCBvZiBDU1Mg
cHJvcGVydGllcyB0aGF0IGFyZSBhbmltYXRhYmxlLiBBbmltYXRlCisgICAgICAgIGl0IGxpa2Ug
d2UgZG8gdHJhbnNmb3JtcywgYnkgbG9va2luZyBmb3IgbWF0Y2hpbmcgbGlzdHMgb2YgZmlsdGVy
IGZ1bmN0aW9ucy4KKyAgICAgICAgRWFjaCBraW5kIG9mIGZpbHRlciBvcGVyYXRpb24gaGFzIGEg
YmxlbmQoKSBtZXRob2QgdGhhdCBoYW5kbGVzIGJsZW5kaW5nCisgICAgICAgIGZvciB0aGF0IGZp
bHRlci4KKworICAgICAgICBbVGVzdHMgd2lsbCBiZSBhZGRlZCBsYXRlcl0KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBGaWx0ZXJPcGVyYXRpb24uY3BwIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmUuZ3lwaTog
RGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvCisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOiBOZXcgYmxlbmRGdW5jKCkgZm9yIEZpbHRlck9wZXJhdGlvbnMsIHdoaWNoIGRv
ZXMgcGVyLWZpbHRlciBibGVuZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
OmVuc3VyZVByb3BlcnR5TWFwKTogTWFrZSBQcm9wZXJ0eVdyYXBwZXIgZm9yIGZpbHRlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKTogQWRqdXN0IGlu
aXRpYWxpemF0aW9uIG9yZGVyLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDogQWRqdXN0ZWQgdGhlIG1lbWJlciB2YXJpYWJsZSBvcmRlciB0byBtaW5pbWl6ZSBwYWRk
aW5nLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZmlsdGVyRnVuY3Rpb25MaXN0
c01hdGNoKTogQWNjZXNzb3IgZm9yIHRoZSBmbGFnLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0
aW9uOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6dmFsaWRh
dGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QpOiBBZGp1c3QgY29tbWVudC4gVGhlICJpcyB2YWxpZCIg
dGVybWlub2xvZ3kgaXMgY29uZnVzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmlt
YXRpb246OmNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKTogTmV3IG1ldGhvZCB0
byBjaGVjayBmb3IgbWF0Y2hpbmcgbGlzdHMKKyAgICAgICAgb2YgZmlsdGVyIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6Y2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMp
OiBOZXcgbWV0aG9kIHRvIGNoZWNrIGZvciBtYXRjaGluZyBsaXN0cworICAgICAgICBvZiBmaWx0
ZXIgZnVuY3Rpb25zLgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Ymxl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6
cGFzc3Rocm91Z2hBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91bnQpOiBEaWZmZXJl
bnQgZmlsdGVycyBoYXZlCisgICAgICAgIGRpZmZlcmVudCB2YWx1ZXMgZm9yIG1fYW1vdW50IGZv
ciB0aGUgInBhc3N0aHJvdWdoIiBiZWhhdmlvci4gVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYXBw
cm9wcmlhdGUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpHYW1tYUZpbHRlck9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Qmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzc3Rocm91
Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6IE5ldyAibm8tb3AiIGZpbHRlci4KKyAgICAgICAg
KFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNo
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oOgorCisyMDEx
LTEyLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAg
IFNoYXJlIGJsZW5kIHByb2dyZXNzIGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NDY0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDM4NGZhYmFmODlhYjhhZGZmZGJhN2VjODczODI1ZWE0YTI2NWM0MzkuLmNmMjhlZjcyYmM4
N2M3YjUxMTZhYmE2MDYxYzNjMGUzOTU1ZjE5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzI1Nyw2ICszMjU3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsdGVyT3BlcmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWx0ZXJPcGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWx0ZXJPcGVyYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlm
cmFtZUxpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0ZWRlODMyNGJjNjE4ZmY4MGEzNTRiNmM5
N2IwZTQ2M2EyYTI1YWQuLjUwZmEyZWEwMjFiOTQ5MjQxM2MzZWM5MTUxOWJiNWI4YWZlYzAxYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMzI2MSw3ICszMjYxLDggQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9G
RUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvYXJtL0ZFTGlnaHRpbmdORU9OLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5jcHAgXAotICAgICAgICByZW5kZXJp
bmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKyAgICAgICAgcmVuZGVyaW5nL3N0eWxlL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIFwKKyAgICAgICAgcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJh
dGlvbi5jcHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01BVEhNTD0xKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggZTFhOTBmZWVmNTQ5N2JjMjU4MjVhMTIwOTE4MTY4MDI0NWE0YWRiOC4u
YmZlNzA4MTJkOGM5NThiM2JkZmY3YjgxNWE3MDA5M2NhMTQ0ZmJjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNDc4Myw2ICs0NzgzLDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ291
bnRlckRpcmVjdGl2ZXMuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmNw
cCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHAnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlYTIxMGQzYWUxODk1ZDI1
YzU1Yzk2N2M3ZjMzNDRmODRmZTZjOTcxLi4xN2M3MzQ0NDBhMmZhYjFmMzdhZWVmZDA3ZmJmYTRh
MGMxYzBkOTFkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNDAxNDMsNiArNDAxNDMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRp
b24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXHN0eWxlXEZpbHRlck9wZXJhdGlvbi5oIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDNlZDU0N2IzYjdjYjdjMDA0ODA2OGY4ZWVkYjFiYzEzMjUwMDRhYzkuLmM1ZWIy
YWIyOGE1YjhiNzFlNjNjYTJmNmVmZTg2OWRkODM2NzhjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0OCw2ICsyNDgsNyBA
QAogCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI3QTUzMTBG
NjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNkVDRDQ1MEYyNTJGMzcwMEJERTI3
MSAvKiBDU1NQcm9wZXJ0eUxvbmdoYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjZFQ0Q0MzBGMjUyRjM3MDBCREUyNzEgLyogQ1NTUHJvcGVydHlM
b25naGFuZC5oICovOyB9OwogCQkwRjZFQ0Q0NjBGMjUyRjM3MDBCREUyNzEgLyogQ1NTUHJvcGVy
dHlMb25naGFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjZFQ0Q0NDBGMjUyRjM3MDBCREUyNzEgLyogQ1NTUHJvcGVydHlMb25naGFuZC5jcHAg
Ki87IH07CisJCTBGQjdFNkY0MTQ5NzBFQjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0U2RjMx
NDk3MEVCMzAwMzQ2RkFFIC8qIEZpbHRlck9wZXJhdGlvbi5jcHAgKi87IH07CiAJCTBGQ0YzMzI0
MEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNH
LmNwcCAqLzsgfTsKIAkJMEZDRjMzMkMwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMy
ODBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5tbSAqLzsgfTsKIAkJMEZDRjMzMkQw
RjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzI5MEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJU
aWxlZExheWVyLmggKi87IH07CkBAIC03MzMyLDYgKzczMzMsNyBAQAogCQkwRjVCN0E1MzEwRjY1
RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyRW1iZWRkZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2RUNENDMwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hh
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlMb25naGFu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZFQ0Q0NDBGMjUyRjM3MDBCREUy
NzEgLyogQ1NTUHJvcGVydHlMb25naGFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZCN0U2RjMxNDk3MEVCMzAwMzQ2RkFFIC8qIEZpbHRlck9wZXJhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWx0ZXJPcGVyYXRpb24uY3Bw
OyBwYXRoID0gc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQ0YzMzI4MEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGlsZWRMYXll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMjkwRjJCOUEyNTAwNEI2
Nzk1IC8qIFdlYlRpbGVkTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVGlsZWRMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4NzEsNiAr
MTk4NzMsNyBAQAogCQkJCUJDMjI3NDZFMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggKi8s
CiAJCQkJQkM1RUI2OUMwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5jcHAgKi8sCiAJCQkJ
QkM1RUI2OUQwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oICovLAorCQkJCTBGQjdFNkYz
MTQ5NzBFQjMwMDM0NkZBRSAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovLAogCQkJCTUwMzhCRjI1
MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLywKIAkJCQk1MDM4QkYyNjE0
NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJNTAzOEJGMjcx
NDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLywKQEAgLTI3NzE1LDYgKzI3
NzE4LDcgQEAKIAkJCQk4QzEwOTE5ODE0OTRGQjEyMDBCNUQzRkUgLyogQ1NTRWxlbWVudFN0eWxl
RGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMwNkU0RTYxNDk1NTU0MzAwN0Yx
N0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MEZBNDE0OTY5
MzkxMDBGQjVCRDggLyogV2ViVGlsZUNhY2hlTGF5ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkw
RkI3RTZGNDE0OTcwRUIzMDAzNDZGQUUgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAppbmRleCAyMmE4MDY2NzBiNDhiM2ZjYTMyYjY4ZTcxYmQwNWVjOGZmODllMmZjLi41MWIxN2E2
ZDIzMzlkNTk0MGM4NzRlMWNkYWNjZmJkZjhiNzE0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtMTgxLDYgKzE4MSw0MCBAQCBz
dGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqIGFuaW0sIGNvbnN0IFRyYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCitzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGdW5j
KGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20s
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit7ICAgIAorICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OworCisgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciBm
dW5jdGlvbiBsaXN0LCB1c2UgdGhhdCB0byBkbyBhIHBlci1mdW5jdGlvbiBhbmltYXRpb24uCisg
ICAgaWYgKGFuaW0tPmZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCgpKSB7CisgICAgICAgIHNpemVf
dCBmcm9tU2l6ZSA9IGZyb20ub3BlcmF0aW9ucygpLnNpemUoKTsKKyAgICAgICAgc2l6ZV90IHRv
U2l6ZSA9IHRvLm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gbWF4
KGZyb21TaXplLCB0b1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKykgeworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkg
PCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7CisgICAgICAgICAg
ICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0
aW9ucygpW2ldLmdldCgpIDogMDsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
IGJsZW5kZWRPcCA9IHRvT3AgPyB0b09wLT5ibGVuZChmcm9tT3AuZ2V0KCksIHByb2dyZXNzKSA6
IChmcm9tT3AgPyBmcm9tT3AtPmJsZW5kKDAsIHByb2dyZXNzLCB0cnVlKSA6IFBhc3NSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPigwKSk7CisgICAgICAgICAgICBpZiAoYmxlbmRlZE9wKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVu
dGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAg
ICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm9w
ZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlIGZpbHRlciBmdW5jdGlvbiBsaXN0cyBk
b24ndCBtYXRjaCwgd2UgY291bGQgdHJ5IHRvIGNyb3NzLWZhZGUsIGJ1dCBkb24ndCB5ZXQgaGF2
ZSBhIHdheSB0byByZXByZXNlbnQgdGhhdCBpbiBDU1MuCisgICAgICAgIC8vIEZvciBub3cgd2Un
bGwganVzdCBmYWlsIHRvIGFuaW1hdGUuCisgICAgICAgIHJlc3VsdCA9IHRvOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQorCiBz
dGF0aWMgaW5saW5lIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBFVmlzaWJpbGl0eSBmcm9tLCBFVmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQog
ewogICAgIC8vIEFueSBub24temVybyByZXN1bHQgbWVhbnMgd2UgY29uc2lkZXIgdGhlIG9iamVj
dCB0byBiZSB2aXNpYmxlLiAgT25seSBhdCAwIGRvIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8g
YmUKQEAgLTk1Nyw2ICs5OTEsMTAgQEAgdm9pZCBBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0
eU1hcCgpCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3Jh
cHBlcjxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJj4oQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0sICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybSkp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBGaWx0ZXJPcGVyYXRpb25z
Jj4oQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXIsICZSZW5kZXJTdHlsZTo6ZmlsdGVyLCAmUmVuZGVy
U3R5bGU6OnNldEZpbHRlcikpOworI2VuZGlmCisKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMt
PmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZUNvbG9yLCAmUmVu
ZGVyU3R5bGU6OnNldENvbHVtblJ1bGVDb2xvcikpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VDb2xvciwgJlJlbmRlclN0eWxlOjp0ZXh0U3Ryb2tlQ29sb3IsICZS
ZW5kZXJTdHlsZTo6c2V0VGV4dFN0cm9rZUNvbG9yKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvciwgJlJlbmRlclN0eWxlOjp0ZXh0RmlsbENvbG9yLCAmUmVu
ZGVyU3R5bGU6OnNldFRleHRGaWxsQ29sb3IpKTsKQEAgLTEwNzUsMTggKzExMTMsMjEgQEAgc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXJGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCkKIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uKiB0cmFuc2l0
aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmlt
KQogICAgIDogbV9hbmltU3RhdGUoQW5pbWF0aW9uU3RhdGVOZXcpCiAgICAgLCBtX2lzQW5pbWF0
aW5nKGZhbHNlKQorICAgICwgbV9pc0FjY2VsZXJhdGVkKGZhbHNlKQorICAgICwgbV90cmFuc2Zv
cm1GdW5jdGlvbkxpc3RWYWxpZChmYWxzZSkKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAg
LCBtX2ZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaChmYWxzZSkKKyNlbmRpZgogICAgICwgbV9zdGFy
dFRpbWUoMCkKICAgICAsIG1fcGF1c2VUaW1lKC0xKQogICAgICwgbV9yZXF1ZXN0ZWRTdGFydFRp
bWUoMCkKKyAgICAsIG1fdG90YWxEdXJhdGlvbigtMSkKKyAgICAsIG1fbmV4dEl0ZXJhdGlvbkR1
cmF0aW9uKC0xKQogICAgICwgbV9vYmplY3QocmVuZGVyZXIpCiAgICAgLCBtX2FuaW1hdGlvbihj
b25zdF9jYXN0PEFuaW1hdGlvbio+KHRyYW5zaXRpb24pKQogICAgICwgbV9jb21wQW5pbShjb21w
QW5pbSkKLSAgICAsIG1faXNBY2NlbGVyYXRlZChmYWxzZSkKLSAgICAsIG1fdHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoZmFsc2UpCi0gICAgLCBtX25leHRJdGVyYXRpb25EdXJhdGlvbigtMSkK
IHsKICAgICAvLyBDb21wdXRlIHRoZSB0b3RhbCBkdXJhdGlvbgotICAgIG1fdG90YWxEdXJhdGlv
biA9IC0xOwogICAgIGlmIChtX2FuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSA+IDApCiAgICAg
ICAgIG1fdG90YWxEdXJhdGlvbiA9IG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogbV9hbmltYXRp
b24tPml0ZXJhdGlvbkNvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmgKaW5kZXggN2E2YjA3YTJmYmJiMTA1ZmEzZWZmOWQyOTgyMDk3NzE0
OTU0ZTNhYi4uNzhhODVmMWNkZTMwMDhjODlhZDYzY2Q3YzUyZjMyN2MyMDVkMGFlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaApAQCAtMTY1LDgg
KzE2NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhcG9zdEFjdGl2ZSgpICYmIGFmZmVj
dHNQcm9wZXJ0eShwcm9wZXJ0eSk7CiAgICAgfQogCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGlz
IHVzaW5nIHRoZSAibGlzdHMgbWF0Y2giIHRlcm1pbm9sb2d5LgogICAgIGJvb2wgaXNUcmFuc2Zv
cm1GdW5jdGlvbkxpc3RWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtRnVuY3Rpb25M
aXN0VmFsaWQ7IH0KLSAgICAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgYm9vbCBmaWx0
ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckZ1bmN0aW9uTGlz
dHNNYXRjaDsgfQorI2VuZGlmCisKICAgICAvLyBGcmVlemUgdGhlIGFuaW1hdGlvbjsgdXNlZCBi
eSBEdW1wUmVuZGVyVHJlZS4KICAgICB2b2lkIGZyZWV6ZUF0VGltZShkb3VibGUgdCk7CiAKQEAg
LTIzMCwxNiArMjM0LDIyIEBAIHByb3RlY3RlZDoKICAgICBBbmltU3RhdGUgbV9hbmltU3RhdGU7
CiAKICAgICBib29sIG1faXNBbmltYXRpbmc7ICAgICAgIC8vIHRyYW5zaXRpb24vYW5pbWF0aW9u
IHJlcXVpcmVzIGNvbnRpbnVhbCB0aW1lciBmaXJpbmcKKyAgICBib29sIG1faXNBY2NlbGVyYXRl
ZDsKKyAgICBib29sIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQ7CisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorICAgIGJvb2wgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2g7CisjZW5kaWYK
ICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1fcGF1c2VUaW1lOwogICAgIGRv
dWJsZSBtX3JlcXVlc3RlZFN0YXJ0VGltZTsKKworICAgIGRvdWJsZSBtX3RvdGFsRHVyYXRpb247
CisgICAgZG91YmxlIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uOworCiAgICAgUmVuZGVyT2JqZWN0
KiBtX29iamVjdDsKIAogICAgIFJlZlB0cjxBbmltYXRpb24+IG1fYW5pbWF0aW9uOwogICAgIENv
bXBvc2l0ZUFuaW1hdGlvbiogbV9jb21wQW5pbTsKLSAgICBib29sIG1faXNBY2NlbGVyYXRlZDsK
LSAgICBib29sIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQ7Ci0gICAgZG91YmxlIG1fdG90
YWxEdXJhdGlvbiwgbV9uZXh0SXRlcmF0aW9uRHVyYXRpb247CiAgICAgCiBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGVuc3VyZVByb3BlcnR5TWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggNTZkNzFhYWI0M2Ux
Njc5MTg3MzJjYTE3YWRiYzcwODJiZGQ3ZmFhNS4uZDk5NDZlYTFiOWQ2ZjA2NzFhMDdiMTBmZDU1
ZDIxNjVkNGNjYjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
SW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtMjExLDYgKzIxMSw5IEBAIHZvaWQgSW1wbGljaXRB
bmltYXRpb246OnJlc2V0KFJlbmRlclN0eWxlKiB0bykKICAgICAgICAgCiAgICAgLy8gc2V0IHRo
ZSB0cmFuc2Zvcm0gYW5pbWF0aW9uIGxpc3QKICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9u
TGlzdCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBjaGVja0Zvck1hdGNoaW5nRmls
dGVyRnVuY3Rpb25MaXN0cygpOworI2VuZGlmCiB9CiAKIHZvaWQgSW1wbGljaXRBbmltYXRpb246
OnNldE92ZXJyaWRkZW4oYm9vbCBiKQpAQCAtMjY3LDEwICsyNzAsMzYgQEAgdm9pZCBJbXBsaWNp
dEFuaW1hdGlvbjo6dmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKQogICAgIGlmICh2YWwg
IT0gdG9WYWwgJiYgIXRvVmFsLT5vcGVyYXRpb25zKCkuaXNFbXB0eSgpICYmICF2YWwtPm9wZXJh
dGlvbnNNYXRjaCgqdG9WYWwpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBLZXlmcmFtZXMg
YXJlIHZhbGlkCisgICAgLy8gVHJhbnNmb3JtIGxpc3RzIG1hdGNoLgogICAgIG1fdHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQgPSB0cnVlOwogfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
dm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6Y2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlz
dHMoKQoreworICAgIG1fZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoID0gZmFsc2U7CisgICAgCisg
ICAgaWYgKCFtX2Zyb21TdHlsZSB8fCAhbV90b1N0eWxlKQorICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHZhbCA9ICZtX2Zyb21TdHlsZS0+Zmls
dGVyKCk7CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogdG9WYWwgPSAmbV90b1N0eWxlLT5m
aWx0ZXIoKTsKKworICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisgICAgICAg
IHZhbCA9IHRvVmFsOworCisgICAgaWYgKHZhbC0+b3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAvLyBBbiBlbXRweSBmaWx0ZXIgbGlzdCBtYXRj
aGVzIGFueXRoaW5nLgorICAgIGlmICh2YWwgIT0gdG9WYWwgJiYgIXRvVmFsLT5vcGVyYXRpb25z
KCkuaXNFbXB0eSgpICYmICF2YWwtPm9wZXJhdGlvbnNNYXRjaCgqdG9WYWwpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGaWx0ZXIgbGlzdHMgbWF0Y2guCisgICAgbV9maWx0ZXJGdW5jdGlv
bkxpc3RzTWF0Y2ggPSB0cnVlOworfQorI2VuZGlmCisKIGRvdWJsZSBJbXBsaWNpdEFuaW1hdGlv
bjo6dGltZVRvTmV4dFNlcnZpY2UoKQogewogICAgIGRvdWJsZSB0ID0gQW5pbWF0aW9uQmFzZTo6
dGltZVRvTmV4dFNlcnZpY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oCmluZGV4IGM0MGMwMGE2NDYzYTgyMDNiNTk0YTgwM2ExNDJh
N2VkYzhjOTAwNGEuLmU4YzZkNmJhODUwZGI2OGY5YmZkZmEzZTBiMTZkNWQzZTcxZGM1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24u
aApAQCAtNzYsNiArNzYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzZW5kVHJhbnNpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGRvdWJsZSBlbGFwc2VkVGltZSk7CiAKICAgICB2b2lk
IHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0KCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorICAgIHZvaWQgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKKyNlbmRp
ZgogCiBwcml2YXRlOgogICAgIEltcGxpY2l0QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGlu
dCBhbmltYXRpbmdQcm9wZXJ0eSwgUmVuZGVyT2JqZWN0KiwgQ29tcG9zaXRlQW5pbWF0aW9uKiwg
UmVuZGVyU3R5bGUqIGZyb21TdHlsZSk7ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IDMxNzVhZDY0ODQ2NzdkM2Ez
Zjc5ZmMyOTA2OTkxNmQ3NTgwMGNmZWQuLjkzOTNlNGFjYjRmYzdkMTdjYjZiZGNiMmJlODJjYjIz
ODcyYjhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZy
YW1lQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgS2V5ZnJhbWVBbmltYXRpb246Oktl
eWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBSZW5kZXJPYmplY3Qq
IHIKIAogICAgIC8vIFVwZGF0ZSB0aGUgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFn
IGJhc2VkIG9uIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0
Y2guCiAgICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisgICAgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKKyNl
bmRpZgogfQogCiBLZXlmcmFtZUFuaW1hdGlvbjo6fktleWZyYW1lQW5pbWF0aW9uKCkKQEAgLTQz
NSw2ICs0MzgsNDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6dmFsaWRhdGVUcmFuc2Zvcm1G
dW5jdGlvbkxpc3QoKQogICAgIG1fdHJhbnNmb3JtRnVuY3Rpb25MaXN0VmFsaWQgPSB0cnVlOwog
fQogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6Y2hl
Y2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKQoreworICAgIG1fZmlsdGVyRnVuY3Rp
b25MaXN0c01hdGNoID0gZmFsc2U7CisKKyAgICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgpIDwgMiB8
fCAhbV9rZXlmcmFtZXMuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcikp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVtcHR5IGZpbHRlcnMgbWF0Y2ggYW55dGhpbmcs
IHNvIGZpbmQgdGhlIGZpcnN0IG5vbi1lbXB0eSBlbnRyeSBhcyB0aGUgcmVmZXJlbmNlCisgICAg
c2l6ZV90IG51bUtleWZyYW1lcyA9IG1fa2V5ZnJhbWVzLnNpemUoKTsKKyAgICBzaXplX3QgZmly
c3ROb25FbXB0eUZpbHRlcktleWZyYW1lSW5kZXggPSBudW1LZXlmcmFtZXM7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUtleWZyYW1lczsgKytpKSB7CisgICAgICAgIGNvbnN0IEtl
eWZyYW1lVmFsdWUmIGN1cnJlbnRLZXlmcmFtZSA9IG1fa2V5ZnJhbWVzW2ldOworICAgICAgICBp
ZiAoY3VycmVudEtleWZyYW1lLnN0eWxlKCktPnRyYW5zZm9ybSgpLm9wZXJhdGlvbnMoKS5zaXpl
KCkpIHsKKyAgICAgICAgICAgIGZpcnN0Tm9uRW1wdHlGaWx0ZXJLZXlmcmFtZUluZGV4ID0gaTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmaXJz
dE5vbkVtcHR5RmlsdGVyS2V5ZnJhbWVJbmRleCA9PSBudW1LZXlmcmFtZXMpCisgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogZmlyc3RWYWwgPSAm
bV9rZXlmcmFtZXNbZmlyc3ROb25FbXB0eUZpbHRlcktleWZyYW1lSW5kZXhdLnN0eWxlKCktPmZp
bHRlcigpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdE5vbkVtcHR5RmlsdGVyS2V5
ZnJhbWVJbmRleCArIDE7IGkgPCBudW1LZXlmcmFtZXM7ICsraSkgeworICAgICAgICBjb25zdCBL
ZXlmcmFtZVZhbHVlJiBjdXJyZW50S2V5ZnJhbWUgPSBtX2tleWZyYW1lc1tpXTsKKyAgICAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyogdmFsID0gJmN1cnJlbnRLZXlmcmFtZS5zdHlsZSgpLT5m
aWx0ZXIoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFuIGVtdHB5IGZpbHRlciBsaXN0IG1hdGNo
ZXMgYW55dGhpbmcuCisgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZmlyc3RWYWwtPm9w
ZXJhdGlvbnNNYXRjaCgqdmFsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2ggPSB0cnVlOworfQorI2VuZGlmCisKIGRvdWJs
ZSBLZXlmcmFtZUFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2UoKQogewogICAgIGRvdWJsZSB0
ID0gQW5pbWF0aW9uQmFzZTo6dGltZVRvTmV4dFNlcnZpY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCmluZGV4IDUwOTliNTAzNDY5
Y2RkMzQ2MWJmMjM0ZTY2NTcyY2U3NzE0OTRjNWQuLjZlNjRjYzJkNDFjOTEwMDVmNTZiMWUwZDFk
NzEwNTMyNWRlMGY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uaApAQCAtNzcsNiArNzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIGFmZmVjdHNQcm9wZXJ0eShpbnQpIGNvbnN0OwogCiAgICAgdm9pZCB2YWxpZGF0
ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2
b2lkIGNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCk7CisjZW5kaWYKIAogcHJp
dmF0ZToKICAgICBLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
UmVuZGVyT2JqZWN0KiwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHls
ZSogdW5hbmltYXRlZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbHRlck9wZXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1ZmMwNTViYjRhYjU2NDhhNmQ5
ZGU3YWEyM2RlZDAyNjEzZGU1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2lu
Y2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVz
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK3sK
KyAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCisgICAgICAgIHJldHVy
biB0aGlzOworICAgIAorICAgIGlmIChibGVuZFRvUGFzc3Rocm91Z2gpCisgICAgICAgIHJldHVy
biBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQo
bV9hbW91bnQsIHBhc3N0aHJvdWdoQW1vdW50KCksIHByb2dyZXNzKSwgbV90eXBlKTsKKyAgICAg
ICAgCisgICAgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZyb20p
OworICAgIGRvdWJsZSBmcm9tQW1vdW50ID0gZnJvbU9wID8gZnJvbU9wLT5hbW91bnQoKSA6IHBh
c3N0aHJvdWdoQW1vdW50KCk7CisgICAgcmV0dXJuIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChmcm9tQW1vdW50LCBtX2Ftb3VudCwgcHJvZ3Jl
c3MpLCBtX3R5cGUpOworfQorCitkb3VibGUgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bjo6cGFzc3Rocm91Z2hBbW91bnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBHUkFZU0NBTEU6CisgICAgY2FzZSBTRVBJQToKKyAgICBjYXNlIEhVRV9ST1RBVEU6
CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgU0FUVVJBVEU6CisgICAgICAgIHJldHVybiAx
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCit7Cisg
ICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQorICAgICAgICByZXR1cm4g
dGhpczsKKyAgICAKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4g
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKFdlYkNvcmU6OmJs
ZW5kKG1fYW1vdW50LCBwYXNzdGhyb3VnaEFtb3VudCgpLCBwcm9ncmVzcyksIG1fdHlwZSk7Cisg
ICAgICAgIAorICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24q
IGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24qPihmcm9tKTsKKyAgICBkb3VibGUgZnJvbUFtb3VudCA9IGZyb21PcCA/IGZyb21P
cC0+YW1vdW50KCkgOiBwYXNzdGhyb3VnaEFtb3VudCgpOworICAgIHJldHVybiBCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoZnJvbUFtb3VudCArIChtX2Ftb3Vu
dCAtIGZyb21BbW91bnQpICogcHJvZ3Jlc3MsIG1fdHlwZSk7Cit9CisKK2RvdWJsZSBCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIE9QQUNJVFk6CisgICAgICAgIHJl
dHVybiAxOworICAgIGNhc2UgSU5WRVJUOgorICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK3sKKyAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlw
ZSgqdGhpcykpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAorICAgIGlmIChibGVuZFRvUGFz
c3Rocm91Z2gpCisgICAgICAgIHJldHVybiBHYW1tYUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKFdl
YkNvcmU6OmJsZW5kKG1fYW1wbGl0dWRlLCAxLjAsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIFdl
YkNvcmU6OmJsZW5kKG1fZXhwb25lbnQsIDEuMCwgcHJvZ3Jlc3MpLCBXZWJDb3JlOjpibGVuZCht
X29mZnNldCwgMC4wLCBwcm9ncmVzcyksIG1fdHlwZSk7CisgICAgICAgIAorICAgIGNvbnN0IEdh
bW1hRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxjb25zdCBHYW1tYUZpbHRl
ck9wZXJhdGlvbio+KGZyb20pOworICAgIGRvdWJsZSBmcm9tQW1wbGl0dWRlID0gZnJvbU9wID8g
ZnJvbU9wLT5hbXBsaXR1ZGUoKSA6IDE7CisgICAgZG91YmxlIGZyb21FeHBvbmVudCA9IGZyb21P
cCA/IGZyb21PcC0+ZXhwb25lbnQoKSA6IDE7CisgICAgZG91YmxlIGZyb21PZmZzZXQgPSBmcm9t
T3AgPyBmcm9tT3AtPm9mZnNldCgpIDogMDsKKyAgICByZXR1cm4gR2FtbWFGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShXZWJDb3JlOjpibGVuZChtX2FtcGxpdHVkZSwgZnJvbUFtcGxpdHVkZSwgcHJv
Z3Jlc3MpLCBXZWJDb3JlOjpibGVuZChtX2V4cG9uZW50LCBmcm9tRXhwb25lbnQsIHByb2dyZXNz
KSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9vZmZzZXQsIGZyb21PZmZzZXQsIHByb2dyZXNz
KSwgbV90eXBlKTsKK30KKworUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK3sKKyAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCisgICAgICAgIHJldHVybiB0aGlzOworICAgIAorICAgIGlmIChi
bGVuZFRvUGFzc3Rocm91Z2gpCisgICAgICAgIHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUoTGVuZ3RoKG1fc3RkRGV2aWF0aW9uWC50eXBlKCkpLmJsZW5kKG1fc3RkRGV2aWF0aW9u
WCwgcHJvZ3Jlc3MpLCAKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKG1fc3RkRGV2aWF0aW9u
WS50eXBlKCkpLmJsZW5kKG1fc3RkRGV2aWF0aW9uWSwgcHJvZ3Jlc3MpLCBtX3R5cGUpOworCisg
ICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgIExlbmd0aCBmcm9tWCA9IGZyb21PcCA/
IGZyb21PcC0+bV9zdGREZXZpYXRpb25YIDogTGVuZ3RoKG1fc3RkRGV2aWF0aW9uWC50eXBlKCkp
OworICAgIExlbmd0aCBmcm9tWSA9IGZyb21PcCA/IGZyb21PcC0+bV9zdGREZXZpYXRpb25ZIDog
TGVuZ3RoKG1fc3RkRGV2aWF0aW9uWS50eXBlKCkpOworICAgIHJldHVybiBCbHVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUobV9zdGREZXZpYXRpb25YLmJsZW5kKGZyb21YLCBwcm9ncmVzcyksIG1f
c3RkRGV2aWF0aW9uWS5ibGVuZChmcm9tWSwgcHJvZ3Jlc3MpLCBtX3R5cGUpOworfQorCitQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQoreworICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQor
ICAgICAgICByZXR1cm4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKAorICAgICAg
ICAgICAgV2ViQ29yZTo6YmxlbmQobV94LCAwLCBwcm9ncmVzcyksCisgICAgICAgICAgICBXZWJD
b3JlOjpibGVuZChtX3ksIDAsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5k
KG1fc3RkRGV2aWF0aW9uLCAwLCBwcm9ncmVzcyksCisgICAgICAgICAgICBXZWJDb3JlOjpibGVu
ZChtX2NvbG9yLCBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpLCBwcm9ncmVzcyksCisgICAgICAg
ICAgICBtX3R5cGUpOworCisgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZnJv
bU9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZyb20p
OworICAgIGludCBmcm9tWCA9IGZyb21PcCA/IGZyb21PcC0+eCgpIDogMDsKKyAgICBpbnQgZnJv
bVkgPSBmcm9tT3AgPyBmcm9tT3AtPnkoKSA6IDA7CisgICAgaW50IGZyb21TdGREZXZpYXRpb24g
PSBmcm9tT3AgPyBmcm9tT3AtPnN0ZERldmlhdGlvbigpIDogMDsKKyAgICBDb2xvciBmcm9tQ29s
b3IgPSBmcm9tT3AgPyBmcm9tT3AtPmNvbG9yKCkgOiBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OworICAgIAorICAgIHJldHVybiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoCisg
ICAgICAgIFdlYkNvcmU6OmJsZW5kKG1feCwgZnJvbVgsIHByb2dyZXNzKSwKKyAgICAgICAgV2Vi
Q29yZTo6YmxlbmQobV95LCBmcm9tWSwgcHJvZ3Jlc3MpLAorICAgICAgICBXZWJDb3JlOjpibGVu
ZChtX3N0ZERldmlhdGlvbiwgZnJvbVN0ZERldmlhdGlvbiwgcHJvZ3Jlc3MpLAorICAgICAgICBX
ZWJDb3JlOjpibGVuZChtX2NvbG9yLCBmcm9tQ29sb3IsIHByb2dyZXNzKSwgbV90eXBlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5o
CmluZGV4IDgxZDljMGM1YmE5MmMwNTc3MmMxNzE0YTU0NWQ5OTg3MTEzZDdkZjQuLmVhYWUzODZm
NzIzMmU2M2QyNzQ0MDk0YmMwNDk4OTc0OTU2ZmUxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICAgICAgQ1VTVE9NLAogI2VuZGlmCisg
ICAgICAgIFBBU1NUSFJPVUdILAogICAgICAgICBOT05FCiAgICAgfTsKIApAQCAtNjQsNiArNjUs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
Lypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gq
LyA9IGZhbHNlKSB7IHJldHVybiAwOyB9CisKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0
T3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1NhbWVUeXBlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5n
ZXRPcGVyYXRpb25UeXBlKCkgPT0gbV90eXBlOyB9CiAKQEAgLTc2LDkgKzc5LDI1IEBAIHByb3Rl
Y3RlZDoKICAgICBPcGVyYXRpb25UeXBlIG1fdHlwZTsKIH07CiAKLS8vIEVhY2ggb2YgdGhlIGlu
ZGl2aWR1YWwgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgaGVyZS4gT25jZSB0aGV5IGFjdHVhbGx5
Ci0vLyBoYXZlIGNvZGUgdG8gYXBwbHkgdGhlaXIgZWZmZWN0IHRoZXknbGwgbW92ZSB0byBzZXBh
cmF0ZSBmaWxlcy4KLS8vIEF0IHRoZSBtb21lbnQgd2UncmUganVzdCBzdG9yaW5nIHRoZSBkYXRh
IGZvciByb3VuZHRyaXBwaW5nLgorY2xhc3MgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7CisgICAgfQorCitw
cml2YXRlOgorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0
aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUobyk7CisgICAg
fQorCisgICAgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKQorICAgICAgICA6IEZpbHRlck9w
ZXJhdGlvbihQQVNTVEhST1VHSCkKKyAgICB7CisgICAgfQorfTsKIAogY2xhc3MgUmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CkBAIC0x
MTAsNyArMTI5LDYgQEAgcHJpdmF0ZToKIAogLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUg
YW5kIEhVRV9ST1RBVEUgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZm
ZWN0LgogLy8gRm9yIEhVRV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQg
aW4gbV9hbW91bnQuCi0KIGNsYXNzIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQpAQCAtMTIwLDggKzEzOCw5IEBAIHB1YmxpYzoKIAogICAgIGRvdWJs
ZSBhbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQogCi1wcml2YXRlOgorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykp
CkBAIC0xMjksNyArMTQ4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQmFzaWNDb2xvck1h
dHJpeEZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm8pOwogICAgICAgICByZXR1cm4gbV9hbW91bnQgPT0g
b3RoZXItPm1fYW1vdW50OwogICAgIH0KLQorICAgIAorICAgIGRvdWJsZSBwYXNzdGhyb3VnaEFt
b3VudCgpIGNvbnN0OworICAgIAogICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24o
ZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IEZpbHRlck9wZXJh
dGlvbih0eXBlKQogICAgICAgICAsIG1fYW1vdW50KGFtb3VudCkKQEAgLTE0MCw3ICsxNjEsNiBA
QCBwcml2YXRlOgogfTsKIAogLy8gSU5WRVJUIGFuZCBPUEFDSVRZIGFyZSB2YXJpYXRpb25zIG9u
IGEgYmFzaWMgY29tcG9uZW50IHRyYW5zZmVyIGVmZmVjdC4KLQogY2xhc3MgQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC0x
NTAsOCArMTcwLDkgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fYW1vdW50OyB9CiAKLXByaXZhdGU6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCitwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKQEAgLTE2MCw2ICsxODEsOCBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OwogICAg
IH0KIAorICAgIGRvdWJsZSBwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0OworCiAgICAgQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBPcGVyYXRpb25U
eXBlIHR5cGUpCiAgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCiAgICAgICAgICwgbV9h
bW91bnQoYW1vdW50KQpAQCAtMTgwLDggKzIwMyw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZXhw
b25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CiAgICAgZG91YmxlIG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAKLXByaXZhdGU6CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCitw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlv
biYgbykgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKQEAgLTIxMyw4
ICsyMzcsOSBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJl
dHVybiBtX3N0ZERldmlhdGlvblg7IH0KICAgICBMZW5ndGggc3RkRGV2aWF0aW9uWSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQogCi1wcml2YXRlOgorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAor
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRp
b24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCkBAIC0yMzQs
NiArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBMZW5ndGggbV9zdGREZXZpYXRpb25ZOwogfTsKIAor
Ly8gRklYTUU6IHNoYXJwZW4gd2lsbCBiZSByZW1vdmVkLgogY2xhc3MgU2hhcnBlbkZpbHRlck9w
ZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBM
ZW5ndGggcmFkaXVzLCBkb3VibGUgdGhyZXNob2xkLCBPcGVyYXRpb25UeXBlIHR5cGUpCkBAIC0y
NDYsNyArMjcyLDYgQEAgcHVibGljOgogICAgIGRvdWJsZSB0aHJlc2hvbGQoKSBjb25zdCB7IHJl
dHVybiBtX3RocmVzaG9sZDsgfQogCiBwcml2YXRlOgotCiAgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFpc1NhbWVUeXBlKG8pKQpAQCAtMjgwLDYgKzMwNSw4IEBAIHB1YmxpYzoKICAgICBpbnQgc3Rk
RGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KICAgICBDb2xvciBj
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKwogcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYg
bykgY29uc3QKQEAgLTI5OSw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICBpbnQgbV94OworICAgIGludCBtX3g7IC8vIEZJWE1FOiB4IGFuZCB5IHNob3VsZCBiZSBMZW5n
dGhzPwogICAgIGludCBtX3k7CiAgICAgaW50IG1fc3RkRGV2aWF0aW9uOwogICAgIENvbG9yIG1f
Y29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVy
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9ucy5jcHAKaW5kZXggNzI3ODUyYmJmOTBkN2U3ZTA4NmEyNWY2NDRmZGNjMDgxNDgwN2Nh
NC4uZmUxOTAzODZiNjZjNDFlNTQzMWFjNDgxYTllMWNiZDgwNjUxYTM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAt
NDgsNiArNDgsMjEgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG8pIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRmls
dGVyT3BlcmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90
aGVyKSBjb25zdAoreworICAgIHNpemVfdCBudW1PcGVyYXRpb25zID0gb3BlcmF0aW9ucygpLnNp
emUoKTsKKyAgICAvLyBJZiB0aGUgc2l6ZXMgb2YgdGhlIGZ1bmN0aW9uIGxpc3RzIGRvbid0IG1h
dGNoLCB0aGUgbGlzdHMgZG9uJ3QgbWF0Y2gKKyAgICBpZiAobnVtT3BlcmF0aW9ucyAhPSBvdGhl
ci5vcGVyYXRpb25zKCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
Ly8gSWYgdGhlIHR5cGVzIG9mIGVhY2ggZnVuY3Rpb24gYXJlIG5vdCB0aGUgc2FtZSwgdGhlIGxp
c3RzIGRvbid0IG1hdGNoCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PcGVyYXRpb25z
OyArK2kpIHsKKyAgICAgICAgaWYgKCFvcGVyYXRpb25zKClbaV0tPmlzU2FtZVR5cGUoKm90aGVy
Lm9wZXJhdGlvbnMoKVtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbHRlck9wZXJhdGlvbnMuaAppbmRleCAyZWJhODI5OTQzODAwYmE3ODNhYmNkODkzMDU5ODIx
ODRiMmFmNGQ0Li5iZjE5M2Y1YjVkNjEwNzRjODg3OGE3OWEwZmUwZGE4YTA2Y2Y2MjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmgK
QEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9vcGVyYXRpb25zLnNpemUoKTsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQo
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkg
PyBtX29wZXJhdGlvbnMuYXQoaW5kZXgpLmdldCgpIDogMDsgfQogCisgICAgYm9vbCBvcGVyYXRp
b25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+IG1fb3BlcmF0aW9uczsKIH07Cg==
</data>
<flag name="review"
          id="119169"
          type_id="1"
          status="+"
          setter="cmarrin"
    />
          </attachment>
      

    </bug>

</bugzilla>