<?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>37591</bug_id>
          
          <creation_ts>2010-04-14 11:31:50 -0700</creation_ts>
          <short_desc>HTML5 &quot;video&quot; tag with poster frame defined &quot;flashes&quot; right before movie displays</short_desc>
          <delta_ts>2011-01-24 12:19:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.karelia.com/scripts/claire2.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Wood">dwood</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ademar</cc>
    
    <cc>ap</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>silviapfeiffer1</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212462</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Wood">dwood</who>
    <bug_when>2010-04-14 11:31:50 -0700</bug_when>
    <thetext>Safari: HTML5 &quot;video&quot; tag won&apos;t show movie when poster attribute is defined

Steps to Reproduce:
1. Create a web page with a &lt;video&gt; tag with the &quot;poster&quot; attribute.  For instance, see http://www.karelia.com/scripts/claire2.html
2. Load the page

Expected Results:
The movie should instantly replace the poster image

Actual Results:
The poster image disappears for a long enough time to notice, before it is replaced by the movie.

Notes:

This is using TOT Webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223141</commentid>
    <comment_count>1</comment_count>
    <who name="Silvia Pfeiffer">silviapfeiffer1</who>
    <bug_when>2010-05-09 20:25:38 -0700</bug_when>
    <thetext>The effect you are describing happens for me in Google Chrome only.

In my Safari (Version 4.0.5 (6531.22.7)) the behaviour is even more broken for this page, since the first video doesn&apos;t play at all, even though it is on autoplay.

I have actually noticed generally that if I set a poster attribute in Google Chrome or Safari and don&apos;t set autoplay, that poster frame flashes briefly, then disappears and is replaced with the first frame of the video. While that is acceptable according to the HTML5 specification, I don&apos;t think it is what a Web developer or user would expect. In fact, this is also inconsistent with the behaviour of Opera and Firefox, which keep displaying the poster frame until the user hits the play button (or the JS play function is called).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255021</commentid>
    <comment_count>2</comment_count>
      <attachid>62348</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-07-22 15:26:12 -0700</bug_when>
    <thetext>Created attachment 62348
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261537</commentid>
    <comment_count>3</comment_count>
      <attachid>63775</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-06 15:56:49 -0700</bug_when>
    <thetext>Created attachment 63775
revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261568</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-06 16:37:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339180</commentid>
    <comment_count>5</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-01-24 12:19:05 -0800</bug_when>
    <thetext>Revision r64884 cherry-picked into qtwebkit-2.2 with commit 787fad8 &lt;http://gitorious.org/webkit/qtwebkit/commit/787fad8&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62348</attachid>
            <date>2010-07-22 15:26:12 -0700</date>
            <delta_ts>2010-08-06 15:56:49 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>15119</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMTAtMDctMjIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSFRNTDUgInZpZGVvIiB0YWcgd2l0aCBwb3N0ZXIgZnJhbWUgZGVmaW5lZCAiZmxhc2hlcyIg
cmlnaHQgYmVmb3JlIG1vdmllIGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzU5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY1MDU2
MT4KKworICAgICAgICBJZiBhIHZpZGVvIGVsZW1lbnQgaGFzIGEgcG9zdGVyIGZyYW1lLCBkaXNw
bGF5IGl0IHVudGlsIHRoZSBwbGF5YmFjayBpcyByZXF1ZXN0ZWQgb3IgdGhlIG1vdmllJ3MKKyAg
ICAgICAgdGltZSBpcyBjaGFuZ2VkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIG1fb2tUb1Jl
bmRlclZpZGVvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZv
ckxvYWQpOiBTZXQgbV9va1RvUmVuZGVyVmlkZW8gdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOiBDYWxsIHByZXBhcmVGb3JSZW5kZXJp
bmcgaWYgdGhlcmUgaXNuJ3QgYSBwb3N0ZXIKKyAgICAgICAgc28gdGhlIG1lZGlhIGVuZ2luZSBr
bm93cyB0byBkcmF3IGZyYW1lcyBhcyBzb29uIGFzIHRoZXkgYXJlIGF2YWlsYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFNlZWspOiBDYWxsIHByZXBhcmVG
b3JSZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQ
bGF5U3RhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBy
ZXBhcmVGb3JSZW5kZXJpbmcpOiBOZXcsIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSBrbm93cyBpdCBp
cworICAgICAgICBPSyB0byBzdGFydCBkaXNwbGF5aW5nIHZpZGVvIGZyYW1lcyBhbmQgdXBkYXRl
IHRoZSBwb3N0ZXIgZnJhbWUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRSZW5kZXJWaWRlbyk6IE5l
dywgcmV0dXJuIG1fb2tUb1JlbmRlclZpZGVvLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KTogSW5pdGlhbGl6ZSBtX3Nob3VsZERpc3BsYXlQ
b3N0ZXJJbWFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6
IENhbGwgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgaW5zdGVhZCBvZiBjaGVja2luZworICAg
ICAgICBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRldGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlKTogUmV3b3JrIGxv
Z2ljIHNvIHdlIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSBpdAorICAgICAgICBpcyBPSyB0byBkaXNw
bGF5IHZpZGVvIGZyYW1lcyB3aGVuIHRoZXJlIGlzIG5vIHBvc3Rlciwgb3Igb25jZSB0aGUgbWVk
aWEgZW5naW5lIGhhcyBzb21ldGhpbmcgCisgICAgICAgIHRvIGRpc3BsYXkgYW5kIHRoZSBtb3Zp
ZSBoYXMgc3RhcnRlZCBvciBzZWVrZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzaG91bGREaXNwbGF5UG9z
dGVySW1hZ2UpOiBUcmFjayBzdGF0ZSB3aXRoIGFuIGVudW0gaW5zdGVhZCBvZiBhCisgICAgICAg
IGJvb2wgc28gd2UgY2FuIGRpZmZlcmVudGlhdGUgInVua25vd24iIGFuZCAiZmFsc2UiLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6KToKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpwcmVwYXJlRm9yUmVuZGVyaW5nKTogTmV3LCBjYWxsIG1lZGlhIGVuZ2luZSdzIHByZXBhcmVG
b3JSZW5kZXJpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cHJlcGFyZUZvclJlbmRl
cmluZyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZSk6IEluaXRpYWxpemUgbV9pc0FsbG93ZWRUb1JlbmRlci4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0VXBWaWRlb1JlbmRlcmluZyk6IGlz
UmVhZHlGb3JSZW5kZXJpbmcgLT4gIGlzUmVhZHlGb3JWaWRlb1NldHVwLgorICAgICAgICBEb24n
dCBjYWxsIG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQgaGVyZSBhcyB0aGF0IHdpbGwg
bWVhbiB0aGF0IFJlbmRlclZpZGVvIHdvbid0IAorICAgICAgICBiZSB1c2VkIGZvciBkcmF3aW5n
IHNvIGl0IHdvbid0IGJlIGFibGUgdG8gZHJhdyB0aGUgcG9zdGVyIGZyYW1lLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjppc1JlYWR5Rm9yVmlkZW9TZXR1cCk6IFJlbmFt
ZWQgZnJvbSBpc1JlYWR5Rm9yUmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKTogTmV3LCBzZXR1cCBmb3IgcmVuZGVyaW5n
IGlmIG5lY2Vzc2FyeSwKKyAgICAgICAgY2FsbCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFu
Z2VkIGlmIHVzaW5nIGEgbW92aWUgbGF5ZXIgYXMgaXQgaXMgbm93IHNhZmUgdG8gZHJhdworICAg
ICAgICB2aWRlbyBmcmFtZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6
OnVwZGF0ZVN0YXRlcyk6IGlzUmVhZHlGb3JSZW5kZXJpbmcgLT4gIGlzUmVhZHlGb3JWaWRlb1Nl
dHVwCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcpOiBEaXR0by4gUmV0dXJuIGZhbHNlIHVudGlsIAorICAgICAgICBtX2lz
QWxsb3dlZFRvUmVuZGVyIGhhcyBiZWVuIHNldCBzbyBSZW5kZWVyVmlkZW8gY2FuIGRyYXcgdGhl
IHBvc3Rlci4KKwogMjAxMC0wNy0yMiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1zemVnZWQu
aHU+CiAKICAgICAgICAgVXJldmlld2VkIGJ1aWxkIGZpeC4KQEAgLTIwMTAsNyArMjA2OCw2IEBA
CiAKICAgICAgICAgUmVtb3ZlIEhUTUw1IG1lZGlhIGVsZW1lbnQgJ2xvYWQnIGV2ZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDQ2NAotICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTY1MDU2MT4KIAogICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KTogSW5pdGlhbGl6ZSBtX2NvbXBsZXRlbHlMb2FkZWQuCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDYzNDI1KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogCisgICAgYm9vbCBva1RvUmVuZGVy
VmlkZW8oKSBjb25zdCB7IHJldHVybiBtX29rVG9SZW5kZXJWaWRlbzsgfQorCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCk7ICAgIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVE
ZWNscyk7CkBAIC0yNTYsNyArMjU4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhdXNlSW50ZXJu
YWwoKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckxvYWQoKTsKLSAgICAKKyAgICB2b2lkIHByZXBh
cmVGb3JSZW5kZXJpbmcoKTsKKwogICAgIGJvb2wgcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJh
Y2soKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrID4gMDsg
fQogICAgIHZvaWQgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpIHsgKyttX3By
b2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOyB9CiAgICAgdm9pZCBlbmRQcm9jZXNzaW5nTWVk
aWFQbGF5ZXJDYWxsYmFjaygpIHsgQVNTRVJUKG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJh
Y2spOyAtLW1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7IH0KQEAgLTM2Niw2ICszNjks
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2Rpc3BhdGNoaW5nQ2FuUGxheUV2ZW50IDogMTsK
ICAgICBib29sIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUgOiAxOworICAgIGJvb2wgbV9v
a1RvUmVuZGVyVmlkZW8gOiAxOwogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjM0MjUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fc2hvdWxk
RGlzcGxheVBvc3RlckltYWdlKGZhbHNlKQorICAgICwgbV9zaG91bGREaXNwbGF5UG9zdGVySW1h
Z2UoVW5rbm93bikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh2aWRlb1RhZykpOwogfQpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCgpCiAKICNpZiAhRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgdXBkYXRlUG9zdGVySW1hZ2UoKTsKLSAg
ICBpZiAobV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UpIHsKKyAgICBpZiAoc2hvdWxkRGlzcGxh
eVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAg
IG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50Ojpk
ZXRhY2goKTsKICAgICAKLSAgICBpZiAoIW1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKQorICAg
IGlmICghc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpCiAgICAgICAgIGlmIChtX2ltYWdlTG9h
ZGVyKQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5jbGVhcigpOwogfQpAQCAtMTAzLDcgKzEw
Myw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBpZiAo
YXR0ck5hbWUgPT0gcG9zdGVyQXR0cikgewogICAgICAgICBtX3Bvc3RlclVSTCA9IGdldE5vbkVt
cHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOwogICAgICAgICB1cGRhdGVQb3N0ZXJJbWFnZSgp
OwotICAgICAgICBpZiAobV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UpIHsKKyAgICAgICAgaWYg
KHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAg
ICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwpAQCAtMTc1
LDE0ICsxNzUsMjIgQEAgY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxlbWVudDo6aQog
CiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlKCkKIHsKLSNpZiAhRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgYm9vbCBvbGRTaG91bGRTaG93UG9zdGVy
SW1hZ2UgPSBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZTsKLSNlbmRpZgotCi0gICAgbV9zaG91
bGREaXNwbGF5UG9zdGVySW1hZ2UgPSAhcG9zdGVyKCkuaXNFbXB0eSgpICYmICFoYXNBdmFpbGFi
bGVWaWRlb0ZyYW1lKCk7CisgICAgUG9zdGVyU3RhdGUgb2xkU2hvdWxkRGlzcGxheVBvc3RlciA9
IG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlOworICAgIAorICAgIC8vIElmIHdlIGhhdmUgYSBw
b3N0ZXIgcGF0aCwgb25seSBzaG93IGl0IHVudGlsIHRoZSBtZWRpYSBlbGVtZW50IHNheXMgc28g
KHVudGlsIHVzZXIgdHJpZ2dlcnMKKyAgICAvLyBkaXNwbGF5IGJ5IHBsYXlpbmcgb3Igc2Vla2lu
ZykgYW5kIHRoZSBtZWRpYSBlbmdpbmUgaGFzIHNvbWV0aGluZyB0byBkaXNwbGF5LgorICAgIG1f
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlID0gcG9zdGVyKCkuaXNFbXB0eSgpID8gSGlkZSA6IERp
c3BsYXk7CisgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CisgICAgICAgIGlm
IChva1RvUmVuZGVyVmlkZW8oKSkgeworICAgICAgICAgICAgcGxheWVyKCktPnByZXBhcmVGb3JS
ZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGlmIChoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkpCisg
ICAgICAgICAgICAgICAgbV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UgPSBIaWRlOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChwbGF5ZXIoKSAmJiBvbGRTaG91bGREaXNwbGF5UG9zdGVyICE9
IG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKQorICAgICAgICBwbGF5ZXIoKS0+cHJlcGFyZUZv
clJlbmRlcmluZygpOwogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAg
IGlmIChyZW5kZXJlcigpICYmIG9sZFNob3VsZFNob3dQb3N0ZXJJbWFnZSAhPSBtX3Nob3VsZERp
c3BsYXlQb3N0ZXJJbWFnZSkKKyAgICBpZiAocmVuZGVyZXIoKSAmJiBvbGRTaG91bGREaXNwbGF5
UG9zdGVyICE9IG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKQogICAgICAgICByZW5kZXJlcigp
LT51cGRhdGVGcm9tRWxlbWVudCgpOwogI2VuZGlmCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmgJKHJldmlzaW9uIDYzNDI1KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJr
aXRFbnRlckZ1bGxTY3JlZW4oYm9vbCBpc1VzZXJHZXN0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykg
eyB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oaXNVc2VyR2VzdHVyZSwgZWMpOyB9CiAgICAgdm9pZCB3
ZWJraXRFeGl0RnVsbFNjcmVlbigpIHsgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsgfQogCi0gICAg
Ym9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZERp
c3BsYXlQb3N0ZXJJbWFnZTsgfQorICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UgPT0gRGlzcGxheTsgfQog
CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9p
ZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0Jik7CkBAIC04NSw3ICs4NSw5IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8SFRNTEltYWdl
TG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIEtVUkwgbV9wb3N0ZXJVUkw7Ci0gICAgYm9vbCBt
X3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZTsKKworICAgIGVudW0gUG9zdGVyU3RhdGUgeyBVbmtu
b3duLCBIaWRlLCBEaXNwbGF5IH07CisgICAgUG9zdGVyU3RhdGUgbV9zaG91bGREaXNwbGF5UG9z
dGVySW1hZ2U7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gNjM0MjUpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5
MSwxMSBAQCBib29sIE1lZGlhUGxheWVyOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lCiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpOwogfQogICAgIAordm9pZCBN
ZWRpYVBsYXllcjo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOworfQorICAgIAogYm9vbCBNZWRpYVBsYXllcjo6Y2Fu
TG9hZFBvc3RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FuTG9hZFBvc3Rl
cigpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNp
b24gNjM0MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJD
bGllbnQqIG1lZGlhUGxheWVyQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVBsYXllckNs
aWVudDsgfQogCiAgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CisgICAg
dm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBj
b25zdDsKICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkocmV2aXNpb24gNjM0
MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4g
TWVkaWFQbGF5ZXI6OlVua25vd247IH0KIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKCkgeyB9CisKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gNjM0
MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVAKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAotCiAgICAgdm9pZCByZXBhaW50
KCk7CiAgICAgdm9pZCBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCByYXRlQ2hhbmdlZCgp
OwpAQCAtMTI3LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvclJlbmRlcmluZygpOworCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Q7CkBA
IC0xNzAsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhY2hlTW92aWVTY2FsZSgpOwog
ICAgIGJvb2wgbWV0YURhdGFBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYg
bV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH0KIAotICAgIGJvb2wg
aXNSZWFkeUZvclJlbmRlcmluZygpIGNvbnN0OworICAgIGJvb2wgaXNSZWFkeUZvclZpZGVvU2V0
dXAoKSBjb25zdDsKICAgICAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWlu
UHRyPFFUTW92aWU+IG1fcXRNb3ZpZTsKQEAgLTE5Nyw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNVbnN1cHBvcnRlZFRyYWNrczsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0Ry
YXduOwogICAgIGJvb2wgbV9kZWxheWluZ0xvYWQ7CisgICAgYm9vbCBtX2lzQWxsb3dlZFRvUmVu
ZGVyOwogI2lmIERSQVdfRlJBTUVfUkFURQogICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQbGF5
aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdGFydGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCShyZXZpc2lvbiA2MzQyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTQogICAgICwgbV92aXNp
YmxlKGZhbHNlKQogICAgICwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcyhmYWxzZSkKICAgICAsIG1f
dmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQorICAgICwgbV9pc0FsbG93ZWRUb1JlbmRlcihmYWxz
ZSkKICNpZiBEUkFXX0ZSQU1FX1JBVEUKICAgICAsIG1fZnJhbWVDb3VudFdoaWxlUGxheWluZygw
KQogICAgICwgbV90aW1lU3RhcnRlZFBsYXlpbmcoMCkKQEAgLTQ5NSw3ICs0OTYsNyBAQCBNZWRp
YVBsYXllclByaXZhdGU6Ok1lZGlhUmVuZGVyaW5nTW9kZSBNCiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpzZXRVcFZpZGVvUmVuZGVyaW5nKCkKIHsKLSAgICBpZiAoIWlzUmVhZHlGb3JSZW5k
ZXJpbmcoKSkKKyAgICBpZiAoIWlzUmVhZHlGb3JWaWRlb1NldHVwKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIE1lZGlhUmVuZGVyaW5nTW9kZSBjdXJyZW50TW9kZSA9IGN1cnJlbnRSZW5kZXJp
bmdNb2RlKCk7CkBAIC01MTksMTAgKzUyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpz
ZXRVcFZpZGVvUmVuZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChjdXJyZW50TW9kZSA9PSBNZWRpYVJlbmRlcmluZ01v
dmllTGF5ZXIgfHwgcHJlZmVycmVkTW9kZSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXIpCi0g
ICAgICAgIG1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclJlbmRlcmlu
Z01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKLSNlbmRpZgorICAgIC8vIERvIG5vdCBjYWxsIG1lZGlh
UGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQgeWV0LCB3ZSBjYW4gb25seSBkbyB0aGF0IGFmdGVy
IHByZXBhcmVGb3JSZW5kZXJpbmcoKSBoYXMgYmVlbiBjYWxsZWQKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnRlYXJEb3duVmlkZW9SZW5kZXJpbmcoKQpAQCAtOTE1LDExICs5MTMsMjUg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmNhY2hlTW92aWVTY2FsZQogICAgICAgICBtX3Nj
YWxlRmFjdG9yLnNldEhlaWdodChpbml0aWFsU2l6ZS5oZWlnaHQgLyBuYXR1cmFsU2l6ZS5oZWln
aHQpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNSZWFkeUZvclJlbmRlcmluZygp
IGNvbnN0Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNSZWFkeUZvclZpZGVvU2V0dXAoKSBj
b25zdAogewogICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRh
ZGF0YSAmJiBtX3BsYXllci0+dmlzaWJsZSgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgaWYgKG1faXNBbGxvd2VkVG9SZW5kZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faXNBbGxvd2VkVG9SZW5kZXIgPSB0cnVlOworICAg
IGlmICghaGFzU2V0VXBWaWRlb1JlbmRlcmluZygpKQorICAgICAgICBzZXRVcFZpZGVvUmVuZGVy
aW5nKCk7CisKKyAgICAvLyBJZiB1c2luZyBhIG1vdmllIGxheWVyLCBpbmZvcm0gdGhlIGNsaWVu
dCBzbyB0aGUgY29tcG9zaXRpbmcgdHJlZSBpcyB1cGRhdGVkLiAKKyAgICBpZiAoY3VycmVudFJl
bmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXIgfHwgcHJlZmVycmVkUmVu
ZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcikKKyAgICAgICAgbV9wbGF5
ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQo
bV9wbGF5ZXIpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkK
IHsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG9sZE5ldHdvcmtTdGF0ZSA9IG1fbmV0
d29ya1N0YXRlOwpAQCAtMTAwOSw3ICsxMDIxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWhhc1NldFVwVmlk
ZW9SZW5kZXJpbmcoKSkKKyAgICBpZiAoaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAmJiAhaGFzU2V0
VXBWaWRlb1JlbmRlcmluZygpKQogICAgICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAKICAg
ICBpZiAoc2Vla2luZygpKQpAQCAtMTQ0Myw4ICsxNDU1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpzYXdVbnN1cHBvcnRlZFQKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
IGNvbnN0CiB7Ci0gICAgLy8gV2hlbiBpbiB0aGUgbWVkaWEgZG9jdW1lbnQgd2UgcmVuZGVyIHZp
YSBRVE1vdmllVmlldywgd2hpY2ggaXMgYWxyZWFkeSBhY2NlbGVyYXRlZC4KLSAgICByZXR1cm4g
aXNSZWFkeUZvclJlbmRlcmluZygpICYmIGdldFFUTW92aWVMYXllckNsYXNzKCkgIT0gTmlsICYm
ICFtX3BsYXllci0+aW5NZWRpYURvY3VtZW50KCk7CisgICAgLy8gRG9uJ3QgY2xhaW0gdG8gc3Vw
cG9ydCBhY2NlbGVyYXRlZCByZW5kZXJpbmcgdW50aWwgd2UgYXJlIGFsbG93ZWQgdG8gcmVuZGVy
LCBvciB0aGUgY29tcG9zaXRvciB3aWxsIHN0YXJ0CisgICAgLy8gdG8gdXNlIGEgbGF5ZXIgaW1t
ZWRpYXRlbHkgYW5kIFJlbmRlclZpZGVvIHdvbid0IGJlIGFibGUgdG8gZHJhdyB0aGUgcG9zdGVy
IChpZiB0aGVyZSBpcyBvbmUpLgorICAgIC8vIEFsc28gZG9uJ3QgY2xhaW0gdG8gc3VwcG9ydCBp
dCB3aGVuIGluIHRoZSBtZWRpYSBkb2N1bWVudCwgYXMgd2Ugd2lsbCB0aGVuIHJlbmRlciB2aWEg
UVRNb3ZpZVZpZXcsIHdoaWNoIAorICAgIC8vIGlzIGFscmVhZHkgYWNjZWxlcmF0ZWQuCisgICAg
cmV0dXJuIG1faXNBbGxvd2VkVG9SZW5kZXIgJiYgaXNSZWFkeUZvclZpZGVvU2V0dXAoKSAmJiBn
ZXRRVE1vdmllTGF5ZXJDbGFzcygpICE9IE5pbCAmJiAhbV9wbGF5ZXItPmluTWVkaWFEb2N1bWVu
dCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdT
dGF0ZUNoYW5nZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63775</attachid>
            <date>2010-08-06 15:56:49 -0700</date>
            <delta_ts>2010-08-06 16:10:01 -0700</delta_ts>
            <desc>revised patch.</desc>
            <filename>patch_6.txt</filename>
            <type>text/plain</type>
            <size>29622</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDg2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMTAtMDgtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSFRNTDUgInZpZGVvIiB0YWcgd2l0aCBwb3N0ZXIgZnJhbWUgZGVmaW5lZCAiZmxhc2hlcyIg
cmlnaHQgYmVmb3JlIG1vdmllIGRpc3BsYXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzU5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY1MDU2
MT4KKworICAgICAgICBJZiBhIHZpZGVvIGVsZW1lbnQgaGFzIGEgcG9zdGVyIGZyYW1lLCBkaXNw
bGF5IGl0IHVudGlsIHRoZSBwbGF5YmFjayBpcyByZXF1ZXN0ZWQgb3IgdGhlIG1vdmllJ3MKKyAg
ICAgICAgdGltZSBpcyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGNvbXBvc2l0aW5nL3ZpZGVv
L3ZpZGVvLXBvc3Rlci5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
IEluaXRpYWxpemUgbV9kaXNwbGF5TW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnByZXBhcmVGb3JMb2FkKTogU2V0IG1fZGlzcGxheU1vZGUgdG8gVW5rbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6IENhbGwgdXBk
YXRlRGlzcGxheVN0YXRlIHRvIGxldCBpdCBzZXQgY29uZmlndXJlCisgICAgICAgIHRoZSBwb3N0
ZXIsIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om5v
bmVTdXBwb3J0ZWQpOiB1cGRhdGVQb3N0ZXJJbWFnZSAtPiB1cGRhdGVEaXNwbGF5U3RhdGUuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFNlZWspOiBT
ZXQgZGlzcGxheSBtb2RlIHRvIFZpZGVvIHNvIGEgdmlkZW8gZnJhbWUgd2lsbCBiZQorICAgICAg
ICBkaXNwbGF5ZWQgaWYgYSBwb3N0ZXIgaXMgY3VycmVudGx5IHZpc2libGUuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQpOiB1cGRhdGVQb3N0
ZXJJbWFnZSAtPiB1cGRhdGVEaXNwbGF5U3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOiBTZXQgZGlzcGxheSBtb2RlIHRvIFZpZGVvLgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZGlzcGxheU1vZGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXREaXNwbGF5TW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogRGl0dG8uCisKKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudCk6IFJlbW92ZSBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJ
bWFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6IENhbGwg
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlIGluc3RlYWQgb2YgY2hlY2tpbmcKKyAgICAgICAgbV9z
aG91bGREaXNwbGF5UG9zdGVySW1hZ2UgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpkZXRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogU2V0IG1fZGlzcGxheU1vZGUgdG8gVW5r
bm93biBiZWZvcmUgY2FsbGluZyAKKyAgICAgICAgdXBkYXRlRGlzcGxheVN0YXRlIHNvIHNob3Vs
ZERpc3BsYXlQb3N0ZXJJbWFnZSgpIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IHJlc3VsdC4gUmVt
b3ZlIHRoZQorICAgICAgICBQTFVHSU5fUFJPWFlfRk9SX1ZJREVPIGNvZGUsIGl0IGlzIG5vdyBp
biB1cGRhdGVEaXNwbGF5U3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
OjpzZXREaXNwbGF5TW9kZSk6IFJlbmFtZWQgZnJvbSB1cGRhdGVQb3N0ZXJJbWFnZSBhbmQgcmV3
b3JrIGxvZ2ljCisgICAgICAgIHNvIHdlIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSBpdCBpcyBPSyB0
byBkaXNwbGF5IHZpZGVvIGZyYW1lcyB3aGVuIHRoZXJlIGlzIG5vIHBvc3Rlciwgb3IgCisgICAg
ICAgIG9uY2UgdGhlIG1lZGlhIGVuZ2luZSBoYXMgc29tZXRoaW5nIHRvIGRpc3BsYXkgYW5kIHRo
ZSBtb3ZpZSBoYXMgc3RhcnRlZCBvciBzZWVrZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50Ojp1cGRhdGVEaXNwbGF5U3RhdGUpOiBOZXcsIG1hbmFnZSBkaXNwbGF5IG1vZGUg
YmFzZWQgb24gcG9zdGVyIAorICAgICAgICBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1M
VmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzaG91
bGREaXNwbGF5UG9zdGVySW1hZ2UpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnByZXBhcmVGb3JS
ZW5kZXJpbmcpOiBOZXcsIGNhbGwgbWVkaWEgZW5naW5lJ3MgcHJlcGFyZUZvclJlbmRlcmluZy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlKTogSW5pdGlhbGl6ZSBtX2lzQWxsb3dlZFRvUmVuZGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRVcFZpZGVvUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6aXNSZWFkeUZvclZpZGVvU2V0dXApOiBSZW5hbWVkIGZy
b20gaXNSZWFkeUZvclJlbmRlcmluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6cHJlcGFyZUZvclJlbmRlcmluZyk6IE5ldywgc2V0IG1faXNBbGxvd2VkVG9SZW5kZXIg
YW5kCisgICAgICAgIGluZm9ybSB0aGUgY2xpZW50IHRoYXQgcmVuZGVyIHRyZWUgc2hvdWxkIGJl
IHVwZGF0ZWQgc28gd2UgY29ycmVjdGx5IHN3aXRjaCBmcm9tIHNob3dpbmcKKyAgICAgICAgdGhl
IHBvc3Rlciwgd2hpY2ggb2Z0ZW4gZG9lbnMndCB1c2UgYSBsYXllciwgdG8gc2hvd2luZyB2aWRl
byBmcmFtZXMsIHdoaWNoIGRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
Ojp1cGRhdGVTdGF0ZXMpOiBEb24ndCBjYWxsIHNldFVwVmlkZW9SZW5kZXJpbmcgdW50aWwgCisg
ICAgICAgIGlzUmVhZHlGb3JWaWRlb1NldHVwKCkgcmV0dXJucyB0cnVlLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKTog
aXNSZWFkeUZvclJlbmRlcmluZyAtPiBpc1JlYWR5Rm9yVmlkZW9TZXR1cAorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OmNvbnRhaW5zUGFpbnRlZENvbnRlbnQpOiBPbmx5IGNvbnNpZGVyIHZp
ZGVvIHdoZW4gZGlzcGxheWluZworICAgICAgICB2aWRlbyBmcmFtZXMgc28gYSBwb3N0ZXIgd29u
J3QgZm9yY2UgY29tcG9zaXRpbmcgbW9kZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8pOiBEaXR0by4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6
c2hvdWxkRGlzcGxheVZpZGVvKTogTmV3LCByZXR1cm4gdHJ1ZSB3aGVuIG5vdCBkaXNwbGF5aW5n
IGEgcG9zdGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorCiAyMDEwLTA4
LTA2ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNv
LnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NzkyKQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOCArMTA4LDkgQEAgSFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogI2VuZGlmCiAgICAgLCBtX3Jlc3RyaWN0
aW9ucyhOb1Jlc3RyaWN0aW9ucykKICAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXllcjo6QXV0bykK
LSAgICAsIG1fcGxheWluZyhmYWxzZSkKKyAgICAsIG1fZGlzcGxheU1vZGUoVW5rbm93bikKICAg
ICAsIG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soMCkKKyAgICAsIG1fcGxheWluZyhm
YWxzZSkKICAgICAsIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KGZhbHNlKQogICAgICwg
bV9wcm9jZXNzaW5nTG9hZChmYWxzZSkKICAgICAsIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQoZmFs
c2UpCkBAIC00OTQsNiArNDk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCgpCiAgICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CiAgICAgbV9oYXZlRmlyZWRM
b2FkZWREYXRhID0gZmFsc2U7CiAgICAgbV9jb21wbGV0ZWx5TG9hZGVkID0gZmFsc2U7CisgICAg
bV9kaXNwbGF5TW9kZSA9IFVua25vd247CiAKICAgICAvLyAxIC0gQWJvcnQgYW55IGFscmVhZHkt
cnVubmluZyBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3Ig
dGhpcyBlbGVtZW50LgogICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOwpAQCAtNTMzLDcgKzUz
NSw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgIG1fcGxh
eWVkVGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIG1fbGFzdFNlZWtUaW1l
ID0gMDsKICAgICBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA9IGZhbHNlOwotCiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKQEAgLTY2NSwxMSArNjY2LDkgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29ucwogCiAgICAgbV9wbGF5ZXItPmxv
YWQobV9jdXJyZW50U3JjLCBjb250ZW50VHlwZSk7CiAKLSAgICBpZiAoaXNWaWRlbygpICYmIG1f
cGxheWVyLT5jYW5Mb2FkUG9zdGVyKCkpIHsKLSAgICAgICAgS1VSTCBwb3N0ZXJVUkwgPSBnZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKLSAgICAgICAgaWYgKCFwb3N0ZXJVUkwu
aXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wbGF5ZXItPnNldFBvc3Rlcihwb3N0ZXJVUkwpOwot
ICAgIH0KKyAgICAvLyBJZiB0aGVyZSBpcyBubyBwb3N0ZXIgdG8gZGlzcGxheSwgYWxsb3cgdGhl
IG1lZGlhIGVuZ2luZSB0byByZW5kZXIgdmlkZW8gZnJhbWVzIGFzIHNvb24gYXMKKyAgICAvLyB0
aGV5IGFyZSBhdmFpbGFibGUuCisgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CiAKICAgICBpZiAo
cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKQEAg
LTc0MCw3ICs3MzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0ZWQoKQog
CiAgICAgLy8gOSAtQWJvcnQgdGhlc2Ugc3RlcHMuIFVudGlsIHRoZSBsb2FkKCkgbWV0aG9kIGlz
IGludm9rZWQsIHRoZSBlbGVtZW50IHdvbid0IGF0dGVtcHQgdG8gbG9hZCBhbm90aGVyIHJlc291
cmNlLgogCi0gICAgdXBkYXRlUG9zdGVySW1hZ2UoKTsKKyAgICB1cGRhdGVEaXNwbGF5U3RhdGUo
KTsKIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9t
RWxlbWVudCgpOwpAQCAtODI5LDcgKzgyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
TmV0d29ya1N0YXRlKE0KICAgICAgICAgZWxzZSBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU3JjQXR0cikKICAgICAgICAg
ICAgIG5vbmVTdXBwb3J0ZWQoKTsKIAotICAgICAgICB1cGRhdGVQb3N0ZXJJbWFnZSgpOworICAg
ICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
OTIxLDcgKzkyMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQK
ICAgICAgICAgbV9wbGF5ZXItPnNlZWsoMCk7CiAgICAgfQogCi0gICAgYm9vbCBzaG91bGRVcGRh
dGVQb3N0ZXJJbWFnZSA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkVXBkYXRlRGlzcGxheVN0YXRl
ID0gZmFsc2U7CiAKICAgICAvLyA0LjguMTAuNyBzYXlzIGxvYWRlZGRhdGEgaXMgc2VudCBvbmx5
IHdoZW4gdGhlIG5ldyBzdGF0ZSAqaXMqIEhBVkVfQ1VSUkVOVF9EQVRBOiAiSWYgdGhlCiAgICAg
Ly8gcHJldmlvdXMgcmVhZHkgc3RhdGUgd2FzIEhBVkVfTUVUQURBVEEgYW5kIHRoZSBuZXcgcmVh
ZHkgc3RhdGUgaXMgSEFWRV9DVVJSRU5UX0RBVEEiLCAKQEAgLTkzMCw3ICs5MjksNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkCiAgICAgLy8gV2UgZ28gd2l0aCB0
aGUgbGF0ZXIgYmVjYXVzZSBpdCBzZWVtcyB1c2VmdWwgdG8gY291bnQgb24gZ2V0dGluZyB0aGlz
IGV2ZW50CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFUQSAmJiBvbGRT
dGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBICYmICFtX2hhdmVGaXJlZExvYWRlZERhdGEpIHsKICAg
ICAgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRhID0gdHJ1ZTsKLSAgICAgICAgc2hvdWxkVXBkYXRl
UG9zdGVySW1hZ2UgPSB0cnVlOworICAgICAgICBzaG91bGRVcGRhdGVEaXNwbGF5U3RhdGUgPSB0
cnVlOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRhRXZlbnQp
OwogICAgIH0KIApAQCAtOTM5LDcgKzkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
UmVhZHlTdGF0ZShNZWQKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuY2FucGxh
eUV2ZW50KTsKICAgICAgICAgaWYgKGlzUG90ZW50aWFsbHlQbGF5aW5nKQogICAgICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKLSAgICAgICAgc2hvdWxk
VXBkYXRlUG9zdGVySW1hZ2UgPSB0cnVlOworICAgICAgICBzaG91bGRVcGRhdGVEaXNwbGF5U3Rh
dGUgPSB0cnVlOwogICAgIH0KIAogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFWRV9FTk9VR0hf
REFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfRU5PVUdIX0RBVEEpIHsKQEAgLTk1NywxMSArOTU2LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQKICAgICAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzaG91bGRVcGRhdGVQb3N0ZXJJbWFnZSA9IHRydWU7CisgICAgICAgIHNob3VsZFVw
ZGF0ZURpc3BsYXlTdGF0ZSA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVwZGF0ZVBv
c3RlckltYWdlKQotICAgICAgICB1cGRhdGVQb3N0ZXJJbWFnZSgpOworICAgIGlmIChzaG91bGRV
cGRhdGVEaXNwbGF5U3RhdGUpCisgICAgICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogCiAgICAg
dXBkYXRlUGxheVN0YXRlKCk7CiB9CkBAIC0xMDY1LDcgKzEwNjQsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgCiAgICAgbV9wbGF5ZXItPnNlZWsodGltZSk7CiAK
ICAgICAvLyAxMC0xNSBhcmUgaGFuZGxlZCwgaWYgbmVjZXNzYXJ5LCB3aGVuIHRoZSBlbmdpbmUg
c2lnbmFscyBhIHJlYWR5c3RhdGUgY2hhbmdlLgotCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZmluaXNoU2VlaygpCkBAIC0xMDc1LDYgKzEwNzMsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmZpbmlzaFNlZWsoKQogCiAgICAgLy8gNC44LjEwLjEwIFNlZWtpbmcgc3RlcCAxMwogICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnNlZWtlZEV2ZW50KTsKKworICAgIHNldERpc3Bs
YXlNb2RlKFZpZGVvKTsKIH0KIAogSFRNTE1lZGlhRWxlbWVudDo6UmVhZHlTdGF0ZSBIVE1MTWVk
aWFFbGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKQEAgLTE2MTMsMTAgKzE2MTMsOSBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXllciopCiB7CiAgICAgYmVnaW5Qcm9jZXNz
aW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogICAg
IGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7Ci0KLSAgICB1
cGRhdGVQb3N0ZXJJbWFnZSgpOwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNr
KCk7CiB9CiAKQEAgLTE3NzcsNiArMTc3Niw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlUGxheVN0YXRlKCkKICAgICBib29sIHNob3VsZEJlUGxheWluZyA9IHBvdGVudGlhbGx5UGxh
eWluZygpOwogICAgIGJvb2wgcGxheWVyUGF1c2VkID0gbV9wbGF5ZXItPnBhdXNlZCgpOwogICAg
IGlmIChzaG91bGRCZVBsYXlpbmcgJiYgcGxheWVyUGF1c2VkKSB7CisgICAgICAgIHNldERpc3Bs
YXlNb2RlKFZpZGVvKTsKKwogICAgICAgICAvLyBTZXQgcmF0ZSBiZWZvcmUgY2FsbGluZyBwbGF5
IGluIGNhc2UgdGhlIHJhdGUgd2FzIHNldCBiZWZvcmUgdGhlIG1lZGlhIGVuZ2luZSB3YXNuJ3Qg
c2V0dXAuCiAgICAgICAgIC8vIFRoZSBtZWRpYSBlbmdpbmUgc2hvdWxkIGp1c3Qgc3Rhc2ggdGhl
IHJhdGUgc2luY2UgaXQgaXNuJ3QgYWxyZWFkeSBwbGF5aW5nLgogICAgICAgICBtX3BsYXllci0+
c2V0UmF0ZShtX3BsYXliYWNrUmF0ZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDY0NzkyKQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKIAorICAgIGVudW0gRGlzcGxheU1vZGUgeyBVbmtub3duLCBO
b25lLCBQb3N0ZXIsIFZpZGVvIH07CisgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlN
b2RlKERpc3BsYXlNb2RlIG1vZGUpIHsgbV9kaXNwbGF5TW9kZSA9IG1vZGU7IH0KKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOyAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNl
cnZlRGVjbHMpOwpAQCAtMTk1LDcgKzE5OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50
RGlkQmVjb21lQWN0aXZlKCk7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlkQ2hhbmdl
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBvc3RlckltYWdlKCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCkgeyB9CiAgICAgCiAgICAgdm9pZCBzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKICAgICB2b2lkIHNldE5ldHdvcmtTdGF0
ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKQEAgLTI1NCw3ICsyNTksOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGF1c2VJbnRlcm5hbCgpOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yTG9hZCgp
OwotICAgIAorICAgIHZvaWQgYWxsb3dWaWRlb1JlbmRlcmluZygpOworCiAgICAgYm9vbCBwcm9j
ZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2sgPiAwOyB9CiAgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdNZWRpYVBs
YXllckNhbGxiYWNrKCkgeyArK21fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7IH0KICAg
ICB2b2lkIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkgeyBBU1NFUlQobV9wcm9j
ZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjayk7IC0tbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxs
YmFjazsgfQpAQCAtMzI2LDE0ICszMzIsMTQgQEAgcHJpdmF0ZToKICAgICAKICAgICBNZWRpYVBs
YXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAKLSAgICBib29sIG1fcGxheWluZzsKKyAgICBEaXNw
bGF5TW9kZSBtX2Rpc3BsYXlNb2RlOwogCiAgICAgLy8gQ291bnRlciBpbmNyZW1lbnRlZCB3aGls
ZSBwcm9jZXNzaW5nIGEgY2FsbGJhY2sgZnJvbSB0aGUgbWVkaWEgcGxheWVyLCBzbyB3ZSBjYW4g
YXZvaWQKICAgICAvLyBjYWxsaW5nIHRoZSBtZWRpYSBlbmdpbmUgcmVjdXJzaXZlbHkuCiAgICAg
aW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7CiAKLSAgICBib29sIG1faXNXYWl0
aW5nVW50aWxNZWRpYUNhblN0YXJ0OwotCisgICAgYm9vbCBtX3BsYXlpbmcgOiAxOworICAgIGJv
b2wgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgOiAxOwogICAgIGJvb2wgbV9wcm9jZXNz
aW5nTG9hZCA6IDE7CiAgICAgYm9vbCBtX2RlbGF5aW5nVGhlTG9hZEV2ZW50IDogMTsKICAgICBi
b29sIG1faGF2ZUZpcmVkTG9hZGVkRGF0YSA6IDE7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCShyZXZpc2lvbiA2NDc5MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCiBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1M
TWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zaG91bGREaXNwbGF5UG9z
dGVySW1hZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodmlkZW9UYWcpKTsKIH0K
QEAgLTc0LDggKzczLDggQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2goKQogICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OmF0dGFjaCgpOwogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQotICAgIHVwZGF0ZVBvc3RlckltYWdlKCk7Ci0gICAgaWYgKG1fc2hvdWxkRGlzcGxh
eVBvc3RlckltYWdlKSB7CisgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CisgICAgaWYgKHNob3Vs
ZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKICAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwog
ICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtOTEsOSArOTAs
OCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgSFRNTE1lZGlhRWxl
bWVudDo6ZGV0YWNoKCk7CiAgICAgCi0gICAgaWYgKCFtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFn
ZSkKLSAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVy
LmNsZWFyKCk7CisgICAgaWYgKCFzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSAmJiBtX2ltYWdl
TG9hZGVyKQorICAgICAgICBtX2ltYWdlTG9hZGVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpAQCAtMTAx
LDE1ICs5OSwxNCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5uYW1lKCk7CiAKICAgICBp
ZiAoYXR0ck5hbWUgPT0gcG9zdGVyQXR0cikgewotICAgICAgICB1cGRhdGVQb3N0ZXJJbWFnZSgp
OwotICAgICAgICBpZiAobV9zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UpIHsKKyAgICAgICAgLy8g
Rm9yY2UgYSBwb3N0ZXIgcmVjYWxjIGJ5IHNldHRpbmcgbV9kaXNwbGF5TW9kZSB0byBVbmtub3du
IGRpcmVjdGx5IGJlZm9yZSBjYWxsaW5nIHVwZGF0ZURpc3BsYXlTdGF0ZS4KKyAgICAgICAgSFRN
TE1lZGlhRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoVW5rbm93bik7CisgICAgICAgIHVwZGF0ZURp
c3BsYXlTdGF0ZSgpOworICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsK
ICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgICAgICAgICBpZiAoIW1f
aW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJ
bWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9t
RWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwotI2Vsc2UKLSAgICAgICAgICAgIGlmIChw
bGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBwbGF5ZXIoKS0+c2V0UG9zdGVyKGdldE5vbkVtcHR5
VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCkBAIC0xNzIsMjAgKzE2OSw0MiBAQCBjb25zdCBR
dWFsaWZpZWROYW1lJiBIVE1MVmlkZW9FbGVtZW50OjppCiAgICAgcmV0dXJuIHBvc3RlckF0dHI7
CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlUG9zdGVySW1hZ2UoKQordm9pZCBI
VE1MVmlkZW9FbGVtZW50OjpzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSBtb2RlKQogewotI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBib29sIG9sZFNob3VsZFNob3dQ
b3N0ZXJJbWFnZSA9IG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlOwotI2VuZGlmCisgICAgRGlz
cGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7CisgICAgS1VSTCBwb3N0ZXIgPSBnZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKworICAgIGlmICghcG9zdGVyLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBXZSBoYXZlIGEgcG9zdGVyIHBhdGgsIGJ1dCBvbmx5IHNob3cg
aXQgdW50aWwgdGhlIHVzZXIgdHJpZ2dlcnMgZGlzcGxheSBieSBwbGF5aW5nIG9yIHNlZWtpbmcg
YW5kIHRoZQorICAgICAgICAvLyBtZWRpYSBlbmdpbmUgaGFzIHNvbWV0aGluZyB0byBkaXNwbGF5
LgorICAgICAgICBpZiAobW9kZSA9PSBWaWRlbykgeworICAgICAgICAgICAgaWYgKG9sZE1vZGUg
IT0gVmlkZW8gJiYgcGxheWVyKCkpCisgICAgICAgICAgICAgICAgcGxheWVyKCktPnByZXBhcmVG
b3JSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGlmICghaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
KQorICAgICAgICAgICAgICAgIG1vZGUgPSBQb3N0ZXI7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKG9sZE1vZGUgIT0gVmlkZW8gJiYgcGxheWVyKCkpCisgICAgICAgIHBsYXllcigpLT5wcmVw
YXJlRm9yUmVuZGVyaW5nKCk7CiAKLSAgICBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSA9ICFn
ZXRBdHRyaWJ1dGUocG9zdGVyQXR0cikuaXNFbXB0eSgpICYmICFoYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCk7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGlzcGxheU1vZGUobW9kZSk7CisKKyAg
ICBpZiAocGxheWVyKCkgJiYgcGxheWVyKCktPmNhbkxvYWRQb3N0ZXIoKSkKKyAgICAgICAgcGxh
eWVyKCktPnNldFBvc3Rlcihwb3N0ZXIpOwogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQotICAgIGlmIChyZW5kZXJlcigpICYmIG9sZFNob3VsZFNob3dQb3N0ZXJJbWFnZSAh
PSBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSkKKyAgICBpZiAocmVuZGVyZXIoKSAmJiBkaXNw
bGF5TW9kZSgpICE9IG9sZE1vZGUpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVt
ZW50KCk7CiAjZW5kaWYKIH0KIAordm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVEaXNwbGF5
U3RhdGUoKQoreworICAgIGlmIChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKS5p
c0VtcHR5KCkpCisgICAgICAgIHNldERpc3BsYXlNb2RlKFZpZGVvKTsKKyAgICBlbHNlIGlmIChk
aXNwbGF5TW9kZSgpIDwgUG9zdGVyKQorICAgICAgICBzZXREaXNwbGF5TW9kZShQb3N0ZXIpOwor
fQorCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAg
TWVkaWFQbGF5ZXIqIHBsYXllciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiA2NDc5MikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3ZWJraXRFbnRlckZ1bGxTY3JlZW4oYm9vbCBpc1VzZXJHZXN0dXJlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oaXNVc2VyR2VzdHVyZSwg
ZWMpOyB9CiAgICAgdm9pZCB3ZWJraXRFeGl0RnVsbFNjcmVlbigpIHsgd2Via2l0RXhpdEZ1bGxz
Y3JlZW4oKTsgfQogCi0gICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZTsgfQotCiAgICAgLy8gVXNlZCBieSBj
YW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICBib29s
IHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlNb2RlKCkg
PT0gUG9zdGVyOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNzgsMTEgKzc4LDE0IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUo
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBvc3RlckltYWdlKCk7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheU1vZGUoRGlz
cGxheU1vZGUpOworCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsK
LSAgICBib29sIG1fc2hvdWxkRGlzcGxheVBvc3RlckltYWdlOworCiB9OwogCiB9IC8vbmFtZXNw
YWNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2
aXNpb24gNjQ3OTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDYgKzI5MiwxMSBAQCBib29sIE1lZGlhUGxheWVyOjpo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzQXZhaWxhYmxl
VmlkZW9GcmFtZSgpOwogfQogICAgIAordm9pZCBNZWRpYVBsYXllcjo6cHJlcGFyZUZvclJlbmRl
cmluZygpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOwor
fQorICAgIAogYm9vbCBNZWRpYVBsYXllcjo6Y2FuTG9hZFBvc3RlcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+Y2FuTG9hZFBvc3RlcigpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gNjQ3OTIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYs
NyBAQCBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1lZGlhUGxheWVyQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudDsgfQogCiAgICAgYm9vbCBoYXNBdmFp
bGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7
CiAKICAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFBvc3Rlcihj
b25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAkocmV2aXNpb24gNjQ3OTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBt
b3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247IH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgeyB9CisKIH07CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gNjQ3OTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVAKIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyKTsKIAotCiAgICAgdm9pZCByZXBhaW50KCk7CiAgICAgdm9pZCBsb2FkU3RhdGVDaGFu
Z2VkKCk7CiAgICAgdm9pZCByYXRlQ2hhbmdlZCgpOwpAQCAtMTI3LDYgKzEyNiw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwor
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBzdXBwb3J0c0Fj
Y2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Q7CkBAIC0xNzAsNyArMTcxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNhY2hlTW92aWVTY2FsZSgpOwogICAgIGJvb2wgbWV0YURhdGFBdmFpbGFibGUo
KSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYgbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVy
OjpIYXZlTWV0YWRhdGE7IH0KIAotICAgIGJvb2wgaXNSZWFkeUZvclJlbmRlcmluZygpIGNvbnN0
OworICAgIGJvb2wgaXNSZWFkeUZvclZpZGVvU2V0dXAoKSBjb25zdDsKICAgICAKICAgICBNZWRp
YVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWluUHRyPFFUTW92aWU+IG1fcXRNb3ZpZTsKQEAg
LTE5Nyw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNVbnN1cHBvcnRlZFRyYWNr
czsKICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduOwogICAgIGJvb2wgbV9kZWxheWluZ0xv
YWQ7CisgICAgYm9vbCBtX2lzQWxsb3dlZFRvUmVuZGVyOwogI2lmIERSQVdfRlJBTUVfUkFURQog
ICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdGFy
dGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiA2NDc5MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRp
YVBsYXllclByaXZhdGUoTQogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9oYXNVbnN1
cHBvcnRlZFRyYWNrcyhmYWxzZSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQor
ICAgICwgbV9pc0FsbG93ZWRUb1JlbmRlcihmYWxzZSkKICNpZiBEUkFXX0ZSQU1FX1JBVEUKICAg
ICAsIG1fZnJhbWVDb3VudFdoaWxlUGxheWluZygwKQogICAgICwgbV90aW1lU3RhcnRlZFBsYXlp
bmcoMCkKQEAgLTQ5NSw3ICs0OTYsNyBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlhUmVuZGVy
aW5nTW9kZSBNCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRVcFZpZGVvUmVuZGVyaW5n
KCkKIHsKLSAgICBpZiAoIWlzUmVhZHlGb3JSZW5kZXJpbmcoKSkKKyAgICBpZiAoIWlzUmVhZHlG
b3JWaWRlb1NldHVwKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1lZGlhUmVuZGVyaW5nTW9k
ZSBjdXJyZW50TW9kZSA9IGN1cnJlbnRSZW5kZXJpbmdNb2RlKCk7CkBAIC01MTksMTAgKzUyMCw5
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRVcFZpZGVvUmVuZGUKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElm
IHVzaW5nIGEgbW92aWUgbGF5ZXIsIGluZm9ybSB0aGUgY2xpZW50IHNvIHRoZSBjb21wb3NpdGlu
ZyB0cmVlIGlzIHVwZGF0ZWQuCiAgICAgaWYgKGN1cnJlbnRNb2RlID09IE1lZGlhUmVuZGVyaW5n
TW92aWVMYXllciB8fCBwcmVmZXJyZWRNb2RlID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcikK
ICAgICAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUmVuZGVy
aW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwotI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjp0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCkKQEAgLTkxNSwxMSArOTE1LDI2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpjYWNoZU1vdmllU2NhbGUKICAgICAgICAgbV9zY2FsZUZh
Y3Rvci5zZXRIZWlnaHQoaW5pdGlhbFNpemUuaGVpZ2h0IC8gbmF0dXJhbFNpemUuaGVpZ2h0KTsK
IH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzUmVhZHlGb3JSZW5kZXJpbmcoKSBjb25z
dAorYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzUmVhZHlGb3JWaWRlb1NldHVwKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9yZWFkeVN0YXRlID49IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEg
JiYgbV9wbGF5ZXItPnZpc2libGUoKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBy
ZXBhcmVGb3JSZW5kZXJpbmcoKQoreworICAgIGlmIChtX2lzQWxsb3dlZFRvUmVuZGVyKQorICAg
ICAgICByZXR1cm47CisgICAgbV9pc0FsbG93ZWRUb1JlbmRlciA9IHRydWU7CisKKyAgICBpZiAo
IWhhc1NldFVwVmlkZW9SZW5kZXJpbmcoKSkKKyAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygp
OworCisgICAgLy8gSWYgdXNpbmcgYSBtb3ZpZSBsYXllciwgaW5mb3JtIHRoZSBjbGllbnQgc28g
dGhlIGNvbXBvc2l0aW5nIHRyZWUgaXMgdXBkYXRlZC4gVGhpcyBpcyBjcnVjaWFsIGlmIHRoZSBt
b3ZpZQorICAgIC8vIGhhcyBhIHBvc3RlciwgYXMgaXQgd2lsbCBtb3N0IGxpa2VseSBub3QgaGF2
ZSBhIGxheWVyIGFuZCB3ZSB3aWxsIG5vdyBiZSByZW5kZXJpbmcgZnJhbWVzIHRvIHRoZSBtb3Zp
ZSBsYXllci4KKyAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmlu
Z01vdmllTGF5ZXIgfHwgcHJlZmVycmVkUmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5n
TW92aWVMYXllcikKKyAgICAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlh
UGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOworfQorCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIHsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlIG9sZE5ldHdvcmtTdGF0ZSA9IG1fbmV0d29ya1N0YXRlOwpAQCAtMTAwOSw3ICsxMDI0LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoIWhhc1NldFVwVmlkZW9SZW5kZXJpbmcoKSkKKyAgICBpZiAoaXNSZWFk
eUZvclZpZGVvU2V0dXAoKSAmJiAhaGFzU2V0VXBWaWRlb1JlbmRlcmluZygpKQogICAgICAgICBz
ZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAKICAgICBpZiAoc2Vla2luZygpKQpAQCAtMTQ0Myw4ICsx
NDU4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNhd1Vuc3VwcG9ydGVkVAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBw
b3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QKIHsKLSAgICAvLyBXaGVuIGluIHRoZSBt
ZWRpYSBkb2N1bWVudCB3ZSByZW5kZXIgdmlhIFFUTW92aWVWaWV3LCB3aGljaCBpcyBhbHJlYWR5
IGFjY2VsZXJhdGVkLgotICAgIHJldHVybiBpc1JlYWR5Rm9yUmVuZGVyaW5nKCkgJiYgZ2V0UVRN
b3ZpZUxheWVyQ2xhc3MoKSAhPSBOaWwgJiYgIW1fcGxheWVyLT5pbk1lZGlhRG9jdW1lbnQoKTsK
KyAgICAvLyBBbHNvIGRvbid0IGNsYWltIHRvIHN1cHBvcnQgYWNjZWxlcmF0ZWQgcmVuZGVyaW5n
IHdoZW4gaW4gdGhlIG1lZGlhIGRvY3VtZW50LCBhcyB3ZSB3aWxsIHRoZW4gcmVuZGVyIAorICAg
IC8vIHZpYSBRVE1vdmllVmlldyB3aGljaCBpcyBhbHJlYWR5IGFjY2VsZXJhdGVkLgorICAgIHJl
dHVybiBpc1JlYWR5Rm9yVmlkZW9TZXR1cCgpICYmIGdldFFUTW92aWVMYXllckNsYXNzKCkgIT0g
TmlsICYmICFtX3BsYXllci0+aW5NZWRpYURvY3VtZW50KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDY0NzkyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzU2LDcgKzc1Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50
ZWQKIAogICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBvcHRpbWl6ZSBjYXNlcyB3aGVyZSB0aGUgaW1h
Z2UsIHZpZGVvIG9yIGNhbnZhcyBpcyBrbm93biB0byBmaWxsIHRoZSBib3JkZXIgYm94IGVudGly
ZWx5LAogICAgIC8vIGFuZCBzZXQgYmFja2dyb3VuZCBjb2xvciBvbiB0aGUgbGF5ZXIgaW4gdGhh
dCBjYXNlLCBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYmFja2luZyBzdG9yZSBhbmQgcGFpbnRpbmcu
Ci0gICAgaWYgKHJlbmRlcmVyKCktPmlzVmlkZW8oKSB8fCBpczNEQ2FudmFzKHJlbmRlcmVyKCkp
KQorICAgIGlmICgocmVuZGVyZXIoKS0+aXNWaWRlbygpICYmIHRvUmVuZGVyVmlkZW8ocmVuZGVy
ZXIoKSktPnNob3VsZERpc3BsYXlWaWRlbygpKSB8fCBpczNEQ2FudmFzKHJlbmRlcmVyKCkpKQog
ICAgICAgICByZXR1cm4gaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQocmVuZGVyZXIoKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gNjQ3OTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYzLDcgKzExNjMs
NyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKSB7CiAgICAgICAgIFJlbmRlclZp
ZGVvKiB2aWRlbyA9IHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpOwotICAgICAgICByZXR1cm4gY2Fu
QWNjZWxlcmF0ZVZpZGVvUmVuZGVyaW5nKHZpZGVvKTsKKyAgICAgICAgcmV0dXJuIHZpZGVvLT5z
aG91bGREaXNwbGF5VmlkZW8oKSAmJiBjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcodmlkZW8p
OwogICAgIH0KICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBlbHNlIGlm
IChyZW5kZXJlci0+aXNSZW5kZXJQYXJ0KCkpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRl
by5jcHAJKHJldmlzaW9uIDY0NzkyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDEyIEBAIEludFJlY3QgUmVuZGVyVmlk
ZW86OnZpZGVvQm94KCkgY29uc3QKIAogICAgIHJldHVybiByZW5kZXJCb3g7CiB9Ci0gICAgCisK
K2Jvb2wgUmVuZGVyVmlkZW86OnNob3VsZERpc3BsYXlWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0
dXJuICF2aWRlb0VsZW1lbnQoKS0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCk7Cit9CisKIHZv
aWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0
eCwgaW50IHR5KQogewogICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllciA9IHBsYXllcigpOwpA
QCAtMTc0LDYgKzE3OSw3IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJ
bmYKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICByZWN0Lm1v
dmUodHgsIHR5KTsKKwogICAgIGlmIChkaXNwbGF5aW5nUG9zdGVyKQogICAgICAgICBwYWludElu
dG9SZWN0KHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsKICAgICBlbHNlCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmgJKHJldmlzaW9uIDY0NzkyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGxheVZpZGVvKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgaW5saW5lIEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQ4NjcpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxMC0wOC0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVE1MNSAidmlkZW8i
IHRhZyB3aXRoIHBvc3RlciBmcmFtZSBkZWZpbmVkICJmbGFzaGVzIiByaWdodCBiZWZvcmUgbW92
aWUgZGlzcGxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM3NTkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjUwNTYxPgorCisgICAgICAgIElm
IGEgdmlkZW8gZWxlbWVudCBoYXMgYSBwb3N0ZXIgZnJhbWUsIGRpc3BsYXkgaXQgdW50aWwgdGhl
IHBsYXliYWNrIGlzIHJlcXVlc3RlZCBvciB0aGUgbW92aWUncworICAgICAgICB0aW1lIGlzIGNo
YW5nZWQuIFRlc3QgdGhpcyBieSBlbnN1cmluZyB0aGF0IGFuIGVsZW1lbnQgd2l0aCBhIHBvc3Rl
ciBkb2Vzbid0IGhhdmUgbGF5ZXJzIHdoaWxlCisgICAgICAgIGFuZCBlbGVtZW50IHdpdGggb25l
IGRvZXMuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIu
aHRtbDogQWRkZWQuCisKIDIwMTAtMDgtMDYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVwZGF0ZSBjaHJvbWl1bSB0ZXN0IHJlc3VsdHMuCkluZGV4OiBMYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRl
by1wb3N0ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitBIDx2
aWRlbz4gc2hvdWxkIG5vdCBoYXZlIGEgbGF5ZXIgdW50aWwgcGxheWJhY2sgYmVnaW5zLgorVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIG1hbnVhbGx5LCBpdCByZXF1aXJlcyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5sYXllclRyZWVBc1RleHQuCisKK05vIHNyYywgbm8gcG9zdGVyIAorwqDCoFBBU1M6
IHdhbnRzIGxheWVycyA9IGZhbHNlLCBoYXMgbGF5ZXJzID0gZmFsc2UKKworRGlzcGxheWluZyBw
b3N0ZXIgCivCoMKgUEFTUzogd2FudHMgbGF5ZXJzID0gZmFsc2UsIGhhcyBsYXllcnMgPSBmYWxz
ZQorCitQbGF5aW5nIG1vdmllIAorwqDCoFBBU1M6IHdhbnRzIGxheWVycyA9IHRydWUsIGhhcyBs
YXllcnMgPSB0cnVlCisKKwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tcG9zdGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlk
ZW8vdmlkZW8tcG9zdGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jb21wb3Np
dGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorPCFET0NUWVBFPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5WaWRlbyB3
aXRoIHBvc3RlcjwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAgIHZhciBj
b3VudCA9IDA7CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgKz0gc3RyICsgIjxicj4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBoYXNMYXllcnMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRU
ZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKSAhPSAiIjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNr
TGF5ZXJzKHByZWZpeCwgd2FudHNMYXllcnMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdmFyIGxheWVycyA9IGhhc0xheWVycygpOworICAgICAgICAgICAgICAgIGxvZyhwcmVmaXgg
KyAiIDxicj4mbmJzcDsmbmJzcDsiICsgKHdhbnRzTGF5ZXJzID09IGxheWVycyA/ICJQQVNTIiA6
ICJGQUlMIikgKyAiOiB3YW50cyBsYXllcnMgPSAiICsgd2FudHNMYXllcnMgKyAiLCBoYXMgbGF5
ZXJzID0gIiArIGxheWVycyk7CisgICAgICAgICAgICAgICAgbG9nKCIiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbGF5ZXJUZXN0KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
dmlkZW8nKVswXTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgImxvYWQiOgorICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMYXllcnMoIk5vIHNyYywgbm8gcG9zdGVyIiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gIi4uL3Jlc291cmNlcy92aWRlby5t
cDQiCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlby5wb3N0ZXIgPSAiLi4vcmVzb3VyY2Vz
L2FwcGxlLmpwZyI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAiY2FucGxheXRocm91Z2giOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tMYXllcnMoIkRpc3BsYXlpbmcgcG9zdGVyIiwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW8ucGxheSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgInBsYXlpbmciOgorICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMYXllcnMoIlBsYXlpbmcgbW92aWUiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbGF5ZXJUZXN0LCBm
YWxzZSk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAK
KyAgICAgICAgPHZpZGVvIG9uY2FucGxheXRocm91Z2g9ImxheWVyVGVzdCgpIiBvbnBsYXlpbmc9
ImxheWVyVGVzdCgpIj48L3ZpZGVvPgorICAgICAgICAKKyAgICAgICAgPHA+QSAmbHQ7dmlkZW8m
Z3Q7IHNob3VsZCBub3QgaGF2ZSBhIGxheWVyIHVudGlsIHBsYXliYWNrIGJlZ2lucy48YnI+Cisg
ICAgICAgIFRoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biBtYW51YWxseSwgaXQgcmVxdWlyZXMgbGF5
b3V0VGVzdENvbnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0LjwvcD4KKyAgICAgICAgPHAgaWQ9InJl
c3VsdCI+PC9wPgorICAgIAorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="52191"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>