<?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>66126</bug_id>
          
          <creation_ts>2011-08-11 22:25:33 -0700</creation_ts>
          <short_desc>Implement animation and transition properties in CSSStyleApplyProperty.</short_desc>
          <delta_ts>2011-08-25 18:32:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66118</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>macpherson</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450293</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-11 22:25:33 -0700</bug_when>
    <thetext>Implement animation and transition properties in CSSStyleApplyProperty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450298</commentid>
    <comment_count>1</comment_count>
      <attachid>103737</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-11 22:30:26 -0700</bug_when>
    <thetext>Created attachment 103737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450344</commentid>
    <comment_count>2</comment_count>
      <attachid>103737</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-12 00:53:57 -0700</bug_when>
    <thetext>Comment on attachment 103737
Patch

Attachment 103737 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9352481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450358</commentid>
    <comment_count>3</comment_count>
      <attachid>103737</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-12 01:15:08 -0700</bug_when>
    <thetext>Comment on attachment 103737
Patch

Attachment 103737 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9358546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450962</commentid>
    <comment_count>4</comment_count>
      <attachid>103886</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-14 17:37:31 -0700</bug_when>
    <thetext>Created attachment 103886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450963</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-14 17:40:11 -0700</bug_when>
    <thetext>Attachment 103886 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/animation/Animation.cpp:133:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450964</commentid>
    <comment_count>6</comment_count>
      <attachid>103887</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-14 18:10:44 -0700</bug_when>
    <thetext>Created attachment 103887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454456</commentid>
    <comment_count>7</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-21 22:41:56 -0700</bug_when>
    <thetext>One-week ping! Could someone please review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456601</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-24 18:59:12 -0700</bug_when>
    <thetext>I&apos;d like to review this. See my comments in 66118.

I should get to the review later today or tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456602</commentid>
    <comment_count>9</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-08-24 19:01:02 -0700</bug_when>
    <thetext>Thanks Dean. I had actually forgotten about the other bug :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457321</commentid>
    <comment_count>10</comment_count>
      <attachid>103887</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 18:32:33 -0700</bug_when>
    <thetext>Comment on attachment 103887
Patch

Clearing flags on attachment: 103887

Committed r93848: &lt;http://trac.webkit.org/changeset/93848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457322</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 18:32:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103737</attachid>
            <date>2011-08-11 22:30:26 -0700</date>
            <delta_ts>2011-08-14 17:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66126-20110812153023.patch</filename>
            <type>text/plain</type>
            <size>21186</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyOTI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMTEgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
YW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW4gQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYx
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgaXMgZXNzZW50aWFsbHkgYSByZWZhY3RvcmluZyBvZiB0aGUgSEFORExF
X0FOSU1BVElPTiogYW5kIEhBTkRMRV9UUkFOU0lUSU9OKiBtYWNyb3MgaW4gQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAuCisgICAgICAgIFRoZSBvbmx5IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRvIGl0ZXJh
dGUgY29ycmVjdGx5IG92ZXIgdGhlIGxpc3RzIGluc3RlYWQgb2Ygc2V0dGluZyBvbmx5IHRoZSBm
aXJzdCBlbGVtZW50LiBTZWUgYnVnIDY2MTE4IGZvciBkZXRhaWxzIG9uIHRoYXQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgQWRkZWQgbmV3IGNs
YXNzIEFwcGx5UHJvcGVydHlBbmltYXRpb24gdG8gaGFuZGxlIGFuaW1hdGlvbiBhbmQgdHJhbnNp
dGlvbiBwcm9wZXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5QW5pbWF0aW9uOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5QW5pbWF0aW9uOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBbmltYXRpb246OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlBbmltYXRpb246OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlBbmltYXRpb246OnRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjpt
YXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YWNjZXNzQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphbmlt
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5
bGVBcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIFJlbW92ZWQgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIG1hY3JvcyAoY2VsZWJyYXRl
ISkKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgor
ICAgICAgICBSZW1vdmVkIG9sZCBpbXBsZW1lbnRhdGlvbnMgb2YgYW5pbWF0aW9uIGFuZCB0cmFu
c2l0aW9uIHByb3BlcnRpZXMuCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oOgorICAgICAgICBDaGFuZ2VkIHJldHVybiB0eXBlcyBvZiBpbml0aWFsIHZhbHVlcyB0byBt
YXRjaCB0aGUgc2V0dGVycyBhbmQgZ2V0dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorCiAyMDExLTA4LTExICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgcHJvcGVyIGhhbmRsaW5n
IG9mIGV2ZW50cyB3aXRoIGEgcmVsYXRlZCB0YXJnZXQgaW4gcmVnYXJkIHRvIHNoYWRvdyBET00g
Ym91bmRhcmllcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVy
dHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJv
cGVydHkuY3BwCShyZXZpc2lvbiA5MjgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzAsNiArNzcwLDEwMSBAQCBw
cml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQXBwbHlQ
cm9wZXJ0eUFuaW1hdGlvbiA6IHB1YmxpYyBBcHBseVByb3BlcnR5QmFzZSB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBUIChBbmltYXRpb246OipHZXR0ZXJGdW5jdGlvbikoKSBjb25zdDsKKyAgICB0
eXBlZGVmIHZvaWQgKEFuaW1hdGlvbjo6KlNldHRlckZ1bmN0aW9uKShUKTsKKyAgICB0eXBlZGVm
IGJvb2wgKEFuaW1hdGlvbjo6KlRlc3RGdW5jdGlvbikoKSBjb25zdDsKKyAgICB0eXBlZGVmIHZv
aWQgKEFuaW1hdGlvbjo6KkNsZWFyRnVuY3Rpb24pKCk7CisgICAgdHlwZWRlZiBUICgqSW5pdGlh
bEZ1bmN0aW9uKSgpOworICAgIHR5cGVkZWYgdm9pZCAoQ1NTU3R5bGVTZWxlY3Rvcjo6Kk1hcEZ1
bmN0aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopOworICAgIHR5cGVkZWYgQW5pbWF0aW9uTGlz
dCogKFJlbmRlclN0eWxlOjoqQW5pbWF0aW9uR2V0dGVyKSgpOworICAgIHR5cGVkZWYgY29uc3Qg
QW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqSW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyKSgp
IGNvbnN0OworCisgICAgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbihHZXR0ZXJGdW5jdGlvbiBnZXR0
ZXIsIFNldHRlckZ1bmN0aW9uIHNldHRlciwgVGVzdEZ1bmN0aW9uIHRlc3QsIENsZWFyRnVuY3Rp
b24gY2xlYXIsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFsLCBNYXBGdW5jdGlvbiBtYXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25HZXR0ZXIgYW5pbWF0aW9uR2V0dGVyLCBJ
bW11dGFibGVBbmltYXRpb25HZXR0ZXIgaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyKQorICAgICAg
ICA6IG1fZ2V0dGVyKGdldHRlcikKKyAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCisgICAgICAg
ICwgbV90ZXN0KHRlc3QpCisgICAgICAgICwgbV9jbGVhcihjbGVhcikKKyAgICAgICAgLCBtX2lu
aXRpYWwoaW5pdGlhbCkKKyAgICAgICAgLCBtX21hcChtYXApCisgICAgICAgICwgbV9hbmltYXRp
b25HZXR0ZXIoYW5pbWF0aW9uR2V0dGVyKQorICAgICAgICAsIG1faW1tdXRhYmxlQW5pbWF0aW9u
R2V0dGVyKGltbXV0YWJsZUFuaW1hdGlvbkdldHRlcikKKyAgICB7CisgICAgfQorCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nl
c3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9u
TGlzdCogcGFyZW50TGlzdCA9IGFuaW1hdGlvbnMoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkpOwor
ICAgICAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlz
dC0+c2l6ZSgpIDogMDsKKyAgICAgICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiB0ZXN0KHBh
cmVudExpc3QtPmFuaW1hdGlvbihpKSk7ICsraSkgeworICAgICAgICAgICAgaWYgKGxpc3QtPnNp
emUoKSA8PSBpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0
ZSgpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKGxpc3QtPmFuaW1hdGlvbihpKSwgdmFsdWUocGFy
ZW50TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBSZXNldCBh
bnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8K
KyAgICAgICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjbGVh
cihsaXN0LT5hbmltYXRpb24oaSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhcHBseUlu
aXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgY29uc3QKKyAgICB7CisgICAg
ICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHls
ZSgpKTsKKyAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0
aW9uKDApLCBpbml0aWFsKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3Qt
PnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2xlYXIobGlzdC0+YW5pbWF0aW9uKGkpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgQW5pbWF0aW9uTGlz
dCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOworICAgICAgICBz
aXplX3QgY2hpbGRJbmRleCA9IDA7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkg
eworICAgICAgICAgICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBhbmlt
YXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8KKyAgICAgICAgICAg
IGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZh
bmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkp
CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsK
KyAgICAgICAgICAgICAgICBtYXAoc2VsZWN0b3IsIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4
KSwgaS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICArK2NoaWxkSW5kZXg7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobGlzdC0+aXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAg
ICAgICAgIG1hcChzZWxlY3RvciwgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7
CisgICAgICAgICAgICBjaGlsZEluZGV4ID0gMTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKCA7
IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeworICAgICAgICAgICAg
LyogUmVzZXQgYWxsIHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0
eSBzZXQuICovCisgICAgICAgICAgICBjbGVhcihsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRWYWx1ZShBbmltYXRpb24qIGFuaW1h
dGlvbiwgVCB2YWx1ZSkgY29uc3QgeyAoYW5pbWF0aW9uLT4qbV9zZXR0ZXIpKHZhbHVlKTsgfQor
ICAgIFQgdmFsdWUoY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24pIGNvbnN0IHsgcmV0dXJuIChh
bmltYXRpb24tPiptX2dldHRlcikoKTsgfQorICAgIGJvb2wgdGVzdChjb25zdCBBbmltYXRpb24q
IGFuaW1hdGlvbikgY29uc3QgeyByZXR1cm4gKGFuaW1hdGlvbi0+Km1fdGVzdCkoKTsgfQorICAg
IHZvaWQgY2xlYXIoQW5pbWF0aW9uKiBhbmltYXRpb24pIGNvbnN0IHsgKGFuaW1hdGlvbi0+Km1f
Y2xlYXIpKCk7IH0KKyAgICBUIGluaXRpYWwoKSBjb25zdCB7IHJldHVybiAoKm1faW5pdGlhbCko
KTsgfQorICAgIHZvaWQgbWFwKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBBbmltYXRpb24q
IGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdCB7IChzZWxlY3Rvci0+Km1fbWFwKShh
bmltYXRpb24sIHZhbHVlKTsgfQorICAgIEFuaW1hdGlvbkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMo
UmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVybiAoc3R5bGUtPiptX2FuaW1hdGlvbkdl
dHRlcikoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5
bGUqIHN0eWxlKSBjb25zdCB7IHJldHVybiAoc3R5bGUtPiptX2ltbXV0YWJsZUFuaW1hdGlvbkdl
dHRlcikoKTsgfQorCisgICAgR2V0dGVyRnVuY3Rpb24gbV9nZXR0ZXI7CisgICAgU2V0dGVyRnVu
Y3Rpb24gbV9zZXR0ZXI7CisgICAgVGVzdEZ1bmN0aW9uIG1fdGVzdDsKKyAgICBDbGVhckZ1bmN0
aW9uIG1fY2xlYXI7CisgICAgSW5pdGlhbEZ1bmN0aW9uIG1faW5pdGlhbDsKKyAgICBNYXBGdW5j
dGlvbiBtX21hcDsKKyAgICBBbmltYXRpb25HZXR0ZXIgbV9hbmltYXRpb25HZXR0ZXI7CisgICAg
SW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyIG1faW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyOworfTsK
KwogY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OnNo
YXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NTdHlsZUFwcGx5UHJvcGVydHksIGNzc1N0eWxlQXBwbHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7
CkBAIC05NTAsNiArMTA0NSwyMSBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBw
bHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWiwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGZsb2F0PigmUmVuZGVyU3R5
bGU6OnRyYW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWiwg
JlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3JpZ2luWikpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwgbmV3IEFwcGx5UHJvcGVy
dHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWCksIHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblkpLCBwcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5aKSkpOwogCisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRGVsYXksIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZT4oJkFuaW1h
dGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0
LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVs
YXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnMpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIG5ldyBBcHBs
eVByb3BlcnR5QW5pbWF0aW9uPEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uPigmQW5pbWF0
aW9uOjpkaXJlY3Rpb24sICZBbmltYXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNE
aXJlY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uRGlyZWN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGly
ZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5p
bWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkR1cmF0aW9uLCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGU+KCZBbmltYXRp
b246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJh
dGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvbkR1cmF0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRHVyYXRpb24s
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25z
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmls
bE1vZGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPHVuc2lnbmVkPigmQW5pbWF0aW9uOjpm
aWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUsICZBbmltYXRpb246OmlzRmlsbE1vZGVT
ZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25GaWxsTW9kZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkZpbGxNb2RlLCAmUmVu
ZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucykpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50LCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxpbnQ+KCZBbmltYXRpb246Oml0ZXJh
dGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aXNJ
dGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xlYXJJdGVyYXRpb25Db3VudCwgJkFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9u
cywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmV3IEFwcGx5UHJvcGVydHlBbmltYXRpb248
Y29uc3QgU3RyaW5nJj4oJkFuaW1hdGlvbjo6bmFtZSwgJkFuaW1hdGlvbjo6c2V0TmFtZSwgJkFu
aW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpjbGVhck5hbWUsICZBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb25OYW1lLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uTmFtZSwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnMp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5
U3RhdGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEVBbmltUGxheVN0YXRlPigmQW5pbWF0
aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQ
bGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxheVN0YXRlLCAmQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUGxh
eVN0YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5p
bWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uLCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNz
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiA+KCZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uLCAmQW5p
bWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5jdGlvblNl
dCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxl
OjphbmltYXRpb25zKSk7CisKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uRGVsYXksIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZT4oJkFu
aW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5
U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
RGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxl
OjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucykpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgbmV3
IEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlPigmQW5pbWF0aW9uOjpkdXJhdGlvbiwgJkFu
aW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25TZXQsICZBbmltYXRp
b246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJhdGlvbiwg
JkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBuZXcgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxpbnQ+KCZBbmltYXRpb246OnByb3BlcnR5LCAmQW5pbWF0aW9u
OjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAmQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJh
bnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIG5ldyBBcHBs
eVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+ID4oJkFu
aW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAm
QW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZDU1NT
dHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucykpOworCisKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCwgbmV3IEFwcGx5
UHJvcGVydHlBdXRvPHVuc2lnbmVkIHNob3J0PigmUmVuZGVyU3R5bGU6OmNvbHVtbkNvdW50LCAm
UmVuZGVyU3R5bGU6OnNldENvbHVtbkNvdW50LCAmUmVuZGVyU3R5bGU6Omhhc0F1dG9Db2x1bW5D
b3VudCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvQ29sdW1uQ291bnQpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXAsIG5ldyBBcHBseVByb3BlcnR5
QXV0bzxmbG9hdCwgQ29tcHV0ZUxlbmd0aCwgQ1NTVmFsdWVOb3JtYWw+KCZSZW5kZXJTdHlsZTo6
Y29sdW1uR2FwLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkdhcCwgJlJlbmRlclN0eWxlOjpoYXNO
b3JtYWxDb2x1bW5HYXAsICZSZW5kZXJTdHlsZTo6c2V0SGFzTm9ybWFsQ29sdW1uR2FwKSk7CiAg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIG5ldyBB
cHBseVByb3BlcnR5QXV0bzxmbG9hdCwgQ29tcHV0ZUxlbmd0aD4oJlJlbmRlclN0eWxlOjpjb2x1
bW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5XaWR0aCwgJlJlbmRlclN0eWxlOjpoYXNB
dXRvQ29sdW1uV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0SGFzQXV0b0NvbHVtbldpZHRoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5Mjgw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYyLDEwNCArMTYyLDYgQEAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lU
SF9WQUxVRShwcgogaWYgKHByaW1pdGl2ZVZhbHVlKSBcCiAgICAgbV9zdHlsZS0+c2V0IyNQcm9w
KCpwcmltaXRpdmVWYWx1ZSk7CiAKLSNkZWZpbmUgSEFORExFX0FOSU1BVElPTl9JTkhFUklUX0FO
RF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlv
bkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLSAgICBjb25zdCBB
bmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gbV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpOyBc
Ci0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3Qt
PnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3Qt
PmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kpIHsgXAotICAgICAgICBpZiAobGlz
dC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNy
ZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRM
aXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgLyogUmVz
ZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0
LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7
IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygp
OyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5p
bWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb24jI1Byb3AoKSk7IFwKLSAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbigw
KS0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
cHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklU
SUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0
dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygp
OyBcCi1zaXplX3QgY2hpbGRJbmRleCA9IDA7IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkg
eyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24s
IGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8gXAotICAgIGZvciAoQ1NTVmFs
dWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsgXAot
ICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpIFwKLSAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBtYXBBbmltYXRpb24j
I1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCBpLnZhbHVlKCkpOyBcCi0gICAgICAg
ICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNlIHsgXAotICAgIGlmIChsaXN0LT5pc0Vt
cHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0g
ICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWUp
OyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAotZm9yICggOyBjaGlsZEluZGV4IDwgbGlz
dC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcg
YW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+
YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJvcCgpOyBcCi19IFwKLX0KLQotI2RlZmlu
ZSBIQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlm
IChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nl
c3NUcmFuc2l0aW9ucygpOyBcCi0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9
IG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25zKCk7IFwKLSAgICBzaXplX3QgaSA9IDAsIHBhcmVu
dFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAotICAgIGZvciAo
IDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMj
U2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAotICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIGxpc3Qt
PmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgp
KTsgXAotICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5zaXRp
b25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkgPCBs
aXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQ
cm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBs
aXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAotICAgIGlmIChsaXN0LT5pc0Vt
cHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0g
ICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7
ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwKLX0K
LQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkgeyBc
Ci1IQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlm
IChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25MaXN0
KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAotc2l6ZV90IGNoaWxkSW5k
ZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAotICAgIC8qIFdhbGsgZWFj
aCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0
aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2
YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7IFwKLSAgICAgICAgaWYgKGNoaWxkSW5k
ZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9u
OjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlv
bihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsgXAotICAgICAgICArK2NoaWxkSW5kZXg7IFwKLSAg
ICB9IFwKLX0gZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0gICAgICAgIGxp
c3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIG1hcEFuaW1hdGlvbiMjUHJv
cChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsgXAotICAgIGNoaWxkSW5kZXgg
PSAxOyBcCi19IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZElu
ZGV4KSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRl
eCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAotfQotCiAjZGVmaW5lIEhBTkRMRV9JTkhFUklUX0NP
TkQocHJvcElELCBwcm9wLCBQcm9wKSBcCiBpZiAoaWQgPT0gcHJvcElEKSB7IFwKICAgICBtX3N0
eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJvcCgpKTsgXApAQCAtNDg4MCw0OCArNDc4
MiwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAg
IGVsc2UgaWYgKGlzSW5oZXJpdCkKICAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRBbmltYXRp
b25zKG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9BTklN
QVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9B
TklNQVRJT05fVkFMVUUoZGlyZWN0aW9uLCBEaXJlY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uOgotICAgICAg
ICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGR1cmF0aW9uLCBEdXJhdGlvbiwgdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6
Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZmlsbE1vZGUsIEZpbGxNb2RlLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudDoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShpdGVyYXRpb25D
b3VudCwgSXRlcmF0aW9uQ291bnQsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05f
VkFMVUUobmFtZSwgTmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9O
X1ZBTFVFKHBsYXlTdGF0ZSwgUGxheVN0YXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAg
SEFORExFX0FOSU1BVElPTl9WQUxVRSh0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24sIHZh
bHVlKQotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b246CiAgICAgICAgIGlmIChpc0luaXRpYWwpCiAgICAgICAgICAgICBtX3N0eWxlLT5jbGVhclRy
YW5zaXRpb25zKCk7CiAgICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKICAgICAgICAgICAgIG1f
c3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhtX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygpKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVs
YXk6Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKGRlbGF5LCBEZWxheSwgdmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1
cmF0aW9uOgotICAgICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShkdXJhdGlvbiwgRHVyYXRp
b24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgSEFORExFX1RSQU5TSVRJT05fVkFMVUUocHJvcGVy
dHksIFByb3BlcnR5LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lU
SU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbiwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKICAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKICAgICB7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtNTE5Nyw2ICs1MDYzLDE4IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5YOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblk6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRmlsbE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uRGVsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQ291bnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgJKHJldmlzaW9u
IDkyODA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsMTUgKzE2MiwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc05vbmUgICAgICAgICAgICA6IDE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbEFuaW1hdGlvbkRlbGF5KCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBkb3VibGUgaW5p
dGlhbEFuaW1hdGlvbkRlbGF5KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBBbmltYXRpb25E
aXJlY3Rpb24gaW5pdGlhbEFuaW1hdGlvbkRpcmVjdGlvbigpIHsgcmV0dXJuIEFuaW1hdGlvbkRp
cmVjdGlvbk5vcm1hbDsgfQogICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbEFuaW1hdGlvbkR1cmF0
aW9uKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQW5pbWF0aW9u
RmlsbE1vZGUoKSB7IHJldHVybiBBbmltYXRpb25GaWxsTW9kZU5vbmU7IH0KICAgICBzdGF0aWMg
aW50IGluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpIHsgcmV0dXJuIDE7IH0KLSAgICBz
dGF0aWMgU3RyaW5nIGluaXRpYWxBbmltYXRpb25OYW1lKCkgeyByZXR1cm4gU3RyaW5nKCJub25l
Iik7IH0KKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBpbml0aWFsQW5pbWF0aW9uTmFtZSgpIHsg
c3RhdGljIGNvbnN0IFN0cmluZyBpbml0aWFsTmFtZSA9ICJub25lIjsgcmV0dXJuIGluaXRpYWxO
YW1lOyB9CiAgICAgc3RhdGljIEVBbmltUGxheVN0YXRlIGluaXRpYWxBbmltYXRpb25QbGF5U3Rh
dGUoKSB7IHJldHVybiBBbmltUGxheVN0YXRlUGxheWluZzsgfQogICAgIHN0YXRpYyBpbnQgaW5p
dGlhbEFuaW1hdGlvblByb3BlcnR5KCkgeyByZXR1cm4gY0FuaW1hdGVBbGw7IH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KKyAg
ICBzdGF0aWMgY29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3Jl
YXRlKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103886</attachid>
            <date>2011-08-14 17:37:31 -0700</date>
            <delta_ts>2011-08-14 18:10:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66126-20110815103728.patch</filename>
            <type>text/plain</type>
            <size>21681</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMDMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMTEgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
YW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW4gQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYx
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgaXMgZXNzZW50aWFsbHkgYSByZWZhY3RvcmluZyBvZiB0aGUgSEFORExF
X0FOSU1BVElPTiogYW5kIEhBTkRMRV9UUkFOU0lUSU9OKiBtYWNyb3MgaW4gQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAuCisgICAgICAgIFRoZSBvbmx5IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRvIGl0ZXJh
dGUgY29ycmVjdGx5IG92ZXIgdGhlIGxpc3RzIGluc3RlYWQgb2Ygc2V0dGluZyBvbmx5IHRoZSBm
aXJzdCBlbGVtZW50LiBTZWUgYnVnIDY2MTE4IGZvciBkZXRhaWxzIG9uIHRoYXQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgQWRkZWQgbmV3IGNs
YXNzIEFwcGx5UHJvcGVydHlBbmltYXRpb24gdG8gaGFuZGxlIGFuaW1hdGlvbiBhbmQgdHJhbnNp
dGlvbiBwcm9wZXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5QW5pbWF0aW9uOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5QW5pbWF0aW9uOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBbmltYXRpb246OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlBbmltYXRpb246OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlBbmltYXRpb246OnRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjpt
YXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YWNjZXNzQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphbmlt
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5
bGVBcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIFJlbW92ZWQgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIG1hY3JvcyAoY2VsZWJyYXRl
ISkKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgor
ICAgICAgICBSZW1vdmVkIG9sZCBpbXBsZW1lbnRhdGlvbnMgb2YgYW5pbWF0aW9uIGFuZCB0cmFu
c2l0aW9uIHByb3BlcnRpZXMuCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oOgorICAgICAgICBDaGFuZ2VkIHJldHVybiB0eXBlcyBvZiBpbml0aWFsIHZhbHVlcyB0byBt
YXRjaCB0aGUgc2V0dGVycyBhbmQgZ2V0dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorCiAyMDExLTA4LTEzICBBYmhpc2hlayBBcnlh
ICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NzAsNiArNzcwLDEwMSBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbiA6IHB1YmxpYyBBcHBseVBy
b3BlcnR5QmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBUIChBbmltYXRpb246OipHZXR0ZXJG
dW5jdGlvbikoKSBjb25zdDsKKyAgICB0eXBlZGVmIHZvaWQgKEFuaW1hdGlvbjo6KlNldHRlckZ1
bmN0aW9uKShUKTsKKyAgICB0eXBlZGVmIGJvb2wgKEFuaW1hdGlvbjo6KlRlc3RGdW5jdGlvbiko
KSBjb25zdDsKKyAgICB0eXBlZGVmIHZvaWQgKEFuaW1hdGlvbjo6KkNsZWFyRnVuY3Rpb24pKCk7
CisgICAgdHlwZWRlZiBUICgqSW5pdGlhbEZ1bmN0aW9uKSgpOworICAgIHR5cGVkZWYgdm9pZCAo
Q1NTU3R5bGVTZWxlY3Rvcjo6Kk1hcEZ1bmN0aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwor
ICAgIHR5cGVkZWYgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqQW5pbWF0aW9uR2V0dGVy
KSgpOworICAgIHR5cGVkZWYgY29uc3QgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqSW1t
dXRhYmxlQW5pbWF0aW9uR2V0dGVyKSgpIGNvbnN0OworCisgICAgQXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbihHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIFNldHRlckZ1bmN0aW9uIHNldHRlciwgVGVzdEZ1
bmN0aW9uIHRlc3QsIENsZWFyRnVuY3Rpb24gY2xlYXIsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFs
LCBNYXBGdW5jdGlvbiBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25H
ZXR0ZXIgYW5pbWF0aW9uR2V0dGVyLCBJbW11dGFibGVBbmltYXRpb25HZXR0ZXIgaW1tdXRhYmxl
QW5pbWF0aW9uR2V0dGVyKQorICAgICAgICA6IG1fZ2V0dGVyKGdldHRlcikKKyAgICAgICAgLCBt
X3NldHRlcihzZXR0ZXIpCisgICAgICAgICwgbV90ZXN0KHRlc3QpCisgICAgICAgICwgbV9jbGVh
cihjbGVhcikKKyAgICAgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAgICAgLCBtX21hcCht
YXApCisgICAgICAgICwgbV9hbmltYXRpb25HZXR0ZXIoYW5pbWF0aW9uR2V0dGVyKQorICAgICAg
ICAsIG1faW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyKGltbXV0YWJsZUFuaW1hdGlvbkdldHRlcikK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIEFu
aW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsK
KyAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IGFuaW1hdGlvbnMoc2Vs
ZWN0b3ItPnBhcmVudFN0eWxlKCkpOworICAgICAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUg
PSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsKKyAgICAgICAgZm9yICggOyBp
IDwgcGFyZW50U2l6ZSAmJiB0ZXN0KHBhcmVudExpc3QtPmFuaW1hdGlvbihpKSk7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKQorICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKGxpc3Qt
PmFuaW1hdGlvbihpKSwgdmFsdWUocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAg
IH0KKworICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhh
dmUgdGhlIHByb3BlcnR5IHNldC4gKi8KKyAgICAgICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBjbGVhcihsaXN0LT5hbmltYXRpb24oaSkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NB
bmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKKyAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAg
ICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0aW9uKDApLCBpbml0aWFsKCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2xlYXIo
bGlzdC0+YW5pbWF0aW9uKGkpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdAorICAg
IHsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0
b3ItPnN0eWxlKCkpOworICAgICAgICBzaXplX3QgY2hpbGRJbmRleCA9IDA7CisgICAgICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgLyogV2FsayBlYWNoIHZhbHVl
IGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFz
IG5lZWRlZC4gKi8KKyAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZh
bHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hp
bGRJbmRleCA8PSBsaXN0LT5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICBtYXAoc2VsZWN0b3IsIGxp
c3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAr
K2NoaWxkSW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAobGlzdC0+aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmlt
YXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIG1hcChzZWxlY3RvciwgbGlzdC0+YW5pbWF0
aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7CisgICAgICAgICAgICBjaGlsZEluZGV4ID0gMTsKKyAg
ICAgICAgfQorICAgICAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hp
bGRJbmRleCkgeworICAgICAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBhbmltYXRpb25z
IHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCisgICAgICAgICAgICBjbGVhcihsaXN0
LT5hbmltYXRpb24oY2hpbGRJbmRleCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBz
ZXRWYWx1ZShBbmltYXRpb24qIGFuaW1hdGlvbiwgVCB2YWx1ZSkgY29uc3QgeyAoYW5pbWF0aW9u
LT4qbV9zZXR0ZXIpKHZhbHVlKTsgfQorICAgIFQgdmFsdWUoY29uc3QgQW5pbWF0aW9uKiBhbmlt
YXRpb24pIGNvbnN0IHsgcmV0dXJuIChhbmltYXRpb24tPiptX2dldHRlcikoKTsgfQorICAgIGJv
b2wgdGVzdChjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbikgY29uc3QgeyByZXR1cm4gKGFuaW1h
dGlvbi0+Km1fdGVzdCkoKTsgfQorICAgIHZvaWQgY2xlYXIoQW5pbWF0aW9uKiBhbmltYXRpb24p
IGNvbnN0IHsgKGFuaW1hdGlvbi0+Km1fY2xlYXIpKCk7IH0KKyAgICBUIGluaXRpYWwoKSBjb25z
dCB7IHJldHVybiAoKm1faW5pdGlhbCkoKTsgfQorICAgIHZvaWQgbWFwKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSBjb25z
dCB7IChzZWxlY3Rvci0+Km1fbWFwKShhbmltYXRpb24sIHZhbHVlKTsgfQorICAgIEFuaW1hdGlv
bkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVy
biAoc3R5bGUtPiptX2FuaW1hdGlvbkdldHRlcikoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxp
c3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVybiAoc3R5bGUt
PiptX2ltbXV0YWJsZUFuaW1hdGlvbkdldHRlcikoKTsgfQorCisgICAgR2V0dGVyRnVuY3Rpb24g
bV9nZXR0ZXI7CisgICAgU2V0dGVyRnVuY3Rpb24gbV9zZXR0ZXI7CisgICAgVGVzdEZ1bmN0aW9u
IG1fdGVzdDsKKyAgICBDbGVhckZ1bmN0aW9uIG1fY2xlYXI7CisgICAgSW5pdGlhbEZ1bmN0aW9u
IG1faW5pdGlhbDsKKyAgICBNYXBGdW5jdGlvbiBtX21hcDsKKyAgICBBbmltYXRpb25HZXR0ZXIg
bV9hbmltYXRpb25HZXR0ZXI7CisgICAgSW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyIG1faW1tdXRh
YmxlQW5pbWF0aW9uR2V0dGVyOworfTsKKwogY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBD
U1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NTdHlsZUFwcGx5UHJvcGVydHksIGNzc1N0eWxlQXBw
bHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7CkBAIC05NTAsNiArMTA0NSwyMSBAQCBDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRl
TGVuZ3RoPGZsb2F0PigmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHls
ZTo6c2V0VHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3Jp
Z2luWikpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbiwgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCksIHByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCBwcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKSkpOwogCisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIG5ldyBBcHBseVByb3BlcnR5
QW5pbWF0aW9uPGRvdWJsZT4oJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5
LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRp
b25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFu
aW1hdGlvbnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25EaXJlY3Rpb24sIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEFuaW1hdGlvbjo6QW5p
bWF0aW9uRGlyZWN0aW9uPigmQW5pbWF0aW9uOjpkaXJlY3Rpb24sICZBbmltYXRpb246OnNldERp
cmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyRGly
ZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBuZXcgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxkb3VibGU+KCZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlv
biwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PHVuc2lnbmVkPigmQW5pbWF0aW9uOjpmaWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUs
ICZBbmltYXRpb246OmlzRmlsbE1vZGVTZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1h
cEFuaW1hdGlvbkZpbGxNb2RlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5k
ZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjxpbnQ+KCZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRp
b25Db3VudCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmV3
IEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgU3RyaW5nJj4oJkFuaW1hdGlvbjo6bmFtZSwg
JkFuaW1hdGlvbjo6c2V0TmFtZSwgJkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpj
bGVhck5hbWUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lLCAmQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwQW5pbWF0aW9uTmFtZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAm
UmVuZGVyU3R5bGU6OmFuaW1hdGlvbnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PEVBbmltUGxheVN0YXRlPigmQW5pbWF0aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBs
YXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQbGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxh
eVN0YXRlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUGxheVN0YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBuZXcgQXBwbHlQcm9w
ZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiA+KCZBbmltYXRp
b246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1h
dGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlv
biwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNz
QW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7CisKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIG5ldyBBcHBseVByb3Bl
cnR5QW5pbWF0aW9uPGRvdWJsZT4oJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERl
bGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmlt
YXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxl
Ojp0cmFuc2l0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiwgbmV3IEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlPigm
QW5pbWF0aW9uOjpkdXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246
OmlzRHVyYXRpb25TZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb25EdXJhdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1
cmF0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRy
YW5zaXRpb25zKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5LCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxpbnQ+KCZBbmltYXRp
b246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9w
ZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvblByb3BlcnR5LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUHJvcGVydHks
ICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlv
bnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQ
dHI8VGltaW5nRnVuY3Rpb24+ID4oJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRp
b246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAm
QW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdG
dW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0
cmFuc2l0aW9ucykpOworCisKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5Db3VudCwgbmV3IEFwcGx5UHJvcGVydHlBdXRvPHVuc2lnbmVkIHNob3J0PigmUmVu
ZGVyU3R5bGU6OmNvbHVtbkNvdW50LCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkNvdW50LCAmUmVu
ZGVyU3R5bGU6Omhhc0F1dG9Db2x1bW5Db3VudCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvQ29s
dW1uQ291bnQpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5HYXAsIG5ldyBBcHBseVByb3BlcnR5QXV0bzxmbG9hdCwgQ29tcHV0ZUxlbmd0aCwgQ1NTVmFs
dWVOb3JtYWw+KCZSZW5kZXJTdHlsZTo6Y29sdW1uR2FwLCAmUmVuZGVyU3R5bGU6OnNldENvbHVt
bkdhcCwgJlJlbmRlclN0eWxlOjpoYXNOb3JtYWxDb2x1bW5HYXAsICZSZW5kZXJTdHlsZTo6c2V0
SGFzTm9ybWFsQ29sdW1uR2FwKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5QXV0bzxmbG9hdCwgQ29tcHV0ZUxl
bmd0aD4oJlJlbmRlclN0eWxlOjpjb2x1bW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5X
aWR0aCwgJlJlbmRlclN0eWxlOjpoYXNBdXRvQ29sdW1uV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
SGFzQXV0b0NvbHVtbldpZHRoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDEwNCArMTYyLDYgQEAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwcgogaWYgKHByaW1pdGl2ZVZhbHVlKSBc
CiAgICAgbV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7CiAKLSNkZWZpbmUgSEFO
RExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0lu
aGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmlt
YXRpb25zKCk7IFwKLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gbV9wYXJl
bnRTdHlsZS0+YW5pbWF0aW9ucygpOyBcCi0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0g
cGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBw
YXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyAr
K2kpIHsgXAotICAgICAgICBpZiAobGlzdC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRp
b24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAg
ICB9IFwKLSAgICBcCi0gICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5v
dCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXpl
KCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwK
LX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9z
dHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAot
ICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBsaXN0LT5h
bmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb24jI1Byb3Ao
KSk7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0g
ICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0jZGVmaW5l
IEhBTkRMRV9BTklNQVRJT05fVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX0FO
SU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQg
fHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9z
dHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi1zaXplX3QgY2hpbGRJbmRleCA9IDA7IFwKLWlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBw
dXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRl
ZC4gKi8gXAotICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01v
cmUoKTsgaS5hZHZhbmNlKCkpIHsgXAotICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5z
aXplKCkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAotICAgICAgICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgp
LCBpLnZhbHVlKCkpOyBcCi0gICAgICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNl
IHsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1h
dGlvbihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAot
Zm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAg
IC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVy
dHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJv
cCgpOyBcCi19IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9J
TklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxp
c3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25zKCk7IFwK
LSAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+
c2l6ZSgpIDogMDsgXAotICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+
YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0
LT5zaXplKCkgPD0gaSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3Jl
YXRlKCkpOyBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExp
c3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAotICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNl
dCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0
LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7
IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMo
KTsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3Ao
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24o
MCktPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9WQUxV
RShwcm9wLCBQcm9wLCB2YWx1ZSkgeyBcCi1IQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9J
TklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAg
cmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlv
bnMoKTsgXAotc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0
KCkpIHsgXAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0
aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBmb3IgKENT
U1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7
IFwKLSAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0gICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbWFwQW5pbWF0
aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsgXAotICAg
ICAgICArK2NoaWxkSW5kZXg7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+
aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAotICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZh
bHVlKTsgXAotICAgIGNoaWxkSW5kZXggPSAxOyBcCi19IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8
IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWlu
aW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBs
aXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAotfQotCiAj
ZGVmaW5lIEhBTkRMRV9JTkhFUklUX0NPTkQocHJvcElELCBwcm9wLCBQcm9wKSBcCiBpZiAoaWQg
PT0gcHJvcElEKSB7IFwKICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJv
cCgpKTsgXApAQCAtNDg4MCw0OCArNDc4MiwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50CiAgICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKICAgICAgICAgICAg
IG1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7
CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVs
YXk6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJl
Y3Rpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGlyZWN0aW9uLCBEaXJlY3Rp
b24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGR1cmF0aW9u
LCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
ZmlsbE1vZGUsIEZpbGxNb2RlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICAgICAgSEFORExFX0FO
SU1BVElPTl9WQUxVRShpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQsIHZhbHVlKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6Ci0g
ICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUobmFtZSwgTmFtZSwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgot
ICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBsYXlTdGF0ZSwgUGxheVN0YXRlLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRSh0aW1pbmdGdW5j
dGlvbiwgVGltaW5nRnVuY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CiAgICAgICAgIGlmIChpc0luaXRpYWwpCiAgICAg
ICAgICAgICBtX3N0eWxlLT5jbGVhclRyYW5zaXRpb25zKCk7CiAgICAgICAgIGVsc2UgaWYgKGlz
SW5oZXJpdCkKICAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhtX3BhcmVu
dFN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZB
TFVFKGRlbGF5LCBEZWxheSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfVFJBTlNJVElP
Tl9WQUxVRShkdXJhdGlvbiwgRHVyYXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgSEFORExF
X1RSQU5TSVRJT05fVkFMVUUocHJvcGVydHksIFByb3BlcnR5LCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246
Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdG
dW5jdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50czoKICAgICB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtNTE5
Nyw2ICs1MDYzLDE4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5
U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uVGltaW5nRnVuY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkdhcDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNCAr
MTMwLDkgQEAgYm9vbCBBbmltYXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbgogICAgIHJl
dHVybiAhbWF0Y2hQbGF5U3RhdGVzIHx8IChtX3BsYXlTdGF0ZSA9PSBvLT5tX3BsYXlTdGF0ZSAm
JiBtX3BsYXlTdGF0ZVNldCA9PSBvLT5tX3BsYXlTdGF0ZVNldCk7CiB9CiAKK2NvbnN0IFN0cmlu
ZyYgQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSgpIHsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgaW5pdGlhbFZhbHVlLCAoIm5vbmUiKSk7CisgICAgcmV0dXJuIGluaXRp
YWxWYWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAkocmV2aXNpb24gOTMwMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MiwxNSArMTYyLDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTm9uZSAg
ICAgICAgICAgIDogMTsKIAogcHVibGljOgotICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQW5pbWF0
aW9uRGVsYXkoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsQW5pbWF0
aW9uRGVsYXkoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEFuaW1hdGlvbkRpcmVjdGlvbiBp
bml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uKCkgeyByZXR1cm4gQW5pbWF0aW9uRGlyZWN0aW9uTm9y
bWFsOyB9CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsQW5pbWF0aW9uRHVyYXRpb24oKSB7IHJl
dHVybiAwOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxBbmltYXRpb25GaWxsTW9kZSgp
IHsgcmV0dXJuIEFuaW1hdGlvbkZpbGxNb2RlTm9uZTsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlh
bEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBTdHJp
bmcgaW5pdGlhbEFuaW1hdGlvbk5hbWUoKSB7IHJldHVybiBTdHJpbmcoIm5vbmUiKTsgfQorICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGluaXRpYWxBbmltYXRpb25OYW1lKCk7CiAgICAgc3RhdGlj
IEVBbmltUGxheVN0YXRlIGluaXRpYWxBbmltYXRpb25QbGF5U3RhdGUoKSB7IHJldHVybiBBbmlt
UGxheVN0YXRlUGxheWluZzsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbEFuaW1hdGlvblByb3Bl
cnR5KCkgeyByZXR1cm4gY0FuaW1hdGVBbGw7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaW1p
bmdGdW5jdGlvbj4gaW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KKyAgICBzdGF0aWMgY29uc3QgUGFz
c1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkg
eyByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103887</attachid>
            <date>2011-08-14 18:10:44 -0700</date>
            <delta_ts>2011-08-25 18:32:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66126-20110815111041.patch</filename>
            <type>text/plain</type>
            <size>21683</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMDMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMTEgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
YW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW4gQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYx
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgaXMgZXNzZW50aWFsbHkgYSByZWZhY3RvcmluZyBvZiB0aGUgSEFORExF
X0FOSU1BVElPTiogYW5kIEhBTkRMRV9UUkFOU0lUSU9OKiBtYWNyb3MgaW4gQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAuCisgICAgICAgIFRoZSBvbmx5IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRvIGl0ZXJh
dGUgY29ycmVjdGx5IG92ZXIgdGhlIGxpc3RzIGluc3RlYWQgb2Ygc2V0dGluZyBvbmx5IHRoZSBm
aXJzdCBlbGVtZW50LiBTZWUgYnVnIDY2MTE4IGZvciBkZXRhaWxzIG9uIHRoYXQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgQWRkZWQgbmV3IGNs
YXNzIEFwcGx5UHJvcGVydHlBbmltYXRpb24gdG8gaGFuZGxlIGFuaW1hdGlvbiBhbmQgdHJhbnNp
dGlvbiBwcm9wZXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5QW5pbWF0aW9uOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5QW5pbWF0aW9uOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBbmltYXRpb246OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlBbmltYXRpb246OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlBbmltYXRpb246OnRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjpt
YXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YWNjZXNzQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphbmlt
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5
bGVBcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIFJlbW92ZWQgYW5pbWF0aW9uIGFuZCB0cmFuc2l0aW9uIG1hY3JvcyAoY2VsZWJyYXRl
ISkKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgor
ICAgICAgICBSZW1vdmVkIG9sZCBpbXBsZW1lbnRhdGlvbnMgb2YgYW5pbWF0aW9uIGFuZCB0cmFu
c2l0aW9uIHByb3BlcnRpZXMuCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oOgorICAgICAgICBDaGFuZ2VkIHJldHVybiB0eXBlcyBvZiBpbml0aWFsIHZhbHVlcyB0byBt
YXRjaCB0aGUgc2V0dGVycyBhbmQgZ2V0dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorCiAyMDExLTA4LTEzICBBYmhpc2hlayBBcnlh
ICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NzAsNiArNzcwLDEwMSBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbiA6IHB1YmxpYyBBcHBseVBy
b3BlcnR5QmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBUIChBbmltYXRpb246OipHZXR0ZXJG
dW5jdGlvbikoKSBjb25zdDsKKyAgICB0eXBlZGVmIHZvaWQgKEFuaW1hdGlvbjo6KlNldHRlckZ1
bmN0aW9uKShUKTsKKyAgICB0eXBlZGVmIGJvb2wgKEFuaW1hdGlvbjo6KlRlc3RGdW5jdGlvbiko
KSBjb25zdDsKKyAgICB0eXBlZGVmIHZvaWQgKEFuaW1hdGlvbjo6KkNsZWFyRnVuY3Rpb24pKCk7
CisgICAgdHlwZWRlZiBUICgqSW5pdGlhbEZ1bmN0aW9uKSgpOworICAgIHR5cGVkZWYgdm9pZCAo
Q1NTU3R5bGVTZWxlY3Rvcjo6Kk1hcEZ1bmN0aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwor
ICAgIHR5cGVkZWYgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqQW5pbWF0aW9uR2V0dGVy
KSgpOworICAgIHR5cGVkZWYgY29uc3QgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqSW1t
dXRhYmxlQW5pbWF0aW9uR2V0dGVyKSgpIGNvbnN0OworCisgICAgQXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbihHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIFNldHRlckZ1bmN0aW9uIHNldHRlciwgVGVzdEZ1
bmN0aW9uIHRlc3QsIENsZWFyRnVuY3Rpb24gY2xlYXIsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFs
LCBNYXBGdW5jdGlvbiBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25H
ZXR0ZXIgYW5pbWF0aW9uR2V0dGVyLCBJbW11dGFibGVBbmltYXRpb25HZXR0ZXIgaW1tdXRhYmxl
QW5pbWF0aW9uR2V0dGVyKQorICAgICAgICA6IG1fZ2V0dGVyKGdldHRlcikKKyAgICAgICAgLCBt
X3NldHRlcihzZXR0ZXIpCisgICAgICAgICwgbV90ZXN0KHRlc3QpCisgICAgICAgICwgbV9jbGVh
cihjbGVhcikKKyAgICAgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICAgICAgLCBtX21hcCht
YXApCisgICAgICAgICwgbV9hbmltYXRpb25HZXR0ZXIoYW5pbWF0aW9uR2V0dGVyKQorICAgICAg
ICAsIG1faW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyKGltbXV0YWJsZUFuaW1hdGlvbkdldHRlcikK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBhcHBseUluaGVyaXRW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIEFu
aW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsK
KyAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IGFuaW1hdGlvbnMoc2Vs
ZWN0b3ItPnBhcmVudFN0eWxlKCkpOworICAgICAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUg
PSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsKKyAgICAgICAgZm9yICggOyBp
IDwgcGFyZW50U2l6ZSAmJiB0ZXN0KHBhcmVudExpc3QtPmFuaW1hdGlvbihpKSk7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKQorICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKGxpc3Qt
PmFuaW1hdGlvbihpKSwgdmFsdWUocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpKSk7CisgICAgICAg
IH0KKworICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhh
dmUgdGhlIHByb3BlcnR5IHNldC4gKi8KKyAgICAgICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBjbGVhcihsaXN0LT5hbmltYXRpb24oaSkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NB
bmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKKyAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAg
ICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0aW9uKDApLCBpbml0aWFsKCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2xlYXIo
bGlzdC0+YW5pbWF0aW9uKGkpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdAorICAg
IHsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vzc0FuaW1hdGlvbnMoc2VsZWN0
b3ItPnN0eWxlKCkpOworICAgICAgICBzaXplX3QgY2hpbGRJbmRleCA9IDA7CisgICAgICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgLyogV2FsayBlYWNoIHZhbHVl
IGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFz
IG5lZWRlZC4gKi8KKyAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZh
bHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hp
bGRJbmRleCA8PSBsaXN0LT5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChBbmltYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICBtYXAoc2VsZWN0b3IsIGxp
c3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAr
K2NoaWxkSW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAobGlzdC0+aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmlt
YXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIG1hcChzZWxlY3RvciwgbGlzdC0+YW5pbWF0
aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7CisgICAgICAgICAgICBjaGlsZEluZGV4ID0gMTsKKyAg
ICAgICAgfQorICAgICAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hp
bGRJbmRleCkgeworICAgICAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBhbmltYXRpb25z
IHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCisgICAgICAgICAgICBjbGVhcihsaXN0
LT5hbmltYXRpb24oY2hpbGRJbmRleCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBz
ZXRWYWx1ZShBbmltYXRpb24qIGFuaW1hdGlvbiwgVCB2YWx1ZSkgY29uc3QgeyAoYW5pbWF0aW9u
LT4qbV9zZXR0ZXIpKHZhbHVlKTsgfQorICAgIFQgdmFsdWUoY29uc3QgQW5pbWF0aW9uKiBhbmlt
YXRpb24pIGNvbnN0IHsgcmV0dXJuIChhbmltYXRpb24tPiptX2dldHRlcikoKTsgfQorICAgIGJv
b2wgdGVzdChjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbikgY29uc3QgeyByZXR1cm4gKGFuaW1h
dGlvbi0+Km1fdGVzdCkoKTsgfQorICAgIHZvaWQgY2xlYXIoQW5pbWF0aW9uKiBhbmltYXRpb24p
IGNvbnN0IHsgKGFuaW1hdGlvbi0+Km1fY2xlYXIpKCk7IH0KKyAgICBUIGluaXRpYWwoKSBjb25z
dCB7IHJldHVybiAoKm1faW5pdGlhbCkoKTsgfQorICAgIHZvaWQgbWFwKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSBjb25z
dCB7IChzZWxlY3Rvci0+Km1fbWFwKShhbmltYXRpb24sIHZhbHVlKTsgfQorICAgIEFuaW1hdGlv
bkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVy
biAoc3R5bGUtPiptX2FuaW1hdGlvbkdldHRlcikoKTsgfQorICAgIGNvbnN0IEFuaW1hdGlvbkxp
c3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVybiAoc3R5bGUt
PiptX2ltbXV0YWJsZUFuaW1hdGlvbkdldHRlcikoKTsgfQorCisgICAgR2V0dGVyRnVuY3Rpb24g
bV9nZXR0ZXI7CisgICAgU2V0dGVyRnVuY3Rpb24gbV9zZXR0ZXI7CisgICAgVGVzdEZ1bmN0aW9u
IG1fdGVzdDsKKyAgICBDbGVhckZ1bmN0aW9uIG1fY2xlYXI7CisgICAgSW5pdGlhbEZ1bmN0aW9u
IG1faW5pdGlhbDsKKyAgICBNYXBGdW5jdGlvbiBtX21hcDsKKyAgICBBbmltYXRpb25HZXR0ZXIg
bV9hbmltYXRpb25HZXR0ZXI7CisgICAgSW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyIG1faW1tdXRh
YmxlQW5pbWF0aW9uR2V0dGVyOworfTsKKwogY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBD
U1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NTdHlsZUFwcGx5UHJvcGVydHksIGNzc1N0eWxlQXBw
bHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7CkBAIC05NTAsNiArMTA0NSwyMSBAQCBDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRl
TGVuZ3RoPGZsb2F0PigmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHls
ZTo6c2V0VHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtT3Jp
Z2luWikpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbiwgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCksIHByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCBwcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKSkpOwogCisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIG5ldyBBcHBseVByb3BlcnR5
QW5pbWF0aW9uPGRvdWJsZT4oJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5
LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRp
b25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFu
aW1hdGlvbnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25EaXJlY3Rpb24sIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEFuaW1hdGlvbjo6QW5p
bWF0aW9uRGlyZWN0aW9uPigmQW5pbWF0aW9uOjpkaXJlY3Rpb24sICZBbmltYXRpb246OnNldERp
cmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyRGly
ZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBuZXcgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxkb3VibGU+KCZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlv
biwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PHVuc2lnbmVkPigmQW5pbWF0aW9uOjpmaWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUs
ICZBbmltYXRpb246OmlzRmlsbE1vZGVTZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1h
cEFuaW1hdGlvbkZpbGxNb2RlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5k
ZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjxpbnQ+KCZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRp
b25Db3VudCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmV3
IEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgU3RyaW5nJj4oJkFuaW1hdGlvbjo6bmFtZSwg
JkFuaW1hdGlvbjo6c2V0TmFtZSwgJkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpj
bGVhck5hbWUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lLCAmQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwQW5pbWF0aW9uTmFtZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAm
UmVuZGVyU3R5bGU6OmFuaW1hdGlvbnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PEVBbmltUGxheVN0YXRlPigmQW5pbWF0aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBs
YXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQbGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxh
eVN0YXRlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUGxheVN0YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBuZXcgQXBwbHlQcm9w
ZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiA+KCZBbmltYXRp
b246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1h
dGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlv
biwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNz
QW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zKSk7CisKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIG5ldyBBcHBseVByb3Bl
cnR5QW5pbWF0aW9uPGRvdWJsZT4oJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERl
bGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmlt
YXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxl
Ojp0cmFuc2l0aW9ucykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiwgbmV3IEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlPigm
QW5pbWF0aW9uOjpkdXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246
OmlzRHVyYXRpb25TZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb25EdXJhdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1
cmF0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRy
YW5zaXRpb25zKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5LCBuZXcgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxpbnQ+KCZBbmltYXRp
b246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9w
ZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvblByb3BlcnR5LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uUHJvcGVydHks
ICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlv
bnMpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIG5ldyBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQ
dHI8VGltaW5nRnVuY3Rpb24+ID4oJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRp
b246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAm
QW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25UaW1pbmdG
dW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0
cmFuc2l0aW9ucykpOworCisKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5Db3VudCwgbmV3IEFwcGx5UHJvcGVydHlBdXRvPHVuc2lnbmVkIHNob3J0PigmUmVu
ZGVyU3R5bGU6OmNvbHVtbkNvdW50LCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkNvdW50LCAmUmVu
ZGVyU3R5bGU6Omhhc0F1dG9Db2x1bW5Db3VudCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvQ29s
dW1uQ291bnQpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5HYXAsIG5ldyBBcHBseVByb3BlcnR5QXV0bzxmbG9hdCwgQ29tcHV0ZUxlbmd0aCwgQ1NTVmFs
dWVOb3JtYWw+KCZSZW5kZXJTdHlsZTo6Y29sdW1uR2FwLCAmUmVuZGVyU3R5bGU6OnNldENvbHVt
bkdhcCwgJlJlbmRlclN0eWxlOjpoYXNOb3JtYWxDb2x1bW5HYXAsICZSZW5kZXJTdHlsZTo6c2V0
SGFzTm9ybWFsQ29sdW1uR2FwKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5QXV0bzxmbG9hdCwgQ29tcHV0ZUxl
bmd0aD4oJlJlbmRlclN0eWxlOjpjb2x1bW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5X
aWR0aCwgJlJlbmRlclN0eWxlOjpoYXNBdXRvQ29sdW1uV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
SGFzQXV0b0NvbHVtbldpZHRoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDEwNCArMTYyLDYgQEAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwcgogaWYgKHByaW1pdGl2ZVZhbHVlKSBc
CiAgICAgbV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7CiAKLSNkZWZpbmUgSEFO
RExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0lu
aGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmlt
YXRpb25zKCk7IFwKLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gbV9wYXJl
bnRTdHlsZS0+YW5pbWF0aW9ucygpOyBcCi0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0g
cGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBw
YXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyAr
K2kpIHsgXAotICAgICAgICBpZiAobGlzdC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRp
b24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAg
ICB9IFwKLSAgICBcCi0gICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5v
dCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXpl
KCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwK
LX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9z
dHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAot
ICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBsaXN0LT5h
bmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb24jI1Byb3Ao
KSk7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0g
ICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0jZGVmaW5l
IEhBTkRMRV9BTklNQVRJT05fVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX0FO
SU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQg
fHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9z
dHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi1zaXplX3QgY2hpbGRJbmRleCA9IDA7IFwKLWlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBw
dXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRl
ZC4gKi8gXAotICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01v
cmUoKTsgaS5hZHZhbmNlKCkpIHsgXAotICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5z
aXplKCkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAotICAgICAgICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgp
LCBpLnZhbHVlKCkpOyBcCi0gICAgICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNl
IHsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1h
dGlvbihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAot
Zm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAg
IC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVy
dHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJv
cCgpOyBcCi19IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9J
TklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxp
c3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25zKCk7IFwK
LSAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+
c2l6ZSgpIDogMDsgXAotICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+
YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0
LT5zaXplKCkgPD0gaSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3Jl
YXRlKCkpOyBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExp
c3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAotICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNl
dCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0
LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7
IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMo
KTsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3Ao
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24o
MCktPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9WQUxV
RShwcm9wLCBQcm9wLCB2YWx1ZSkgeyBcCi1IQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9J
TklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAg
cmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlv
bnMoKTsgXAotc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0
KCkpIHsgXAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0
aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBmb3IgKENT
U1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7
IFwKLSAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0gICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbWFwQW5pbWF0
aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgaS52YWx1ZSgpKTsgXAotICAg
ICAgICArK2NoaWxkSW5kZXg7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+
aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAotICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZh
bHVlKTsgXAotICAgIGNoaWxkSW5kZXggPSAxOyBcCi19IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8
IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWlu
aW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBs
aXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAotfQotCiAj
ZGVmaW5lIEhBTkRMRV9JTkhFUklUX0NPTkQocHJvcElELCBwcm9wLCBQcm9wKSBcCiBpZiAoaWQg
PT0gcHJvcElEKSB7IFwKICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJv
cCgpKTsgXApAQCAtNDg4MCw0OCArNDc4MiwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50CiAgICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKICAgICAgICAgICAg
IG1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7
CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVs
YXk6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJl
Y3Rpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGlyZWN0aW9uLCBEaXJlY3Rp
b24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGR1cmF0aW9u
LCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
ZmlsbE1vZGUsIEZpbGxNb2RlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICAgICAgSEFORExFX0FO
SU1BVElPTl9WQUxVRShpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQsIHZhbHVlKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6Ci0g
ICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUobmFtZSwgTmFtZSwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgot
ICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBsYXlTdGF0ZSwgUGxheVN0YXRlLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRSh0aW1pbmdGdW5j
dGlvbiwgVGltaW5nRnVuY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CiAgICAgICAgIGlmIChpc0luaXRpYWwpCiAgICAg
ICAgICAgICBtX3N0eWxlLT5jbGVhclRyYW5zaXRpb25zKCk7CiAgICAgICAgIGVsc2UgaWYgKGlz
SW5oZXJpdCkKICAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhtX3BhcmVu
dFN0eWxlLT50cmFuc2l0aW9ucygpKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZB
TFVFKGRlbGF5LCBEZWxheSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfVFJBTlNJVElP
Tl9WQUxVRShkdXJhdGlvbiwgRHVyYXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgSEFORExF
X1RSQU5TSVRJT05fVkFMVUUocHJvcGVydHksIFByb3BlcnR5LCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246
Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdG
dW5jdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50czoKICAgICB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtNTE5
Nyw2ICs1MDYzLDE4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5
U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uVGltaW5nRnVuY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkdhcDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwCShyZXZpc2lvbiA5MzAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNCAr
MTMwLDEwIEBAIGJvb2wgQW5pbWF0aW9uOjphbmltYXRpb25zTWF0Y2goY29uc3QgQW4KICAgICBy
ZXR1cm4gIW1hdGNoUGxheVN0YXRlcyB8fCAobV9wbGF5U3RhdGUgPT0gby0+bV9wbGF5U3RhdGUg
JiYgbV9wbGF5U3RhdGVTZXQgPT0gby0+bV9wbGF5U3RhdGVTZXQpOwogfQogCitjb25zdCBTdHJp
bmcmIEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbk5hbWUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBpbml0aWFsVmFsdWUsICgibm9uZSIpKTsKKyAgICByZXR1cm4gaW5p
dGlhbFZhbHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCShyZXZpc2lvbiA5MzAzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDE1ICsxNjIsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNOb25l
ICAgICAgICAgICAgOiAxOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGZsb2F0IGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxBbmlt
YXRpb25EZWxheSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgQW5pbWF0aW9uRGlyZWN0aW9u
IGluaXRpYWxBbmltYXRpb25EaXJlY3Rpb24oKSB7IHJldHVybiBBbmltYXRpb25EaXJlY3Rpb25O
b3JtYWw7IH0KICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpIHsg
cmV0dXJuIDA7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlhbEFuaW1hdGlvbkZpbGxNb2Rl
KCkgeyByZXR1cm4gQW5pbWF0aW9uRmlsbE1vZGVOb25lOyB9CiAgICAgc3RhdGljIGludCBpbml0
aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIFN0
cmluZyBpbml0aWFsQW5pbWF0aW9uTmFtZSgpIHsgcmV0dXJuIFN0cmluZygibm9uZSIpOyB9Cisg
ICAgc3RhdGljIGNvbnN0IFN0cmluZyYgaW5pdGlhbEFuaW1hdGlvbk5hbWUoKTsKICAgICBzdGF0
aWMgRUFuaW1QbGF5U3RhdGUgaW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFu
aW1QbGF5U3RhdGVQbGF5aW5nOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsQW5pbWF0aW9uUHJv
cGVydHkoKSB7IHJldHVybiBjQW5pbWF0ZUFsbDsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsgfQorICAgIHN0YXRpYyBjb25zdCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24o
KSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>