<?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>45333</bug_id>
          
          <creation_ts>2010-09-07 16:08:35 -0700</creation_ts>
          <short_desc>Movies with track or movie matrices don&apos;t display in &lt;video&gt; elements (Safari 5/Windows)</short_desc>
          <delta_ts>2010-09-10 23:26:56 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275367</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-07 16:08:35 -0700</bug_when>
    <thetext>Movies shot with the iPhone 4 front camera don&apos;t display in Safari 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275369</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-07 16:08:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/8133126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275433</commentid>
    <comment_count>2</comment_count>
      <attachid>66798</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-07 17:31:04 -0700</bug_when>
    <thetext>Created attachment 66798
Video-rotation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275435</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-07 17:32:39 -0700</bug_when>
    <thetext>Attachment 66798 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:21:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:23:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:25:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:27:  Line contains tab character.  [whitespace/tab] [5]
WebCore/platform/graphics/win/QTTrack.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 11 in 11 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>276724</commentid>
    <comment_count>4</comment_count>
      <attachid>67090</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-09 13:50:57 -0700</bug_when>
    <thetext>Created attachment 67090
Video-rotation

Fixed those blasted tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276727</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 13:54:08 -0700</bug_when>
    <thetext>Attachment 67090 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/win/QTTrack.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 11 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>276752</commentid>
    <comment_count>6</comment_count>
      <attachid>67090</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-09 14:13:30 -0700</bug_when>
    <thetext>Comment on attachment 67090
Video-rotation

I think you should initialize m_movieTransform in the constructor. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277671</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-10 23:26:56 -0700</bug_when>
    <thetext>Committed r67285: &lt;http://trac.webkit.org/changeset/67285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66798</attachid>
            <date>2010-09-07 17:31:04 -0700</date>
            <delta_ts>2010-09-09 13:50:57 -0700</delta_ts>
            <desc>Video-rotation</desc>
            <filename>Video-rotation.patch</filename>
            <type>text/plain</type>
            <size>24075</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
aWVzIHdpdGggdHJhY2sgb3IgbW92aWUgbWF0cmljZXMgZG9uJ3QgZGlzcGxheSBpbiA8dmlkZW8+
IGVsZW1lbnRzIChTYWZhcmkgNS9XaW5kb3dzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzMzMKKwkJcmRhcjovL3Byb2JsZW0vODEzMzMxMjYKKwkJ
CisJCVF1aWNrVGltZSB3aWxsIHJlZnVzZSB0byBkZWNvZGUgdmlkZW8gZnJhbWVzIGZvciBtb3Zp
ZXMgd2hvc2UgbW92aWUgYW5kIHRyYWNrIG1hdHJpY2VzIAorCQlhcmUgbm9uLWlkZW50aXR5LiAg
VG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLCBleHRyYWN0IHRoZSBtb3ZpZSBhbmQgdHJhY2sg
bWF0cmljZXMgCisJCWZyb20gdGhlIG1vdmllLCBhbmQgc2V0IHRoYXQgbWF0cml4IG9uIHRoZSB2
aWRlbyBsYXllciBpbnN0ZWFkLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdp
bi52Y3Byb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5b3V0Q2xpZW50OjpMYXlvdXRD
bGllbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQ6OkxheW91dENsaWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6
CisJCQlMYXlvdXQgdGhlIHZpZGVvIGxheWVyIGFjY29yZGluZyB0byBpdHMgc3VwZXJsYXllcidz
IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1
YWxDb250ZXh0OjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6
OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dDo6bmF0dXJhbFNpemUpOgorCQkJQXBwbHkgdGhlIG1fbW92aWVU
cmFuc2Zvcm0gdG8gdGhlIHNpemUgcmVwb3J0ZWQgYnkgUVRNb3ZpZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJldHJpZXZlQW5k
UmVzZXRNb3ZpZVRyYW5zZm9ybSk6CisJCQlDYWxjdWxhdGUgbV9tb3ZpZVRyYW5zZm9ybSBhbmQg
cmVzZXQgdGhlIG1vdmllIGFuZCB0cmFjayBtYXRyaWNlcyBpbiB0aGUgbW92aWUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpjcmVh
dGVMYXllckZvck1vdmllKToKKwkJCUNyZWF0ZSB0d28gbmVzdGVkIGxheWVycyBpbnN0ZWFkIG9m
IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OmRlc3Ryb3lMYXllckZvck1vdmllKToKKwkJCU1ha2Ugc3VyZSB0byByZW1vdmUg
bV9xdFZpZGVvTGF5ZXIgZnJvbSBhbnkgc3VwZXJsYXllciBiZWZvcmUgZGVyZWZlcmVuY2luZyBp
dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHA6CisgICAgICAg
IChRVE1vdmllOjp2aWRlb1RyYWNrcyk6IEFkZGVkLgorICAgICAgICAoUVRNb3ZpZTo6Z2V0VHJh
bnNmb3JtKTogQWRkZWQuCisgICAgICAgIChRVE1vdmllOjpzZXRUcmFuc2Zvcm0pOiBBZGRlZC4K
KyAgICAgICAgKFFUTW92aWU6OnJlc2V0VHJhbnNmb3JtKTogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUVRUcmFjay5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9RVFRyYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NB
Q0ZMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0Qm91bmRzKTog
Q2FsbCBzZXROZWVkc0xheW91dCgpIGlmIGEgbGF5b3V0Q2xpZW50IGlzIHByZXNlbnQuCisgICAg
ICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0RnJhbWUpOiBDYWxsIHNldE5lZWRzTGF5b3V0
KCkgaWYgYSBsYXlvdXRDbGllbnQgaXMgcHJlc2VudC4KKwogMjAxMC0wOS0wNyAgVmFuZ2VsaXMg
S29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9RVE1vdmllV2luLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNw
cm9qCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdp
bi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw2ICszNDEsMTAgQEAKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxRVFBpeGVsQnVmZmVyLmNwcCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHdpblxRVFRyYWNrLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCTwvRmls
dGVyPg0KIAkJPEZpbHRlcg0KIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCkBAIC0zNzUsNiArMzc5
LDEwIEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cUVRQaXhl
bEJ1ZmZlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFFUVHJhY2suaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KIAkJCU5hbWU9IlJlc291cmNlIEZpbGVz
Ig0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQu
Y3BwCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxBc3NlcnRN
YWNyb3MuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CisjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHRmxvYXQuaD4KICNpbmNsdWRlIDxXaW5pbmV0Lmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTk3LDYgKzk4
LDM5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dCogbV9wYXJlbnQ7CiB9OworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQgOiBwdWJsaWMgV0tDQUNGTGF5ZXJM
YXlvdXRDbGllbnQgeworcHVibGljOgorICAgIExheW91dENsaWVudChNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7fQor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKik7Citw
cml2YXRlOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQqIG1f
cGFyZW50OworfTsKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0OjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxh
eWVyKQoreworICAgIEFTU0VSVChtX3BhcmVudCk7CisgICAgQVNTRVJUKG1fcGFyZW50LT5tX3Ry
YW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0gbGF5ZXIpOworCisgICAgQ0dTaXplIHBh
cmVudFNpemUgPSBsYXllci0+Ym91bmRzKCkuc2l6ZTsKKyAgICBDR1NpemUgbmF0dXJhbFNpemUg
PSBtX3BhcmVudC0+bmF0dXJhbFNpemUoKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgcmF0aW8g
b2YgdGhlc2UgdHdvIHNpemVzIGFuZCB1c2UgdGhhdCByYXRpbyB0byBzY2FsZSB0aGUgcXRWaWRl
b0xheWVyOgorICAgIENHU2l6ZSByYXRpbyA9IENHU2l6ZU1ha2UocGFyZW50U2l6ZS53aWR0aCAv
IG5hdHVyYWxTaXplLndpZHRoLCBwYXJlbnRTaXplLmhlaWdodCAvIG5hdHVyYWxTaXplLmhlaWdo
dCk7CisKKyAgICBpbnQgdmlkZW9XaWR0aCA9IDA7CisgICAgaW50IHZpZGVvSGVpZ2h0ID0gMDsK
KyAgICBtX3BhcmVudC0+bV9tb3ZpZS0+Z2V0TmF0dXJhbFNpemUodmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpOworICAgIENHUmVjdCB2aWRlb0JvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwgdmlkZW9X
aWR0aCAqIHJhdGlvLndpZHRoLCB2aWRlb0hlaWdodCAqIHJhdGlvLmhlaWdodCk7CisgICAgQ0dQ
b2ludCB2aWRlb0FuY2hvciA9IG1fcGFyZW50LT5tX3F0VmlkZW9MYXllci0+YW5jaG9yUG9pbnQo
KTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBwYXJl
bnQncyBzaXplOgorICAgIENHUG9pbnQgcG9zaXRpb24gPSBDR1BvaW50TWFrZShwYXJlbnRTaXpl
LndpZHRoICogMC41IC0gdmlkZW9Cb3VuZHMuc2l6ZS53aWR0aCAqICgwLjUgLSB2aWRlb0FuY2hv
ci54KSwKKyAgICAgICAgcGFyZW50U2l6ZS5oZWlnaHQgKiAwLjUgLSB2aWRlb0JvdW5kcy5zaXpl
LmhlaWdodCAqICgwLjUgLSB2aWRlb0FuY2hvci55KSk7IAorCisgICAgbV9wYXJlbnQtPm1fcXRW
aWRlb0xheWVyLT5zZXRCb3VuZHModmlkZW9Cb3VuZHMpOworICAgIG1fcGFyZW50LT5tX3F0Vmlk
ZW9MYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworfQogI2VuZGlmCiAKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OlZpc3VhbENvbnRleHRDbGllbnQg
OiBwdWJsaWMgUVRNb3ZpZVZpc3VhbENvbnRleHRDbGllbnQgewpAQCAtMTM3LDggKzE3MSwxMCBA
QCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0CiAgICAgLCBtX21vdmll
Q2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpNb3Zp
ZUNsaWVudCh0aGlzKSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBt
X2xheWVyQ2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
OjpMYXllckNsaWVudCh0aGlzKSkKKyAgICAsIG1fbGF5b3V0Q2xpZW50KG5ldyBNZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQodGhpcykpCiAjZW5k
aWYKICAgICAsIG1fdmlzdWFsQ29udGV4dENsaWVudChuZXcgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dDo6VmlzdWFsQ29udGV4dENsaWVudCh0aGlzKSkKKyAgICAsIG1f
bW92aWVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSkKIHsKIH0KIApAQCAtMTY5
LDcgKzIwNSw3IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW0KICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9xdFZpZGVvTGF5ZXIgPyBtX3F0VmlkZW9MYXllci0+cGxhdGZvcm1MYXll
cigpIDogMDsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXllciA/IG1fdHJhbnNmb3JtTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSA6IDA7CiB9CiAjZW5kaWYKIApAQCAtNDA0LDcgKzQ0MCw5IEBAIElu
dFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWEKICAgICBpbnQgd2lkdGg7CiAg
ICAgaW50IGhlaWdodDsKICAgICBtX21vdmllLT5nZXROYXR1cmFsU2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKLSAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBDR1NpemUgb3JpZ2lu
YWxTaXplID0ge3dpZHRoLCBoZWlnaHR9OworICAgIENHU2l6ZSB0cmFuc2Zvcm1lZFNpemUgPSBD
R1NpemVBcHBseUFmZmluZVRyYW5zZm9ybShvcmlnaW5hbFNpemUsIG1fbW92aWVUcmFuc2Zvcm0p
OworICAgIHJldHVybiBJbnRTaXplKENHRkFicyh0cmFuc2Zvcm1lZFNpemUud2lkdGgpLCBDR0ZB
YnModHJhbnNmb3JtZWRTaXplLmhlaWdodCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Omhhc1ZpZGVvKCkgY29uc3QKQEAgLTc2Myw3ICs4MDEs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiAgICAgICAgIGlm
ICghYnVmZmVyLnBpeGVsQnVmZmVyUmVmKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgV0tDQUNGTGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V0tDQUNGTGF5ZXIqPihtX3F0Vmlk
ZW9MYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgV0tDQUNGTGF5ZXIqIGxheWVyID0g
bV9xdFZpZGVvTGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgaWYgKCFidWZmZXIubG9ja0Jhc2VBZGRy
ZXNzKCkpIHsKICAgICAgICAgICAgIGlmIChyZXF1aXJlZERsbHNBdmFpbGFibGUoKSkgewpAQCAt
MTAxNyw2ICsxMDU1LDM4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q28KICNlbmRpZgogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQ6OnJldHJpZXZlQW5kUmVzZXRNb3ZpZVRyYW5zZm9ybSgpCit7CisgICAgLy8gRmlyc3Qg
dGhpbmdzIGZpcnN0LCByZXNldCB0aGUgdG90YWwgbW92aWUgdHJhbnNmb3JtIHNvIHRoYXQKKyAg
ICAvLyB3ZSBjYW4gYmFpbCBvdXQgZWFybHk6CisgICAgbV9tb3ZpZVRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtSWRlbnRpdHk7CisKKyAgICBpZiAoIW1fbW92aWUgfHwgIW1fbW92aWUtPmhh
c1ZpZGVvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgdHJpY2sgd2lsbCBvbmx5
IHdvcmsgb24gbW92aWVzIHdpdGggYSBzaW5nbGUgdmlkZW8gdHJhY2ssCisgICAgLy8gc28gYmFp
bCBvdXQgZWFybHkgaWYgdGhlIHZpZGVvIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgKG9yIHplcm8p
CisgICAgLy8gdmlkZW8gdHJhY2tzLgorICAgIFFUVHJhY2tBcnJheSB2aWRlb1RyYWNrcyA9IG1f
bW92aWUtPnZpZGVvVHJhY2tzKCk7CisgICAgaWYgKHZpZGVvVHJhY2tzLnNpemUoKSAhPSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBRVFRyYWNrKiB0cmFjayA9IHZpZGVvVHJhY2tzWzBdLmdl
dCgpOworICAgIEFTU0VSVCh0cmFjayk7CisKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtb3ZpZVRy
YW5zZm9ybSA9IG1fbW92aWUtPmdldFRyYW5zZm9ybSgpOworICAgIGlmICghQ0dBZmZpbmVUcmFu
c2Zvcm1FcXVhbFRvVHJhbnNmb3JtKG1vdmllVHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5KSkKKyAgICAgICAgbV9tb3ZpZS0+cmVzZXRUcmFuc2Zvcm0oKTsKKworICAgIENHQWZm
aW5lVHJhbnNmb3JtIHRyYWNrVHJhbnNmb3JtID0gdHJhY2stPmdldFRyYW5zZm9ybSgpOworICAg
IGlmICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKHRyYWNrVHJhbnNmb3JtLCBD
R0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KSkKKyAgICAgICAgdHJhY2stPnJlc2V0VHJhbnNmb3Jt
KCk7CisKKyAgICAvLyBNdWx0aXBseSB0aGUgdHdvIHRyYW5zZm9ybXMgdG9nZXRoZXIsIHRha2lu
ZyBjYXJlIHRvIAorICAgIC8vIGRvIHNvIGluIHRoZSBjb3JyZWN0IG9yZGVyLCB0cmFjayAqIG1v
dmllID0gZmluYWw6CisgICAgbV9tb3ZpZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29u
Y2F0KHRyYWNrVHJhbnNmb3JtLCBtb3ZpZVRyYW5zZm9ybSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6Y3JlYXRlTGF5ZXJGb3JNb3ZpZSgpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTAyOCwxNyArMTA5OCwzNSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiAgICAgLy8gQ3JlYXRl
IGEgR3JhcGhpY3NMYXllciB0aGF0IHdvbid0IGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhl
IHJlbmRlciB0cmVlLCBidXQgd2lsbCB1c2VkIAogICAgIC8vIGFzIGEgd3JhcHBlciBmb3IgYSBX
S0NBQ0ZMYXllciB3aGljaCBnZXRzIGluc2VydGVkIGFzIHRoZSBjb250ZW50IGxheWVyIG9mIHRo
ZSB2aWRlbyAKICAgICAvLyByZW5kZXJlcidzIEdyYXBoaWNzTGF5ZXIuCi0gICAgbV9xdFZpZGVv
TGF5ZXIuc2V0KG5ldyBHcmFwaGljc0xheWVyQ0FDRihtX2xheWVyQ2xpZW50LmdldCgpKSk7Ci0g
ICAgaWYgKCFtX3F0VmlkZW9MYXllcikKKyAgICBtX3RyYW5zZm9ybUxheWVyLnNldChuZXcgR3Jh
cGhpY3NMYXllckNBQ0YobV9sYXllckNsaWVudC5nZXQoKSkpOworICAgIGlmICghbV90cmFuc2Zv
cm1MYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWFyayB0aGUgbGF5ZXIgYXMgZHJh
d2luZyBpdHNlbGYsIGFuY2hvcmVkIGluIHRoZSB0b3AgbGVmdCwgYW5kIGJvdHRvbS11cC4KLSAg
ICBtX3F0VmlkZW9MYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIG1fcXRWaWRlb0xh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7Ci0gICAgbV9xdFZpZGVvTGF5ZXIt
PnNldENvbnRlbnRzT3JpZW50YXRpb24oR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGlu
YXRlc0JvdHRvbVVwKTsKKyAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFs
c2UpOworICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgp
KTsKKyAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRDb250ZW50c09yaWVudGF0aW9uKEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCk7CisgICAgbV90cmFuc2Zvcm1M
YXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRMYXlvdXRDbGllbnQobV9sYXlvdXRDbGllbnQuZ2V0
KCkpOworCisgICAgbV9xdFZpZGVvTGF5ZXIgPSBXS0NBQ0ZMYXllcjo6Y3JlYXRlKFdLQ0FDRkxh
eWVyOjpMYXllcik7CisgICAgaWYgKCFtX3F0VmlkZW9MYXllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9ybShtX21vdmllVHJhbnNm
b3JtLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KSkKKyAgICAgICAgcmV0cmlldmVBbmRSZXNl
dE1vdmllVHJhbnNmb3JtKCk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdCA9IG1fbW92aWVUcmFu
c2Zvcm07CisKKyAgICAvLyBSZW1vdmUgdGhlIHRyYW5zbGF0aW9uIHBvcnRpb24gb2YgdGhlIHRy
YW5zZm9ybSwgc2luY2Ugd2Ugd2lsbCBhbHdheXMgcm90YXRlIGFib3V0CisgICAgLy8gdGhlIGxh
eWVyJ3MgY2VudGVyIHBvaW50LiAgSW4gb3VyIGxpbWl0ZWQgdXNlLWNhc2UgKGEgc2luZ2xlIHZp
ZGVvIHRyYWNrKSwgdGhpcyBpcworICAgIC8vIHNhZmU6CisgICAgdC50eCA9IHQudHkgPSAwOwor
ICAgIG1fcXRWaWRlb0xheWVyLT5zZXRUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRE1ha2VBZmZpbmVU
cmFuc2Zvcm0odCkpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcXRWaWRlb0xheWVyLT5zZXRO
YW1lKCJWaWRlbyBsYXllciIpOwogI2VuZGlmCisgICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZv
cm1MYXllcigpLT5hZGRTdWJsYXllcihtX3F0VmlkZW9MYXllci5nZXQoKSk7CisgICAgbV90cmFu
c2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXROZWVkc0xheW91dCgpOwogICAgIC8vIFRo
ZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
R3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNlbmRpZgogCkBAIC0xMDUyLDggKzExNDAs
MTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpkZXN0cm95TGF5ZXJGb3JNb3Zp
ZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX3F0Vmlk
ZW9MYXllcikKKyAgICBpZiAobV9xdFZpZGVvTGF5ZXIpIHsKKyAgICAgICAgbV9xdFZpZGVvTGF5
ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CiAgICAgICAgIG1fcXRWaWRlb0xheWVyID0gMDsK
KyAgICB9CisKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikKKyAgICAgICAgbV90cmFuc2Zvcm1M
YXllciA9IDA7CiAKICAgICBpZiAobV9pbWFnZVF1ZXVlKQogICAgICAgICBtX2ltYWdlUXVldWUg
PSAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQu
aAkocmV2aXNpb24gNjY2ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitjbGFzcyBXS0NBQ0ZMYXllcjsKIGNsYXNzIFdLQ0FJ
bWFnZVF1ZXVlOwogI2VuZGlmCiAKQEAgLTE1NCwxNiArMTU1LDIzIEBAIHByaXZhdGU6CiAgICAg
Y2xhc3MgTGF5ZXJDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyQ2xpZW50OwogICAgIE93
blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKKworICAgIGNsYXNzIExheW91dENsaWVu
dDsKKyAgICBmcmllbmQgY2xhc3MgTGF5b3V0Q2xpZW50OworICAgIE93blB0cjxMYXlvdXRDbGll
bnQ+IG1fbGF5b3V0Q2xpZW50OwogI2VuZGlmCiAKICAgICBjbGFzcyBWaXN1YWxDb250ZXh0Q2xp
ZW50OwogICAgIGZyaWVuZCBjbGFzcyBWaXN1YWxDb250ZXh0Q2xpZW50OwogICAgIE93blB0cjxW
aXN1YWxDb250ZXh0Q2xpZW50PiBtX3Zpc3VhbENvbnRleHRDbGllbnQ7CiAKKyAgICB2b2lkIHJl
dHJpZXZlQW5kUmVzZXRNb3ZpZVRyYW5zZm9ybSgpOworCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxh
eWVyOwogICAgIFJlZlB0cjxRVE1vdmllPiBtX21vdmllOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9xdFZpZGVvTGF5ZXI7Cisg
ICAgUmVmUHRyPFdLQ0FDRkxheWVyPiBtX3F0VmlkZW9MYXllcjsKKyAgICBPd25QdHI8R3JhcGhp
Y3NMYXllcj4gbV90cmFuc2Zvcm1MYXllcjsKICAgICBPd25QdHI8V0tDQUltYWdlUXVldWU+IG1f
aW1hZ2VRdWV1ZTsKICNlbmRpZgogICAgIFJlZlB0cjxRVE1vdmllVmlzdWFsQ29udGV4dD4gbV92
aXN1YWxDb250ZXh0OwpAQCAtMTg1LDYgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1f
dGltZVN0YXJ0ZWRQbGF5aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdG9wcGVkUGxheWluZzsKICNl
bmRpZgorICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fbW92aWVUcmFuc2Zvcm07IAorCiB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllLmNwcAkocmV2aXNp
b24gNjY2ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUVRNb3ZpZVRhc2su
aCIKICNpbmNsdWRlICJRVE1vdmllV2luVGltZXIuaCIKKyNpbmNsdWRlIDxGaXhNYXRoLmg+CiAj
aW5jbHVkZSA8R1hNYXRoLmg+CiAjaW5jbHVkZSA8TW92aWVzLmg+CiAjaW5jbHVkZSA8UVRNTC5o
PgpAQCAtNjk2LDYgKzY5NywxNiBAQCBib29sIFFUTW92aWU6Omhhc0F1ZGlvKCkgY29uc3QKICAg
ICByZXR1cm4gKEdldE1vdmllSW5kVHJhY2tUeXBlKG1fcHJpdmF0ZS0+bV9tb3ZpZSwgMSwgQXVk
aW9NZWRpYUNoYXJhY3RlcmlzdGljLCBtb3ZpZVRyYWNrQ2hhcmFjdGVyaXN0aWMgfCBtb3ZpZVRy
YWNrRW5hYmxlZE9ubHkpKTsKIH0KIAorUVRUcmFja0FycmF5IFFUTW92aWU6OnZpZGVvVHJhY2tz
KCkgY29uc3QKK3sKKyAgICBRVFRyYWNrQXJyYXkgdHJhY2tzOworICAgIGxvbmcgdHJhY2tJbmRl
eCA9IDE7CisKKyAgICB3aGlsZSAoVHJhY2sgdGhlVHJhY2sgPSBHZXRNb3ZpZUluZFRyYWNrVHlw
ZShtX3ByaXZhdGUtPm1fbW92aWUsIHRyYWNrSW5kZXgrKywgVmlzdWFsTWVkaWFDaGFyYWN0ZXJp
c3RpYywgbW92aWVUcmFja0NoYXJhY3RlcmlzdGljIHwgbW92aWVUcmFja0VuYWJsZWRPbmx5KSkK
KyAgICAgICAgdHJhY2tzLmFwcGVuZChRVFRyYWNrOjpjcmVhdGUodGhlVHJhY2spKTsKKworICAg
IHJldHVybiB0cmFja3M7Cit9CiAKIGJvb2wgUVRNb3ZpZTo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBj
b25zdCAKIHsKQEAgLTgzMCw2ICs4NDEsNDUgQEAgdm9pZCBRVE1vdmllOjpnZXRTdXBwb3J0ZWRU
eXBlKHVuc2lnbmVkCiAgICAgCiB9CiAKK0NHQWZmaW5lVHJhbnNmb3JtIFFUTW92aWU6OmdldFRy
YW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV9tb3ZpZSk7CisgICAg
TWF0cml4UmVjb3JkIG0gPSB7MH07CisgICAgR2V0TW92aWVNYXRyaXgobV9wcml2YXRlLT5tX21v
dmllLCAmbSk7CisKKyAgICBBU1NFUlQoIW0ubWF0cml4WzBdWzJdKTsKKyAgICBBU1NFUlQoIW0u
bWF0cml4WzFdWzJdKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmlu
ZVRyYW5zZm9ybU1ha2UoCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzBdWzBdKSwKKyAgICAgICAg
Rml4MlgobS5tYXRyaXhbMF1bMV0pLAorICAgICAgICBGaXgyWChtLm1hdHJpeFsxXVswXSksCisg
ICAgICAgIEZpeDJYKG0ubWF0cml4WzFdWzFdKSwKKyAgICAgICAgRml4MlgobS5tYXRyaXhbMl1b
MF0pLAorICAgICAgICBGaXgyWChtLm1hdHJpeFsyXVsxXSkpOworICAgIHJldHVybiB0cmFuc2Zv
cm07Cit9CisKK3ZvaWQgUVRNb3ZpZTo6c2V0VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHQp
Cit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV9tb3ZpZSk7CisgICAgTWF0cml4UmVjb3JkIG0g
PSB7eworICAgICAgICB7WDJGaXgodC5hKSwgWDJGaXgodC5iKSwgMH0sCisgICAgICAgIHtYMkZp
eCh0LmMpLCBYMkZpeCh0LmQpLCAwfSwKKyAgICAgICAge1gyRml4KHQudHgpLCBYMkZpeCh0LnR5
KSwgZnJhY3QxfSwKKyAgICB9fTsKKworICAgIFNldE1vdmllTWF0cml4KG1fcHJpdmF0ZS0+bV9t
b3ZpZSwgJm0pOworICAgIG1fcHJpdmF0ZS0+Y2FjaGVNb3ZpZVNjYWxlKCk7Cit9CisKK3ZvaWQg
UVRNb3ZpZTo6cmVzZXRUcmFuc2Zvcm0oKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fbW92
aWUpOworICAgIFNldE1vdmllTWF0cml4KG1fcHJpdmF0ZS0+bV9tb3ZpZSwgMCk7CisgICAgbV9w
cml2YXRlLT5jYWNoZU1vdmllU2NhbGUoKTsKK30KKworCiBib29sIFFUTW92aWU6OmluaXRpYWxp
emVRdWlja1RpbWUoKSAKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuaAkocmV2aXNpb24gNjY2
ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDkgKzI2LDggQEAKICNpZm5kZWYgUVRNb3ZpZV9oCiAjZGVmaW5lIFFUTW92
aWVfaAogCi0jaW5jbHVkZSA8VW5pY29kZS5oPgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlFUVHJhY2suaCIKKyNpbmNsdWRlIDxX
VEYvVmVjdG9yLmg+CiAKICNpZmRlZiBRVE1PVklFV0lOX0VYUE9SVFMKICNkZWZpbmUgUVRNT1ZJ
RVdJTl9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCkBAIC0zOSw2ICszOCw3IEBACiBjbGFzcyBR
VE1vdmllOwogY2xhc3MgUVRNb3ZpZVByaXZhdGU7CiB0eXBlZGVmIHN0cnVjdCBNb3ZpZVR5cGUq
KiBNb3ZpZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxRVFRyYWNrPj4gUVRUcmFja0FycmF5Owog
CiBjbGFzcyBRVE1vdmllQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTk5LDEyICs5OSwxOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25z
dDsKIAorICAgIFFUVHJhY2tBcnJheSB2aWRlb1RyYWNrcygpIGNvbnN0OworCiAgICAgYm9vbCBo
YXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGNvdW50U3VwcG9ydGVkVHlwZXMoKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlKHVuc2lnbmVkIGluZGV4LCBjb25zdCBV
Q2hhciomIHN0ciwgdW5zaWduZWQmIGxlbik7CiAKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBnZXRU
cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9y
bSk7CisgICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOworCiAgICAgTW92aWUgZ2V0TW92aWVIYW5k
bGUoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1FUVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1FUVHJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUVRUcmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUVRU
cmFjay5oIgorCisjaW5jbHVkZSA8TW92aWVzLmg+CisjaW5jbHVkZSA8UVRNTC5oPgorCit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCitjbGFzcyBRVFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitwdWJsaWM6CisgICAgUVRUcmFja1ByaXZhdGUoKTsKKyAgICB+UVRUcmFja1ByaXZh
dGUoKTsKKworICAgIFFUVHJhY2sqIG1fdHJhY2s7CisgICAgVHJhY2sgbV90cmFja0hhbmRsZTsK
K307CisKK1FUVHJhY2tQcml2YXRlOjpRVFRyYWNrUHJpdmF0ZSgpCisgICAgOiBtX3RyYWNrKDAp
CisgICAgLCBtX3RyYWNrSGFuZGxlKDApCit7Cit9CisKK1FUVHJhY2tQcml2YXRlOjp+UVRUcmFj
a1ByaXZhdGUoKQoreworICAgIG1fdHJhY2tIYW5kbGUgPSAwOworfQorCitQYXNzUmVmUHRyPFFU
VHJhY2s+IFFUVHJhY2s6OmNyZWF0ZShUcmFjayB0cmFja0hhbmRsZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFFUVHJhY2sodHJhY2tIYW5kbGUpKTsKK30KKworUVRUcmFjazo6UVRUcmFj
ayhUcmFjayB0cmFja0hhbmRsZSkKKyAgICA6IG1fcHJpdmF0ZShuZXcgUVRUcmFja1ByaXZhdGUo
KSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fdHJhY2sgPSB0aGlzOworICAgIG1fcHJpdmF0ZS0+bV90
cmFja0hhbmRsZSA9IHRyYWNrSGFuZGxlOworfQorCitRVFRyYWNrOjp+UVRUcmFjaygpCit7Cisg
ICAgZGVsZXRlIG1fcHJpdmF0ZTsKK30KKworYm9vbCBRVFRyYWNrOjppc0VuYWJsZWQoKSBjb25z
dAoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fdHJhY2spOworICAgIHJldHVybiBHZXRUcmFj
a0VuYWJsZWQobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlKTsKK30KKwordm9pZCBRVFRyYWNrOjpz
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlLT5tX3RyYWNr
SGFuZGxlKTsKKyAgICBTZXRUcmFja0VuYWJsZWQobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlLCBl
bmFibGVkKTsKK30KKworQ0dBZmZpbmVUcmFuc2Zvcm0gUVRUcmFjazo6Z2V0VHJhbnNmb3JtKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlKTsKKyAgICBNYXRy
aXhSZWNvcmQgbSA9IHswfTsKKyAgICBHZXRUcmFja01hdHJpeChtX3ByaXZhdGUtPm1fdHJhY2tI
YW5kbGUsICZtKTsKKworICAgIEFTU0VSVCghbS5tYXRyaXhbMF1bMl0pOworICAgIEFTU0VSVCgh
bS5tYXRyaXhbMV1bMl0pOworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtTWFrZSgKKyAgICAgICAgRml4MlgobS5tYXRyaXhbMF1bMF0pLAorICAgICAg
ICBGaXgyWChtLm1hdHJpeFswXVsxXSksCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzFdWzBdKSwK
KyAgICAgICAgRml4MlgobS5tYXRyaXhbMV1bMV0pLAorICAgICAgICBGaXgyWChtLm1hdHJpeFsy
XVswXSksCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzJdWzFdKSk7CisKKyAgICByZXR1cm4gdHJh
bnNmb3JtOworfQorCit2b2lkIFFUVHJhY2s6OnNldFRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9y
bSB0KQoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fdHJhY2tIYW5kbGUpOworICAgIE1hdHJp
eFJlY29yZCBtID0ge3sKKyAgICAgICAge1gyRml4KHQuYSksIFgyRml4KHQuYiksIDB9LAorICAg
ICAgICB7WDJGaXgodC5jKSwgWDJGaXgodC5kKSwgMH0sCisgICAgICAgIHtYMkZpeCh0LnR4KSwg
WDJGaXgodC50eSksIGZyYWN0MX0sCisgICAgfX07CisKKyAgICBTZXRUcmFja01hdHJpeChtX3By
aXZhdGUtPm1fdHJhY2tIYW5kbGUsICZtKTsKK30KKwordm9pZCBRVFRyYWNrOjpyZXNldFRyYW5z
Zm9ybSgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV90cmFja0hhbmRsZSk7CisgICAgU2V0
VHJhY2tNYXRyaXgobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlLCAwKTsKK30KKwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBRVFRyYWNrX2gK
KyNkZWZpbmUgUVRUcmFja19oCisKKyNpbmNsdWRlIDxVbmljb2RlLmg+CisjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworLy8gV2UgbXVzdCBpbmNsdWRlIHRoaXMgYWZ0ZXIgPFVuaWNvZGUuaD4sIG9y
IHRoZSBkZWZpbml0aW9uIG9mIE9TRXJyIHdpbGwgY2hhbmdlOgorI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgorCisjaWZkZWYgUVRNT1ZJRVdJTl9FWFBPUlRTCisj
ZGVmaW5lIFFUTU9WSUVXSU5fQVBJIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZp
bmUgUVRNT1ZJRVdJTl9BUEkgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKworY2xhc3Mg
UVRUcmFjazsKK2NsYXNzIFFUVHJhY2tQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgVHJhY2tUeXBl
KiogVHJhY2s7CisKK2NsYXNzIFFUTU9WSUVXSU5fQVBJIFFUVHJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxRVFRyYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UVRUcmFjaz4g
Y3JlYXRlKFRyYWNrKTsKKyAgICB+UVRUcmFjaygpOworCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
Z2V0VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFu
c2Zvcm0pOworICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0oKTsKKworICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworCisgICAgVHJhY2sgZ2V0VHJh
Y2tIYW5kbGUoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgUVRUcmFjayhUcmFjayk7CisgICAgUVRU
cmFja1ByaXZhdGUqIG1fcHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUVRUcmFja1ByaXZhdGU7
Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FD
RkxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBQ0ZMYXllci5jcHAJKHJldmlzaW9uIDY2NjgwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1LDkg
QEAgdm9pZCBXS0NBQ0ZMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmVjdAogCiAgICAgaWYgKG1f
bmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UpCiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwor
CisgICAgaWYgKG1fbGF5b3V0Q2xpZW50KQorICAgICAgICBzZXROZWVkc0xheW91dCgpOwogfQog
CiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRGcmFtZShjb25zdCBDR1JlY3QmIHJlY3QpCkBAIC0zNjgs
NiArMzcxLDkgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6c2V0RnJhbWUoY29uc3QgQ0dSZWN0JgogCiAg
ICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgJiYgIUNHU2l6ZUVxdWFsVG9TaXpl
KHJlY3Quc2l6ZSwgb2xkRnJhbWUuc2l6ZSkpCiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwor
CisgICAgaWYgKG1fbGF5b3V0Q2xpZW50KQorICAgICAgICBzZXROZWVkc0xheW91dCgpOwogfQog
CiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRDb250ZW50c0dyYXZpdHkoQ29udGVudHNHcmF2aXR5VHlw
ZSB0eXBlKQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2OTMyKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOS0wNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZpZXMgd2l0aCB0cmFjayBvciBtb3ZpZSBtYXRyaWNlcyBkb24ndCBk
aXNwbGF5IGluIDx2aWRlbz4gZWxlbWVudHMgKFNhZmFyaSA1L1dpbmRvd3MpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTMzMworICAgICAgICAKKyAg
ICAgICAgVGhlIHJvb3RDaGlsZCBsYXllciBtdXN0IGJlIHNldCBhcyBmbGlwcGVkLCBvdGhlcndp
c2UgdHJhbnNmb3JtZWQgbW92aWVzIHdpbGwgYXBwZWFyCisgICAgICAgIGluY29ycmVjdGx5IHJv
dGF0ZWQuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisKIDIwMTAt
MDktMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDY2NjgwKQorKysgV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDkgKzI3MywxMCBAQCB2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIo
bV9yb290Q2hpbGQpOwogCi0gICAgV0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21lZGlhRWxl
bWVudC0+cGxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBXS0NBQ0ZMYXllciogdmlkZW9M
YXllciA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgbV9yb290Q2hpbGQt
PmFkZFN1YmxheWVyKHZpZGVvTGF5ZXIpOwogICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91
dCgpOworICAgIG1fcm9vdENoaWxkLT5zZXRHZW9tZXRyeUZsaXBwZWQoMSk7CiAjZW5kaWYKIAog
ICAgIFJFQ1Qgd2luZG93UmVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67090</attachid>
            <date>2010-09-09 13:50:57 -0700</date>
            <delta_ts>2010-09-09 14:13:30 -0700</delta_ts>
            <desc>Video-rotation</desc>
            <filename>Video-rotation.patch</filename>
            <type>text/plain</type>
            <size>24148</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzExMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMDktMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
aWVzIHdpdGggdHJhY2sgb3IgbW92aWUgbWF0cmljZXMgZG9uJ3QgZGlzcGxheSBpbiA8dmlkZW8+
IGVsZW1lbnRzIChTYWZhcmkgNS9XaW5kb3dzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzMzMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODEzMzMx
MjYKKyAgICAgICAgCisgICAgICAgIFF1aWNrVGltZSB3aWxsIHJlZnVzZSB0byBkZWNvZGUgdmlk
ZW8gZnJhbWVzIGZvciBtb3ZpZXMgd2hvc2UgbW92aWUgYW5kIHRyYWNrIG1hdHJpY2VzIAorICAg
ICAgICBhcmUgbm9uLWlkZW50aXR5LiAgVG8gd29yayBhcm91bmQgdGhpcyBwcm9ibGVtLCBleHRy
YWN0IHRoZSBtb3ZpZSBhbmQgdHJhY2sgbWF0cmljZXMgCisgICAgICAgIGZyb20gdGhlIG1vdmll
LCBhbmQgc2V0IHRoYXQgbWF0cml4IG9uIHRoZSB2aWRlbyBsYXllciBpbnN0ZWFkLgorCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6TGF5b3V0Q2xpZW50OjpMYXlvdXRDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheW91dENs
aWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6CisgICAgICAgICAgICBMYXlvdXQgdGhlIHZp
ZGVvIGxheWVyIGFjY29yZGluZyB0byBpdHMgc3VwZXJsYXllcidzIHNpemUuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnBsYXRmb3JtTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6bmF0dXJhbFNpemUpOgorICAgICAgICAgICAgQXBwbHkgdGhlIG1fbW92aWVUcmFuc2Zvcm0g
dG8gdGhlIHNpemUgcmVwb3J0ZWQgYnkgUVRNb3ZpZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnJldHJpZXZlQW5kUmVzZXRNb3Zp
ZVRyYW5zZm9ybSk6CisgICAgICAgICAgICBDYWxjdWxhdGUgbV9tb3ZpZVRyYW5zZm9ybSBhbmQg
cmVzZXQgdGhlIG1vdmllIGFuZCB0cmFjayBtYXRyaWNlcyBpbiB0aGUgbW92aWUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpjcmVh
dGVMYXllckZvck1vdmllKToKKyAgICAgICAgICAgIENyZWF0ZSB0d28gbmVzdGVkIGxheWVycyBp
bnN0ZWFkIG9mIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQ6OmRlc3Ryb3lMYXllckZvck1vdmllKToKKyAgICAgICAgICAgIE1h
a2Ugc3VyZSB0byByZW1vdmUgbV9xdFZpZGVvTGF5ZXIgZnJvbSBhbnkgc3VwZXJsYXllciBiZWZv
cmUgZGVyZWZlcmVuY2luZyBpdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRN
b3ZpZS5jcHA6CisgICAgICAgIChRVE1vdmllOjp2aWRlb1RyYWNrcyk6IEFkZGVkLgorICAgICAg
ICAoUVRNb3ZpZTo6Z2V0VHJhbnNmb3JtKTogQWRkZWQuCisgICAgICAgIChRVE1vdmllOjpzZXRU
cmFuc2Zvcm0pOiBBZGRlZC4KKyAgICAgICAgKFFUTW92aWU6OnJlc2V0VHJhbnNmb3JtKTogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRUcmFjay5jcHA6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9RVFRyYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZM
YXllcjo6c2V0Qm91bmRzKTogQ2FsbCBzZXROZWVkc0xheW91dCgpIGlmIGEgbGF5b3V0Q2xpZW50
IGlzIHByZXNlbnQuCisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllcjo6c2V0RnJhbWUpOiBD
YWxsIHNldE5lZWRzTGF5b3V0KCkgaWYgYSBsYXlvdXRDbGllbnQgaXMgcHJlc2VudC4KKwogMjAx
MC0wOS0wOSAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9RVE1vdmllV2luLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1FUTW92aWVXaW4udmNwcm9qCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw2ICszNDEsMTAg
QEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxRVFBpeGVsQnVm
ZmVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxRVFRyYWNrLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KIAkJCU5hbWU9IkhlYWRlciBGaWxlcyIN
CkBAIC0zNzUsNiArMzc5LDEwIEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1x3aW5cUVRQaXhlbEJ1ZmZlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFFUVHJhY2suaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KIAkJCU5hbWU9
IlJlc291cmNlIEZpbGVzIg0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQuY3BwCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDxBc3NlcnRNYWNyb3MuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0
Lmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRmxvYXQuaD4KICNpbmNsdWRlIDxXaW5pbmV0
Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTk3LDYgKzk4LDM5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogbV9wYXJlbnQ7CiB9OworCitjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQgOiBwdWJs
aWMgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworcHVibGljOgorICAgIExheW91dENsaWVudChN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KiBwYXJlbnQpIDogbV9wYXJl
bnQocGFyZW50KSB7fQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdL
Q0FDRkxheWVyKik7Citwcml2YXRlOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQqIG1fcGFyZW50OworfTsKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIo
V0tDQUNGTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChtX3BhcmVudCk7CisgICAgQVNTRVJU
KG1fcGFyZW50LT5tX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0gbGF5ZXIpOwor
CisgICAgQ0dTaXplIHBhcmVudFNpemUgPSBsYXllci0+Ym91bmRzKCkuc2l6ZTsKKyAgICBDR1Np
emUgbmF0dXJhbFNpemUgPSBtX3BhcmVudC0+bmF0dXJhbFNpemUoKTsKKworICAgIC8vIENhbGN1
bGF0ZSB0aGUgcmF0aW8gb2YgdGhlc2UgdHdvIHNpemVzIGFuZCB1c2UgdGhhdCByYXRpbyB0byBz
Y2FsZSB0aGUgcXRWaWRlb0xheWVyOgorICAgIENHU2l6ZSByYXRpbyA9IENHU2l6ZU1ha2UocGFy
ZW50U2l6ZS53aWR0aCAvIG5hdHVyYWxTaXplLndpZHRoLCBwYXJlbnRTaXplLmhlaWdodCAvIG5h
dHVyYWxTaXplLmhlaWdodCk7CisKKyAgICBpbnQgdmlkZW9XaWR0aCA9IDA7CisgICAgaW50IHZp
ZGVvSGVpZ2h0ID0gMDsKKyAgICBtX3BhcmVudC0+bV9tb3ZpZS0+Z2V0TmF0dXJhbFNpemUodmlk
ZW9XaWR0aCwgdmlkZW9IZWlnaHQpOworICAgIENHUmVjdCB2aWRlb0JvdW5kcyA9IENHUmVjdE1h
a2UoMCwgMCwgdmlkZW9XaWR0aCAqIHJhdGlvLndpZHRoLCB2aWRlb0hlaWdodCAqIHJhdGlvLmhl
aWdodCk7CisgICAgQ0dQb2ludCB2aWRlb0FuY2hvciA9IG1fcGFyZW50LT5tX3F0VmlkZW9MYXll
ci0+YW5jaG9yUG9pbnQoKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHBvc2l0aW9uIGJh
c2VkIG9uIHRoZSBwYXJlbnQncyBzaXplOgorICAgIENHUG9pbnQgcG9zaXRpb24gPSBDR1BvaW50
TWFrZShwYXJlbnRTaXplLndpZHRoICogMC41IC0gdmlkZW9Cb3VuZHMuc2l6ZS53aWR0aCAqICgw
LjUgLSB2aWRlb0FuY2hvci54KSwKKyAgICAgICAgcGFyZW50U2l6ZS5oZWlnaHQgKiAwLjUgLSB2
aWRlb0JvdW5kcy5zaXplLmhlaWdodCAqICgwLjUgLSB2aWRlb0FuY2hvci55KSk7IAorCisgICAg
bV9wYXJlbnQtPm1fcXRWaWRlb0xheWVyLT5zZXRCb3VuZHModmlkZW9Cb3VuZHMpOworICAgIG1f
cGFyZW50LT5tX3F0VmlkZW9MYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworfQogI2VuZGlm
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OlZpc3Vh
bENvbnRleHRDbGllbnQgOiBwdWJsaWMgUVRNb3ZpZVZpc3VhbENvbnRleHRDbGllbnQgewpAQCAt
MTM3LDggKzE3MSwxMCBAQCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
CiAgICAgLCBtX21vdmllQ2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1
YWxDb250ZXh0OjpNb3ZpZUNsaWVudCh0aGlzKSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgLCBtX2xheWVyQ2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudCh0aGlzKSkKKyAgICAsIG1fbGF5b3V0Q2xpZW50
KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGll
bnQodGhpcykpCiAjZW5kaWYKICAgICAsIG1fdmlzdWFsQ29udGV4dENsaWVudChuZXcgTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6VmlzdWFsQ29udGV4dENsaWVudCh0
aGlzKSkKKyAgICAsIG1fbW92aWVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSkK
IHsKIH0KIApAQCAtMTY5LDcgKzIwNSw3IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxh
eWVyKiBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9xdFZpZGVvTGF5ZXIgPyBtX3F0VmlkZW9MYXll
ci0+cGxhdGZvcm1MYXllcigpIDogMDsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXllciA/IG1f
dHJhbnNmb3JtTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CiB9CiAjZW5kaWYKIApAQCAtNDA0
LDcgKzQ0MCw5IEBAIEludFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWEKICAg
ICBpbnQgd2lkdGg7CiAgICAgaW50IGhlaWdodDsKICAgICBtX21vdmllLT5nZXROYXR1cmFsU2l6
ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBDR1NpemUgb3JpZ2luYWxTaXplID0ge3dpZHRoLCBoZWlnaHR9OworICAgIENHU2l6ZSB0cmFu
c2Zvcm1lZFNpemUgPSBDR1NpemVBcHBseUFmZmluZVRyYW5zZm9ybShvcmlnaW5hbFNpemUsIG1f
bW92aWVUcmFuc2Zvcm0pOworICAgIHJldHVybiBJbnRTaXplKENHRkFicyh0cmFuc2Zvcm1lZFNp
emUud2lkdGgpLCBDR0ZBYnModHJhbnNmb3JtZWRTaXplLmhlaWdodCkpOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Omhhc1ZpZGVvKCkgY29uc3QK
QEAgLTc2Myw3ICs4MDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvCiAgICAgICAgIGlmICghYnVmZmVyLnBpeGVsQnVmZmVyUmVmKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgV0tDQUNGTGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V0tDQUNG
TGF5ZXIqPihtX3F0VmlkZW9MYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgV0tDQUNG
TGF5ZXIqIGxheWVyID0gbV9xdFZpZGVvTGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgaWYgKCFidWZm
ZXIubG9ja0Jhc2VBZGRyZXNzKCkpIHsKICAgICAgICAgICAgIGlmIChyZXF1aXJlZERsbHNBdmFp
bGFibGUoKSkgewpAQCAtMTAxNyw2ICsxMDU1LDM4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ28KICNlbmRpZgogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQ6OnJldHJpZXZlQW5kUmVzZXRNb3ZpZVRyYW5zZm9ybSgpCit7
CisgICAgLy8gRmlyc3QgdGhpbmdzIGZpcnN0LCByZXNldCB0aGUgdG90YWwgbW92aWUgdHJhbnNm
b3JtIHNvIHRoYXQKKyAgICAvLyB3ZSBjYW4gYmFpbCBvdXQgZWFybHk6CisgICAgbV9tb3ZpZVRy
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CisKKyAgICBpZiAoIW1fbW92aWUg
fHwgIW1fbW92aWUtPmhhc1ZpZGVvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMg
dHJpY2sgd2lsbCBvbmx5IHdvcmsgb24gbW92aWVzIHdpdGggYSBzaW5nbGUgdmlkZW8gdHJhY2ss
CisgICAgLy8gc28gYmFpbCBvdXQgZWFybHkgaWYgdGhlIHZpZGVvIGNvbnRhaW5zIG1vcmUgdGhh
biBvbmUgKG9yIHplcm8pCisgICAgLy8gdmlkZW8gdHJhY2tzLgorICAgIFFUVHJhY2tBcnJheSB2
aWRlb1RyYWNrcyA9IG1fbW92aWUtPnZpZGVvVHJhY2tzKCk7CisgICAgaWYgKHZpZGVvVHJhY2tz
LnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBRVFRyYWNrKiB0cmFjayA9IHZp
ZGVvVHJhY2tzWzBdLmdldCgpOworICAgIEFTU0VSVCh0cmFjayk7CisKKyAgICBDR0FmZmluZVRy
YW5zZm9ybSBtb3ZpZVRyYW5zZm9ybSA9IG1fbW92aWUtPmdldFRyYW5zZm9ybSgpOworICAgIGlm
ICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKG1vdmllVHJhbnNmb3JtLCBDR0Fm
ZmluZVRyYW5zZm9ybUlkZW50aXR5KSkKKyAgICAgICAgbV9tb3ZpZS0+cmVzZXRUcmFuc2Zvcm0o
KTsKKworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYWNrVHJhbnNmb3JtID0gdHJhY2stPmdldFRy
YW5zZm9ybSgpOworICAgIGlmICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKHRy
YWNrVHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KSkKKyAgICAgICAgdHJhY2st
PnJlc2V0VHJhbnNmb3JtKCk7CisKKyAgICAvLyBNdWx0aXBseSB0aGUgdHdvIHRyYW5zZm9ybXMg
dG9nZXRoZXIsIHRha2luZyBjYXJlIHRvIAorICAgIC8vIGRvIHNvIGluIHRoZSBjb3JyZWN0IG9y
ZGVyLCB0cmFjayAqIG1vdmllID0gZmluYWw6CisgICAgbV9tb3ZpZVRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtQ29uY2F0KHRyYWNrVHJhbnNmb3JtLCBtb3ZpZVRyYW5zZm9ybSk7Cit9CisK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6Y3JlYXRlTGF5
ZXJGb3JNb3ZpZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTAy
OCwxNyArMTA5OCwzNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
CiAgICAgLy8gQ3JlYXRlIGEgR3JhcGhpY3NMYXllciB0aGF0IHdvbid0IGJlIGluc2VydGVkIGRp
cmVjdGx5IGludG8gdGhlIHJlbmRlciB0cmVlLCBidXQgd2lsbCB1c2VkIAogICAgIC8vIGFzIGEg
d3JhcHBlciBmb3IgYSBXS0NBQ0ZMYXllciB3aGljaCBnZXRzIGluc2VydGVkIGFzIHRoZSBjb250
ZW50IGxheWVyIG9mIHRoZSB2aWRlbyAKICAgICAvLyByZW5kZXJlcidzIEdyYXBoaWNzTGF5ZXIu
Ci0gICAgbV9xdFZpZGVvTGF5ZXIuc2V0KG5ldyBHcmFwaGljc0xheWVyQ0FDRihtX2xheWVyQ2xp
ZW50LmdldCgpKSk7Ci0gICAgaWYgKCFtX3F0VmlkZW9MYXllcikKKyAgICBtX3RyYW5zZm9ybUxh
eWVyLnNldChuZXcgR3JhcGhpY3NMYXllckNBQ0YobV9sYXllckNsaWVudC5nZXQoKSkpOworICAg
IGlmICghbV90cmFuc2Zvcm1MYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWFyayB0
aGUgbGF5ZXIgYXMgZHJhd2luZyBpdHNlbGYsIGFuY2hvcmVkIGluIHRoZSB0b3AgbGVmdCwgYW5k
IGJvdHRvbS11cC4KLSAgICBtX3F0VmlkZW9MYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwot
ICAgIG1fcXRWaWRlb0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7Ci0gICAg
bV9xdFZpZGVvTGF5ZXItPnNldENvbnRlbnRzT3JpZW50YXRpb24oR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKTsKKyAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRE
cmF3c0NvbnRlbnQoZmFsc2UpOworICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQzRCgpKTsKKyAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRDb250ZW50c09yaWVu
dGF0aW9uKEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCk7Cisg
ICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRMYXlvdXRDbGllbnQobV9s
YXlvdXRDbGllbnQuZ2V0KCkpOworCisgICAgbV9xdFZpZGVvTGF5ZXIgPSBXS0NBQ0ZMYXllcjo6
Y3JlYXRlKFdLQ0FDRkxheWVyOjpMYXllcik7CisgICAgaWYgKCFtX3F0VmlkZW9MYXllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9y
bShtX21vdmllVHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KSkKKyAgICAgICAg
cmV0cmlldmVBbmRSZXNldE1vdmllVHJhbnNmb3JtKCk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
dCA9IG1fbW92aWVUcmFuc2Zvcm07CisKKyAgICAvLyBSZW1vdmUgdGhlIHRyYW5zbGF0aW9uIHBv
cnRpb24gb2YgdGhlIHRyYW5zZm9ybSwgc2luY2Ugd2Ugd2lsbCBhbHdheXMgcm90YXRlIGFib3V0
CisgICAgLy8gdGhlIGxheWVyJ3MgY2VudGVyIHBvaW50LiAgSW4gb3VyIGxpbWl0ZWQgdXNlLWNh
c2UgKGEgc2luZ2xlIHZpZGVvIHRyYWNrKSwgdGhpcyBpcworICAgIC8vIHNhZmU6CisgICAgdC50
eCA9IHQudHkgPSAwOworICAgIG1fcXRWaWRlb0xheWVyLT5zZXRUcmFuc2Zvcm0oQ0FUcmFuc2Zv
cm0zRE1ha2VBZmZpbmVUcmFuc2Zvcm0odCkpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcXRW
aWRlb0xheWVyLT5zZXROYW1lKCJWaWRlbyBsYXllciIpOwogI2VuZGlmCisgICAgbV90cmFuc2Zv
cm1MYXllci0+cGxhdGZvcm1MYXllcigpLT5hZGRTdWJsYXllcihtX3F0VmlkZW9MYXllci5nZXQo
KSk7CisgICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXROZWVkc0xheW91
dCgpOwogICAgIC8vIFRoZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNlbmRpZgogCkBA
IC0xMDUyLDggKzExNDAsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1
YWxDbwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpkZXN0
cm95TGF5ZXJGb3JNb3ZpZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGlmIChtX3F0VmlkZW9MYXllcikKKyAgICBpZiAobV9xdFZpZGVvTGF5ZXIpIHsKKyAgICAg
ICAgbV9xdFZpZGVvTGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CiAgICAgICAgIG1fcXRW
aWRlb0xheWVyID0gMDsKKyAgICB9CisKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikKKyAgICAg
ICAgbV90cmFuc2Zvcm1MYXllciA9IDA7CiAKICAgICBpZiAobV9pbWFnZVF1ZXVlKQogICAgICAg
ICBtX2ltYWdlUXVldWUgPSAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQuaAkocmV2aXNpb24gNjY2ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJl
Y3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitjbGFzcyBXS0NBQ0ZMYXll
cjsKIGNsYXNzIFdLQ0FJbWFnZVF1ZXVlOwogI2VuZGlmCiAKQEAgLTE1NCwxNiArMTU1LDIzIEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIExheWVy
Q2xpZW50OwogICAgIE93blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKKworICAgIGNs
YXNzIExheW91dENsaWVudDsKKyAgICBmcmllbmQgY2xhc3MgTGF5b3V0Q2xpZW50OworICAgIE93
blB0cjxMYXlvdXRDbGllbnQ+IG1fbGF5b3V0Q2xpZW50OwogI2VuZGlmCiAKICAgICBjbGFzcyBW
aXN1YWxDb250ZXh0Q2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBWaXN1YWxDb250ZXh0Q2xpZW50
OwogICAgIE93blB0cjxWaXN1YWxDb250ZXh0Q2xpZW50PiBtX3Zpc3VhbENvbnRleHRDbGllbnQ7
CiAKKyAgICB2b2lkIHJldHJpZXZlQW5kUmVzZXRNb3ZpZVRyYW5zZm9ybSgpOworCiAgICAgTWVk
aWFQbGF5ZXIqIG1fcGxheWVyOwogICAgIFJlZlB0cjxRVE1vdmllPiBtX21vdmllOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9x
dFZpZGVvTGF5ZXI7CisgICAgUmVmUHRyPFdLQ0FDRkxheWVyPiBtX3F0VmlkZW9MYXllcjsKKyAg
ICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV90cmFuc2Zvcm1MYXllcjsKICAgICBPd25QdHI8V0tD
QUltYWdlUXVldWU+IG1faW1hZ2VRdWV1ZTsKICNlbmRpZgogICAgIFJlZlB0cjxRVE1vdmllVmlz
dWFsQ29udGV4dD4gbV92aXN1YWxDb250ZXh0OwpAQCAtMTg1LDYgKzE5Myw4IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIG1fdGltZVN0YXJ0ZWRQbGF5aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdG9w
cGVkUGxheWluZzsKICNlbmRpZgorICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fbW92aWVUcmFuc2Zv
cm07IAorCiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1v
dmllLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1v
dmllLmNwcAkocmV2aXNpb24gNjY2ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9RVE1vdmllLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiUVRNb3ZpZVRhc2suaCIKICNpbmNsdWRlICJRVE1vdmllV2luVGltZXIuaCIKKyNpbmNsdWRl
IDxGaXhNYXRoLmg+CiAjaW5jbHVkZSA8R1hNYXRoLmg+CiAjaW5jbHVkZSA8TW92aWVzLmg+CiAj
aW5jbHVkZSA8UVRNTC5oPgpAQCAtNjk2LDYgKzY5NywxNiBAQCBib29sIFFUTW92aWU6Omhhc0F1
ZGlvKCkgY29uc3QKICAgICByZXR1cm4gKEdldE1vdmllSW5kVHJhY2tUeXBlKG1fcHJpdmF0ZS0+
bV9tb3ZpZSwgMSwgQXVkaW9NZWRpYUNoYXJhY3RlcmlzdGljLCBtb3ZpZVRyYWNrQ2hhcmFjdGVy
aXN0aWMgfCBtb3ZpZVRyYWNrRW5hYmxlZE9ubHkpKTsKIH0KIAorUVRUcmFja0FycmF5IFFUTW92
aWU6OnZpZGVvVHJhY2tzKCkgY29uc3QKK3sKKyAgICBRVFRyYWNrQXJyYXkgdHJhY2tzOworICAg
IGxvbmcgdHJhY2tJbmRleCA9IDE7CisKKyAgICB3aGlsZSAoVHJhY2sgdGhlVHJhY2sgPSBHZXRN
b3ZpZUluZFRyYWNrVHlwZShtX3ByaXZhdGUtPm1fbW92aWUsIHRyYWNrSW5kZXgrKywgVmlzdWFs
TWVkaWFDaGFyYWN0ZXJpc3RpYywgbW92aWVUcmFja0NoYXJhY3RlcmlzdGljIHwgbW92aWVUcmFj
a0VuYWJsZWRPbmx5KSkKKyAgICAgICAgdHJhY2tzLmFwcGVuZChRVFRyYWNrOjpjcmVhdGUodGhl
VHJhY2spKTsKKworICAgIHJldHVybiB0cmFja3M7Cit9CiAKIGJvb2wgUVRNb3ZpZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMoKSBjb25zdCAKIHsKQEAgLTgzMCw2ICs4NDEsNDUgQEAgdm9pZCBRVE1vdmll
OjpnZXRTdXBwb3J0ZWRUeXBlKHVuc2lnbmVkCiAgICAgCiB9CiAKK0NHQWZmaW5lVHJhbnNmb3Jt
IFFUTW92aWU6OmdldFRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+
bV9tb3ZpZSk7CisgICAgTWF0cml4UmVjb3JkIG0gPSB7MH07CisgICAgR2V0TW92aWVNYXRyaXgo
bV9wcml2YXRlLT5tX21vdmllLCAmbSk7CisKKyAgICBBU1NFUlQoIW0ubWF0cml4WzBdWzJdKTsK
KyAgICBBU1NFUlQoIW0ubWF0cml4WzFdWzJdKTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2UoCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzBd
WzBdKSwKKyAgICAgICAgRml4MlgobS5tYXRyaXhbMF1bMV0pLAorICAgICAgICBGaXgyWChtLm1h
dHJpeFsxXVswXSksCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzFdWzFdKSwKKyAgICAgICAgRml4
MlgobS5tYXRyaXhbMl1bMF0pLAorICAgICAgICBGaXgyWChtLm1hdHJpeFsyXVsxXSkpOworICAg
IHJldHVybiB0cmFuc2Zvcm07Cit9CisKK3ZvaWQgUVRNb3ZpZTo6c2V0VHJhbnNmb3JtKENHQWZm
aW5lVHJhbnNmb3JtIHQpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV9tb3ZpZSk7CisgICAg
TWF0cml4UmVjb3JkIG0gPSB7eworICAgICAgICB7WDJGaXgodC5hKSwgWDJGaXgodC5iKSwgMH0s
CisgICAgICAgIHtYMkZpeCh0LmMpLCBYMkZpeCh0LmQpLCAwfSwKKyAgICAgICAge1gyRml4KHQu
dHgpLCBYMkZpeCh0LnR5KSwgZnJhY3QxfSwKKyAgICB9fTsKKworICAgIFNldE1vdmllTWF0cml4
KG1fcHJpdmF0ZS0+bV9tb3ZpZSwgJm0pOworICAgIG1fcHJpdmF0ZS0+Y2FjaGVNb3ZpZVNjYWxl
KCk7Cit9CisKK3ZvaWQgUVRNb3ZpZTo6cmVzZXRUcmFuc2Zvcm0oKQoreworICAgIEFTU0VSVCht
X3ByaXZhdGUtPm1fbW92aWUpOworICAgIFNldE1vdmllTWF0cml4KG1fcHJpdmF0ZS0+bV9tb3Zp
ZSwgMCk7CisgICAgbV9wcml2YXRlLT5jYWNoZU1vdmllU2NhbGUoKTsKK30KKworCiBib29sIFFU
TW92aWU6OmluaXRpYWxpemVRdWlja1RpbWUoKSAKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3Zp
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUu
aAkocmV2aXNpb24gNjY2ODApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1v
dmllLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDggQEAKICNpZm5kZWYgUVRNb3ZpZV9o
CiAjZGVmaW5lIFFUTW92aWVfaAogCi0jaW5jbHVkZSA8VW5pY29kZS5oPgotI2luY2x1ZGUgPHdp
bmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlFUVHJhY2su
aCIKKyNpbmNsdWRlIDxXVEYvVmVjdG9yLmg+CiAKICNpZmRlZiBRVE1PVklFV0lOX0VYUE9SVFMK
ICNkZWZpbmUgUVRNT1ZJRVdJTl9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCkBAIC0zOSw2ICsz
OCw3IEBACiBjbGFzcyBRVE1vdmllOwogY2xhc3MgUVRNb3ZpZVByaXZhdGU7CiB0eXBlZGVmIHN0
cnVjdCBNb3ZpZVR5cGUqKiBNb3ZpZTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxRVFRyYWNrPj4g
UVRUcmFja0FycmF5OwogCiBjbGFzcyBRVE1vdmllQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTk5LDEy
ICs5OSwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wg
aGFzQXVkaW8oKSBjb25zdDsKIAorICAgIFFUVHJhY2tBcnJheSB2aWRlb1RyYWNrcygpIGNvbnN0
OworCiAgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGNvdW50U3Vw
cG9ydGVkVHlwZXMoKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlKHVuc2lnbmVk
IGluZGV4LCBjb25zdCBVQ2hhciomIHN0ciwgdW5zaWduZWQmIGxlbik7CiAKKyAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShD
R0FmZmluZVRyYW5zZm9ybSk7CisgICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOworCiAgICAgTW92
aWUgZ2V0TW92aWVIYW5kbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUVRUcmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiUVRUcmFjay5oIgorCisjaW5jbHVkZSA8TW92aWVzLmg+CisjaW5jbHVkZSA8
UVRNTC5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitjbGFzcyBRVFRyYWNrUHJpdmF0ZSA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgUVRUcmFja1ByaXZhdGUoKTsKKyAg
ICB+UVRUcmFja1ByaXZhdGUoKTsKKworICAgIFFUVHJhY2sqIG1fdHJhY2s7CisgICAgVHJhY2sg
bV90cmFja0hhbmRsZTsKK307CisKK1FUVHJhY2tQcml2YXRlOjpRVFRyYWNrUHJpdmF0ZSgpCisg
ICAgOiBtX3RyYWNrKDApCisgICAgLCBtX3RyYWNrSGFuZGxlKDApCit7Cit9CisKK1FUVHJhY2tQ
cml2YXRlOjp+UVRUcmFja1ByaXZhdGUoKQoreworICAgIG1fdHJhY2tIYW5kbGUgPSAwOworfQor
CitQYXNzUmVmUHRyPFFUVHJhY2s+IFFUVHJhY2s6OmNyZWF0ZShUcmFjayB0cmFja0hhbmRsZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFFUVHJhY2sodHJhY2tIYW5kbGUpKTsKK30KKwor
UVRUcmFjazo6UVRUcmFjayhUcmFjayB0cmFja0hhbmRsZSkKKyAgICA6IG1fcHJpdmF0ZShuZXcg
UVRUcmFja1ByaXZhdGUoKSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fdHJhY2sgPSB0aGlzOworICAg
IG1fcHJpdmF0ZS0+bV90cmFja0hhbmRsZSA9IHRyYWNrSGFuZGxlOworfQorCitRVFRyYWNrOjp+
UVRUcmFjaygpCit7CisgICAgZGVsZXRlIG1fcHJpdmF0ZTsKK30KKworYm9vbCBRVFRyYWNrOjpp
c0VuYWJsZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fdHJhY2spOworICAg
IHJldHVybiBHZXRUcmFja0VuYWJsZWQobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlKTsKK30KKwor
dm9pZCBRVFRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQobV9w
cml2YXRlLT5tX3RyYWNrSGFuZGxlKTsKKyAgICBTZXRUcmFja0VuYWJsZWQobV9wcml2YXRlLT5t
X3RyYWNrSGFuZGxlLCBlbmFibGVkKTsKK30KKworQ0dBZmZpbmVUcmFuc2Zvcm0gUVRUcmFjazo6
Z2V0VHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlLT5tX3RyYWNrSGFu
ZGxlKTsKKyAgICBNYXRyaXhSZWNvcmQgbSA9IHswfTsKKyAgICBHZXRUcmFja01hdHJpeChtX3By
aXZhdGUtPm1fdHJhY2tIYW5kbGUsICZtKTsKKworICAgIEFTU0VSVCghbS5tYXRyaXhbMF1bMl0p
OworICAgIEFTU0VSVCghbS5tYXRyaXhbMV1bMl0pOworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRy
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZSgKKyAgICAgICAgRml4MlgobS5tYXRyaXhb
MF1bMF0pLAorICAgICAgICBGaXgyWChtLm1hdHJpeFswXVsxXSksCisgICAgICAgIEZpeDJYKG0u
bWF0cml4WzFdWzBdKSwKKyAgICAgICAgRml4MlgobS5tYXRyaXhbMV1bMV0pLAorICAgICAgICBG
aXgyWChtLm1hdHJpeFsyXVswXSksCisgICAgICAgIEZpeDJYKG0ubWF0cml4WzJdWzFdKSk7CisK
KyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCit2b2lkIFFUVHJhY2s6OnNldFRyYW5zZm9ybShD
R0FmZmluZVRyYW5zZm9ybSB0KQoreworICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fdHJhY2tIYW5k
bGUpOworICAgIE1hdHJpeFJlY29yZCBtID0ge3sKKyAgICAgICAge1gyRml4KHQuYSksIFgyRml4
KHQuYiksIDB9LAorICAgICAgICB7WDJGaXgodC5jKSwgWDJGaXgodC5kKSwgMH0sCisgICAgICAg
IHtYMkZpeCh0LnR4KSwgWDJGaXgodC50eSksIGZyYWN0MX0sCisgICAgfX07CisKKyAgICBTZXRU
cmFja01hdHJpeChtX3ByaXZhdGUtPm1fdHJhY2tIYW5kbGUsICZtKTsKK30KKwordm9pZCBRVFRy
YWNrOjpyZXNldFRyYW5zZm9ybSgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV90cmFja0hh
bmRsZSk7CisgICAgU2V0VHJhY2tNYXRyaXgobV9wcml2YXRlLT5tX3RyYWNrSGFuZGxlLCAwKTsK
K30KKwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRUcmFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUVHJhY2suaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBRVFRyYWNrX2gKKyNkZWZpbmUgUVRUcmFja19oCisKKyNpbmNsdWRlIDxVbmljb2RlLmg+
CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworLy8gV2UgbXVzdCBpbmNsdWRlIHRoaXMgYWZ0ZXIg
PFVuaWNvZGUuaD4sIG9yIHRoZSBkZWZpbml0aW9uIG9mIE9TRXJyIHdpbGwgY2hhbmdlOgorI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgorCisjaWZkZWYgUVRNT1ZJ
RVdJTl9FWFBPUlRTCisjZGVmaW5lIFFUTU9WSUVXSU5fQVBJIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KQorI2Vsc2UKKyNkZWZpbmUgUVRNT1ZJRVdJTl9BUEkgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisj
ZW5kaWYKKworY2xhc3MgUVRUcmFjazsKK2NsYXNzIFFUVHJhY2tQcml2YXRlOwordHlwZWRlZiBz
dHJ1Y3QgVHJhY2tUeXBlKiogVHJhY2s7CisKK2NsYXNzIFFUTU9WSUVXSU5fQVBJIFFUVHJhY2sg
OiBwdWJsaWMgUmVmQ291bnRlZDxRVFRyYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UVRUcmFjaz4gY3JlYXRlKFRyYWNrKTsKKyAgICB+UVRUcmFjaygpOworCisgICAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gZ2V0VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFuc2Zv
cm0oQ0dBZmZpbmVUcmFuc2Zvcm0pOworICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0oKTsKKworICAg
IGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworCisg
ICAgVHJhY2sgZ2V0VHJhY2tIYW5kbGUoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgUVRUcmFjayhU
cmFjayk7CisgICAgUVRUcmFja1ByaXZhdGUqIG1fcHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3Mg
UVRUcmFja1ByaXZhdGU7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAJKHJldmlzaW9uIDY2NjgwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTUsNiArMzU1LDkgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6c2V0Qm91bmRzKGNvbnN0IENHUmVj
dAogCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UpCiAgICAgICAgIHNldE5l
ZWRzRGlzcGxheSgpOworCisgICAgaWYgKG1fbGF5b3V0Q2xpZW50KQorICAgICAgICBzZXROZWVk
c0xheW91dCgpOwogfQogCiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRGcmFtZShjb25zdCBDR1JlY3Qm
IHJlY3QpCkBAIC0zNjgsNiArMzcxLDkgQEAgdm9pZCBXS0NBQ0ZMYXllcjo6c2V0RnJhbWUoY29u
c3QgQ0dSZWN0JgogCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgJiYgIUNH
U2l6ZUVxdWFsVG9TaXplKHJlY3Quc2l6ZSwgb2xkRnJhbWUuc2l6ZSkpCiAgICAgICAgIHNldE5l
ZWRzRGlzcGxheSgpOworCisgICAgaWYgKG1fbGF5b3V0Q2xpZW50KQorICAgICAgICBzZXROZWVk
c0xheW91dCgpOwogfQogCiB2b2lkIFdLQ0FDRkxheWVyOjpzZXRDb250ZW50c0dyYXZpdHkoQ29u
dGVudHNHcmF2aXR5VHlwZSB0eXBlKQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3MTEwKQorKysgV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOS0w
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZpZXMgd2l0aCB0cmFjayBvciBtb3ZpZSBt
YXRyaWNlcyBkb24ndCBkaXNwbGF5IGluIDx2aWRlbz4gZWxlbWVudHMgKFNhZmFyaSA1L1dpbmRv
d3MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTMz
MworICAgICAgICAKKyAgICAgICAgVGhlIHJvb3RDaGlsZCBsYXllciBtdXN0IGJlIHNldCBhcyBm
bGlwcGVkLCBvdGhlcndpc2UgdHJhbnNmb3JtZWQgbW92aWVzIHdpbGwgYXBwZWFyCisgICAgICAg
IGluY29ycmVjdGx5IHJvdGF0ZWQuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNj
cmVlbik6CisKIDIwMTAtMDktMDggIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZCwgYnVpbGQgZml4LgpJbmRleDogV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NzExMCkKKysrIFdlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw5
ICsyNzMsMTAgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNl
dFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkKTsKIAotICAgIFdLQ0FDRkxheWVyKiB2aWRlb0xh
eWVyID0gbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgV0tD
QUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpOwog
ICAgIG1fcm9vdENoaWxkLT5hZGRTdWJsYXllcih2aWRlb0xheWVyKTsKICAgICBtX3Jvb3RDaGls
ZC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBtX3Jvb3RDaGlsZC0+c2V0R2VvbWV0cnlGbGlwcGVk
KDEpOwogI2VuZGlmCiAKICAgICBSRUNUIHdpbmRvd1JlY3Q7Cg==
</data>
<flag name="review"
          id="56299"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>