<?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>35566</bug_id>
          
          <creation_ts>2010-03-02 00:39:39 -0800</creation_ts>
          <short_desc>WebKit needs ability to dispatch mousewheel events.</short_desc>
          <delta_ts>2010-03-02 15:34:14 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29601</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>adele</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194977</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-03-02 00:39:39 -0800</bug_when>
    <thetext>WebKit needs the ability to dispatch mouse wheel events from JavaScript in order to test WebKit scrolling behavior programatically.  For instance, https://bugs.webkit.org/show_bug.cgi?id=29601 cannot be properly tested without such a capability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194983</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-03-02 01:28:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/7705815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194984</commentid>
    <comment_count>2</comment_count>
      <attachid>49790</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-03-02 01:36:53 -0800</bug_when>
    <thetext>Created attachment 49790
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194989</commentid>
    <comment_count>3</comment_count>
      <attachid>49790</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-03-02 02:17:11 -0800</bug_when>
    <thetext>Comment on attachment 49790
Proposed patch

Suggestions from IRC: 
- instead of the long comments explaining the difference between m_wheelDeltaX/Y and m_deltaX/Y, I would suggest giving them names that make the difference more clear
- m_wheelDeltaX/Y are exposed by that name in the API, perhaps the others could be m_rawDeltaX/Y or m_pixelDeltaX/Y

r=me with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194996</commentid>
    <comment_count>4</comment_count>
      <attachid>49793</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-03-02 02:45:09 -0800</bug_when>
    <thetext>Created attachment 49793
Proposed patch (v2)

Updated the patch to address Maciej&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194997</commentid>
    <comment_count>5</comment_count>
      <attachid>49793</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-03-02 02:46:55 -0800</bug_when>
    <thetext>Comment on attachment 49793
Proposed patch (v2)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195275</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 15:34:14 -0800</bug_when>
    <thetext>Landed in r55436 since the commit queue seems uninterested in committing changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49790</attachid>
            <date>2010-03-02 01:36:53 -0800</date>
            <delta_ts>2010-03-02 02:45:09 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>scrollwheel.patch</filename>
            <type>text/plain</type>
            <size>24660</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDMtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgYW5kIGRpc3BhdGNoIGEgV2hlZWxFdmVudCBpbiBKYXZh
U2NyaXB0LgorICAgICAgICBFbnN1cmUgdGhlIGV2ZW50J3MgZGVmYXVsdCBoYW5kbGVyIGlzIHRy
aWdnZXJlZCBpbiB0aGUgc2FtZSB3YXkgYXMgaXQgaXMKKyAgICAgICAgZHVyaW5nIGEgUGxhdGZv
cm1XaGVlbEV2ZW50LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTU2NgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4t
c2Nyb2xsaW5nLWRpdi5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IEVuc3VyZSB0aGF0
IHRoZSBkZWZhdWx0IGJlaGF2aW9yIChzY3JvbGxpbmcpIG9jY3VycyBmb3IKKyAgICAgICAgd2hl
ZWwgZXZlbnRzIG9yaWdpbmF0aW5nIGJvdGggZnJvbSB0aGUgcGxhdGZvcm0gYW5kIGZyb20KKyAg
ICAgICAgSmF2YVNjcmlwdC9PYmpDLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hX
aGVlbEV2ZW50KTogSW5zdGFudGlhdGUgbmV3IFdoZWVsRXZlbnQgd2l0aAorICAgICAgICB0aGUg
Z3JhdW51bGFyaXR5IG9mIHRoZSBQbGF0Zm9ybVdoZWVsRXZlbnQuCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkIHN1cHBvcnQgZm9yIG1vdXNld2hlZWwg
ZXZlbnRzLgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDogQWRkIHRocmVlIG5ldyBtZW1i
ZXIgdmFyaWFibGVzOiBtX2RlbHRhWCwgbV9kZWx0YVkKKyAgICAgICAgYW5kIG1fZ3JhbnVsYXJp
dHkuICBtX2RlbHRhWCBhbmQgbV9kZWx0YVkgZGlmZmVyIGZyb20gbV93aGVlbERlbHRhWCBhbmQK
KyAgICAgICAgbV93aGVlbERlbHRhWSwgd2hpY2ggYXJlIHRoZSBudW1iZXIgb2Ygd2hlZWwgdGlj
a3MgbXVsdGlwbGllZCBieSAxMjAgZm9yCisgICAgICAgIElFIGNvbXBhdGliaWxpdHkuCisgICAg
ICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KTogSW5pdGlhbGl6ZSBuZXcgbWVt
YmVyIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXaGVlbEV2
ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVl
bEV2ZW50KTogU2FtZS4KKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOiBTZWUgV2hlZWxFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjopOiBBZGQgR3JhbnVsYXJpdHkg
ZW51bSAoUGl4ZWwsIExpbmUsIFBhZ2UpLgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6
Y3JlYXRlKTogQWRkIG5ldyBhcmd1bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
OjpkZWx0YVgpOiBBbW91bnQgb2Ygc2Nyb2xsIGluIHggZGlyZWN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6V2hlZWxFdmVudDo6ZGVsdGFZKTogQW1vdW50IG9mIHNjcm9sbCBpbiB5IGRpcmVjdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmdyYW51bGFyaXR5KTogVW5pdHMgb2Yg
ZGVsdGFYIGFuZCBkZWx0YVkuCisgICAgICAgICogZG9tL1doZWVsRXZlbnQuaWRsOiBBZGQgaW5p
dFdlYktpdFdoZWVsRXZlbnQoKSB0byBKYXZhU2NyaXB0LiAgVGhpcyBpcworICAgICAgICB0aGUg
c2FtZSBhcyB0aGUgaW5pdFdoZWVsRXZlbnQgT2JqQyBtZXRob2QuICBBcyB0aGUgRE9NIExldmVs
IDMgRXZlbnRzCisgICAgICAgIHNwZWNpZmljYXRpb24gaXMgc3RpbGwgYSB3b3JraW5nIGRyYWZ0
IGFuZCBzdWJqZWN0IHRvIGNoYW5nZSwgcHJlZml4CisgICAgICAgICdXZWJLaXQnIHRvIHRoZSBt
ZXRob2Qgc2lnbmF0dXJlIHRvIGluZGljYXRlIGV4cGVyaW1lbnRhbCBzdXBwb3J0LgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDogTW92ZSB0aGUgc2Nyb2xsIGhhbmRsaW5nIGZyb20K
KyAgICAgICAgaGFuZGxlV2hlZWxFdmVudCgpIHRvIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcigp
LCB3aGljaCBpcyBleGVjdXRlZCBvbgorICAgICAgICBib3RoIFBsYXRmb3JtV2hlZWxFdmVudHMg
YW5kIEphdmFTY3JpcHQgV2hlZWxFdmVudHMuCisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxOb2Rl
KTogUmVuYW1lZCBmcm9tIHNjcm9sbEFuZEFjY2VwdEV2ZW50KCkuICBSZW1vdmUKKyAgICAgICAg
dGhlIFBsYXRmb3JtV2hlZWxFdmVudCBmcm9tIHRoZSBhcmd1bWVudCBsaXN0IGFuZCBpbnN0ZWFk
IHJldHVybiBhCisgICAgICAgIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc2Nyb2xsIGV2ZW50
IHdhcyBhY2NlcHRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudCk6IE1vdmUgc2Nyb2xsaW5nIGNvZGUgZnJvbSBoZXJlCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcik6IC4uLnRvIGhlcmUuCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDogQWRkIGZ1bmN0aW9uIHNpZ25hdHVyZS4KKwog
MjAxMC0wMy0wMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoQnVpbGQgZml4KS4KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1NTQwNCkKKysr
IFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKQEAgLTI5MDIsMTQgKzI5
MDIsMjcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaAogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxXaGVlbEV2ZW50PiB3ZSA9IFdoZWVsRXZlbnQ6
OmNyZWF0ZShlLndoZWVsVGlja3NYKCksIGUud2hlZWxUaWNrc1koKSwKKyAgICBXaGVlbEV2ZW50
OjpHcmFudWxhcml0eSBncmFudWxhcml0eTsKKyAgICBzd2l0Y2ggKGUuZ3JhbnVsYXJpdHkoKSkg
eworICAgIGNhc2UgU2Nyb2xsQnlQYWdlV2hlZWxFdmVudDoKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBXaGVlbEV2ZW50OjpQYWdlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50OgorICAgIGRlZmF1bHQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2hlZWxF
dmVudDo6UGl4ZWw7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8V2hl
ZWxFdmVudD4gd2UgPSBXaGVlbEV2ZW50OjpjcmVhdGUoZS53aGVlbFRpY2tzWCgpLCBlLndoZWVs
VGlja3NZKCksIGUuZGVsdGFYKCksIGUuZGVsdGFZKCksIGdyYW51bGFyaXR5LAogICAgICAgICBk
b2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCBlLmdsb2JhbFgoKSwgZS5nbG9iYWxZKCksIGFkanVz
dGVkUGFnZVgsIGFkanVzdGVkUGFnZVksCiAgICAgICAgIGUuY3RybEtleSgpLCBlLmFsdEtleSgp
LCBlLnNoaWZ0S2V5KCksIGUubWV0YUtleSgpKTsKIAogICAgIHdlLT5zZXRBYnNvbHV0ZUxvY2F0
aW9uKEludFBvaW50KHBvcy54KCksIHBvcy55KCkpKTsKLQotICAgIGlmICghZGlzcGF0Y2hFdmVu
dCh3ZS5yZWxlYXNlKCkpKQorICAgIAorICAgIGlmICghZGlzcGF0Y2hFdmVudCh3ZSkgfHwgd2Ut
PmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgIGUuYWNjZXB0KCk7CisKKyAgICB3ZS5yZWxlYXNl
KCk7CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKQEAgLTI5NjYsNiArMjk3
OSwxOCBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQgJiYgZXZlbnQtPmlzV2hlZWxFdmVudCgpKSB7Cisg
ICAgICAgIFdoZWVsRXZlbnQqIHdoZWVsRXZlbnQgPSBzdGF0aWNfY2FzdDxXaGVlbEV2ZW50Kj4o
ZXZlbnQpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlbmRlcmVy
LCBzZW5kIHRoZSB3aGVlbCBldmVudCB0byB0aGUgZmlyc3Qgbm9kZSB3ZSBmaW5kIHdpdGggYSBy
ZW5kZXJlci4KKyAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIDxvcHRpb24+IGFuZCA8b3B0
Z3JvdXA+IGVsZW1lbnRzIHNvIHRoYXQgPHNlbGVjdD5zIGdldCBhIHdoZWVsIHNjcm9sbC4KKyAg
ICAgICAgTm9kZSogc3RhcnROb2RlID0gdGhpczsKKyAgICAgICAgd2hpbGUgKHN0YXJ0Tm9kZSAm
JiAhc3RhcnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnRO
b2RlLT5wYXJlbnQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnRO
b2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCktPmZyYW1lKCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kZWZh
dWx0V2hlZWxFdmVudEhhbmRsZXIoc3RhcnROb2RlLCB3aGVlbEV2ZW50KTsKICAgICB9CiB9CiAK
SW5kZXg6IFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuY3BwCShyZXZpc2lvbiA1NTQwNCkKKysrIFdlYkNvcmUvZG9tL1doZWVs
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEg
VG9iaWFzIEFudG9uIChhbnRvbkBzdHVkLmZiaS5maC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzEs
MjEgKzMxLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQo
KQogICAgIDogbV93aGVlbERlbHRhWCgwKQogICAgICwgbV93aGVlbERlbHRhWSgwKQorICAgICwg
bV9kZWx0YVgoMCkKKyAgICAsIG1fZGVsdGFZKDApCisgICAgLCBtX2dyYW51bGFyaXR5KFBpeGVs
KQogewogfQogCi1XaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9h
dCB3aGVlbFRpY2tzWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsCitXaGVlbEV2ZW50
OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxvYXQg
ZGVsdGFYLCBmbG9hdCBkZWx0YVksCisgICAgICAgICAgICAgICAgICAgICAgIEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdl
WSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9v
bCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRO
YW1lcygpLm1vdXNld2hlZWxFdmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRy
dWUsIHZpZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5KQogICAgICwgbV93aGVlbERlbHRhWChscm91bmRmKHdoZWVsVGlja3NYICog
MTIwKSkKICAgICAsIG1fd2hlZWxEZWx0YVkobHJvdW5kZih3aGVlbFRpY2tzWSAqIDEyMCkpIC8v
IE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKKyAgICAsIG1fZGVsdGFYKGRl
bHRhWCkKKyAgICAsIG1fZGVsdGFZKGRlbHRhWSkKKyAgICAsIG1fZ3JhbnVsYXJpdHkoZ3JhbnVs
YXJpdHkpCiB7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoaW50IHdoZWVs
RGVsdGFYLCBpbnQgd2hlZWxEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LAor
dm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQgZGVsdGFYLCBpbnQgZGVsdGFZLCBQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogewpAQCAtNjAsMTIgKzY3LDI1IEBAIHZvaWQg
V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoaW50IHdoZWUKICAgICBtX2FsdEtleSA9IGFsdEtl
eTsKICAgICBtX3NoaWZ0S2V5ID0gc2hpZnRLZXk7CiAgICAgbV9tZXRhS2V5ID0gbWV0YUtleTsK
LSAgICBtX3doZWVsRGVsdGFYID0gd2hlZWxEZWx0YVg7Ci0gICAgbV93aGVlbERlbHRhWSA9IHdo
ZWVsRGVsdGFZOworICAgIAorICAgIC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVs
dGlwbGUKKyAgICBtX3doZWVsRGVsdGFYID0gZGVsdGFYICogMTIwOworICAgIG1fd2hlZWxEZWx0
YVkgPSBkZWx0YVkgKiAxMjA7CisgICAgCisgICAgbV9kZWx0YVggPSBkZWx0YVg7CisgICAgbV9k
ZWx0YVkgPSBkZWx0YVk7CisgICAgbV9ncmFudWxhcml0eSA9IFBpeGVsOwogICAgIAogICAgIGlu
aXRDb29yZGluYXRlcyhwYWdlWCwgcGFnZVkpOwogfQogCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRX
ZWJLaXRXaGVlbEV2ZW50KGludCBkZWx0YVgsIGludCBkZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCit7CisgICAgaW5pdFdoZWVsRXZlbnQoZGVsdGFYLCBk
ZWx0YVksIHZpZXcsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKKyAgICAgICAgICAg
ICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKK30KIAogYm9vbCBX
aGVlbEV2ZW50Ojppc1doZWVsRXZlbnQoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAkocmV2aXNp
b24gNTU0MDQpCisrKyBXZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwMSBUb2JpYXMgQW50b24gKGFudG9uQHN0dWQuZmJp
LmZoLWRhcm1zdGFkdC5kZSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSwzOSArMzEsNjEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGV4dGVuc2lvbjogbW91c2Ugd2hlZWwgZXZlbnQKICAg
ICBjbGFzcyBXaGVlbEV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKICAgICBwdWJs
aWM6CisgICAgICAgIGVudW0gR3JhbnVsYXJpdHkgeyBQaXhlbCwgTGluZSwgUGFnZSB9OworCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVudCk7CiAgICAgICAgIH0K
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2hlZWxFdmVudD4gY3JlYXRlKGZsb2F0IHdoZWVs
VGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZShmbG9hdCB3aGVl
bFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksCisgICAgICAgICAgICBmbG9hdCBkZWx0YVgsIGZs
b2F0IGRlbHRhWSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQdHI8QWJzdHJhY3RW
aWV3PiB2aWV3LAogICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFn
ZVgsIGludCBwYWdlWSwKICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwgdmlldywg
c2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwgZGVsdGFYLCBkZWx0
YVksCisgICAgICAgICAgICAgICAgZ3JhbnVsYXJpdHksIHZpZXcsIHNjcmVlblgsIHNjcmVlblks
IHBhZ2VYLCBwYWdlWSwKICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRXaGVlbEV2ZW50KGlu
dCB3aGVlbERlbHRhWCwgaW50IHdoZWVsRGVsdGFZLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4s
CisgICAgICAgIHZvaWQgaW5pdFdoZWVsRXZlbnQoaW50IGRlbHRhWCwgaW50IGRlbHRhWSwgUGFz
c1JlZlB0cjxBYnN0cmFjdFZpZXc+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5KTsKIAorICAgICAgICB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCBk
ZWx0YVgsIGludCBkZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CisKICAgICAg
ICAgaW50IHdoZWVsRGVsdGEoKSBjb25zdCB7IGlmIChtX3doZWVsRGVsdGFZID09IDApIHJldHVy
biBtX3doZWVsRGVsdGFYOyByZXR1cm4gbV93aGVlbERlbHRhWTsgfQogICAgICAgICBpbnQgd2hl
ZWxEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGFYOyB9CiAgICAgICAgIGludCB3
aGVlbERlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YVk7IH0KKyAgICAgICAgaW50
IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9CisgICAgICAgIGludCBkZWx0YVko
KSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfQorICAgICAgICBHcmFudWxhcml0eSBncmFudWxh
cml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIAogICAgICAgICAvLyBOZWVk
ZWQgZm9yIE9iamVjdGl2ZS1DIGxlZ2FjeSBzdXBwb3J0CiAgICAgICAgIGJvb2wgaXNIb3Jpem9u
dGFsKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRhWDsgfQogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgV2hlZWxFdmVudCgpOwotICAgICAgICBXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NY
LCBmbG9hdCB3aGVlbFRpY2tzWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LAorICAgICAgICBX
aGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxvYXQgZGVs
dGFYLCBmbG9hdCBkZWx0YVksCisgICAgICAgICAgICAgICAgICAgR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKICAgICAgICAgICAgICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAg
ICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzV2hlZWxFdmVudCgpIGNvbnN0OwotCisg
ICAgICAgIAorICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHRoZSBudW1iZXIgb2Yg
d2hlZWwgdGlja3MgKG11bHRpcGxpZWQgYnkgMTIwCisgICAgICAgIC8vIGZvciBjb21wYXRpYmls
aXR5IHdpdGggSUUpIGZyb20gUGxhdGZvcm1XaGVlbEV2ZW50LiAgVGhleSBhcmUgZXhwb3NlZAor
ICAgICAgICAvLyBpbiB0aGUgRE9NIG9uIG1vdXNld2hlZWwgZXZlbnRzLgogICAgICAgICBpbnQg
bV93aGVlbERlbHRhWDsKICAgICAgICAgaW50IG1fd2hlZWxEZWx0YVk7CisKKyAgICAgICAgLy8g
VGhlc2UgdmFsdWVzIHJlcHJlc2VudCB0aGUgcmF3IHBpeGVsIGRlbHRhcyBmcm9tIFBsYXRmb3Jt
V2hlZWxFdmVudC4KKyAgICAgICAgLy8gV2ViQ29yZSB1c2VzIHRoZXNlIHZhbHVlcyBmb3Igc2Ny
b2xsaW5nLgorICAgICAgICBpbnQgbV9kZWx0YVg7CisgICAgICAgIGludCBtX2RlbHRhWTsKKwor
ICAgICAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCShyZXZpc2lvbiA1NTQwNCkKKysrIFdlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTU3LDYgKzU3LDE5IEBAIG1vZHVsZSBl
dmVudHMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gc2hpZnRLZXks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBtZXRhS2V5KTsKICNlbmRp
ZiAvKiAhZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAqLwotICAgIH07CiAKKyNpZiBkZWZp
bmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICAgICAg
dm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbiBsb25nIHdoZWVsRGVsdGFYLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2hlZWxEZWx0YVksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVdpbmRvdyB2aWV3LCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHNjcmVlblgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gbG9uZyBzY3JlZW5ZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGxvbmcgY2xpZW50WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBsb25nIGNsaWVudFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gYm9vbGVhbiBjdHJsS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGJvb2xlYW4gYWx0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gc2hpZnRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
Ym9vbGVhbiBtZXRhS2V5KTsKKyNlbmRpZiAvKiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQp
ICovCisgICAgfTsKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA1NTQwNCkK
KysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCisj
aW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiIC8vIGZvciBj
b21wYXJlUG9zaXRpb25zKCkKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTEw
NywyMyArMTA4LDI2IEBAIGNvbnN0IGRvdWJsZSBhdXRvc2Nyb2xsSW50ZXJ2YWwgPSAwLjA1Owog
CiBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzY3JvbGxBbmRBY2Nl
cHRFdmVudChmbG9hdCBkZWx0YSwgU2Nyb2xsRGlyZWN0aW9uIHBvc2l0aXZlRGlyZWN0aW9uLCBT
Y3JvbGxEaXJlY3Rpb24gbmVnYXRpdmVEaXJlY3Rpb24sIFBsYXRmb3JtV2hlZWxFdmVudCYgZSwg
Tm9kZSogbm9kZSwgTm9kZSoqIHN0b3BOb2RlKQorc3RhdGljIGlubGluZSBib29sIHNjcm9sbE5v
ZGUoZmxvYXQgZGVsdGEsIFdoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTY3Jv
bGxEaXJlY3Rpb24gcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbERpcmVjdGlvbiBuZWdhdGl2ZURp
cmVjdGlvbiwgTm9kZSogbm9kZSwgTm9kZSoqIHN0b3BOb2RlKQogewogICAgIGlmICghZGVsdGEp
Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
ICAgICAvLyBGaW5kIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBib3guCiAgICAgUmVuZGVyQm94KiBl
bmNsb3NpbmdCb3ggPSBub2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdCb3goKTsKIAotICAgIGlm
IChlLmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewotICAgICAgICBp
ZiAoZW5jbG9zaW5nQm94LT5zY3JvbGwoZGVsdGEgPCAwID8gbmVnYXRpdmVEaXJlY3Rpb24gOiBw
b3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsQnlQYWdlLCAxLCBzdG9wTm9kZSkpCi0gICAgICAgICAg
ICBlLmFjY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGZsb2F0IGFic0RlbHRh
ID0gZGVsdGEgPiAwID8gZGVsdGEgOiAtZGVsdGE7CisgICAgCisgICAgaWYgKGdyYW51bGFyaXR5
ID09IFdoZWVsRXZlbnQ6OlBhZ2UpCisgICAgICAgIHJldHVybiBlbmNsb3NpbmdCb3gtPnNjcm9s
bChkZWx0YSA8IDAgPyBuZWdhdGl2ZURpcmVjdGlvbiA6IHBvc2l0aXZlRGlyZWN0aW9uLCBTY3Jv
bGxCeVBhZ2UsIGFic0RlbHRhLCBzdG9wTm9kZSk7CisKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
V2hlZWxFdmVudDo6TGluZSkKKyAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0JveC0+c2Nyb2xsKGRl
bHRhIDwgMCA/IG5lZ2F0aXZlRGlyZWN0aW9uIDogcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbEJ5
TGluZSwgYWJzRGVsdGEsIHN0b3BOb2RlKTsKIAotICAgIGZsb2F0IHBpeGVsc1RvU2Nyb2xsID0g
ZGVsdGEgPiAwID8gZGVsdGEgOiAtZGVsdGE7Ci0gICAgaWYgKGVuY2xvc2luZ0JveC0+c2Nyb2xs
KGRlbHRhIDwgMCA/IG5lZ2F0aXZlRGlyZWN0aW9uIDogcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9s
bEJ5UGl4ZWwsIHBpeGVsc1RvU2Nyb2xsLCBzdG9wTm9kZSkpCi0gICAgICAgIGUuYWNjZXB0KCk7
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFdoZWVsRXZlbnQ6OlBpeGVsKQorICAgICAgICByZXR1
cm4gZW5jbG9zaW5nQm94LT5zY3JvbGwoZGVsdGEgPCAwID8gbmVnYXRpdmVEaXJlY3Rpb24gOiBw
b3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsQnlQaXhlbCwgYWJzRGVsdGEsIHN0b3BOb2RlKTsKKyAg
ICAgICAgCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgRU5B
QkxFKEVYUEVSSU1FTlRBTF9TSU5HTEVfVklFV19NT0RFKQpAQCAtMTg2NSwyMSArMTg2OSw2IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXQKICAgICAgICAgbm9kZS0+
ZGlzcGF0Y2hXaGVlbEV2ZW50KGUpOwogICAgICAgICBpZiAoZS5pc0FjY2VwdGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcmVu
ZGVyZXIsIHNlbmQgdGhlIHdoZWVsIGV2ZW50IHRvIHRoZSBmaXJzdCBub2RlIHdlIGZpbmQgd2l0
aCBhIHJlbmRlcmVyLgotICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgPG9wdGlvbj4gYW5k
IDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0PnMgZ2V0IGEgd2hlZWwgc2Nyb2xs
LgotICAgICAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnQoKTsKLQotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICAvLyBKdXN0IGJyZWFrIHVwIGludG8gdHdvIHNjcm9sbHMg
aWYgd2UgbmVlZCB0by4gIERpYWdvbmFsIG1vdmVtZW50IG9uIAotICAgICAgICAgICAgLy8gYSBN
YWNCb29rIHBybyBpcyBhbiBleGFtcGxlIG9mIGEgMi1kaW1lbnNpb25hbCBtb3VzZSB3aGVlbCBl
dmVudCAod2hlcmUgYm90aCBkZWx0YVggYW5kIGRlbHRhWSBjYW4gYmUgc2V0KS4KLSAgICAgICAg
ICAgIE5vZGUqIHN0b3BOb2RlID0gbV9wcmV2aW91c1doZWVsU2Nyb2xsZWROb2RlLmdldCgpOwot
ICAgICAgICAgICAgc2Nyb2xsQW5kQWNjZXB0RXZlbnQoZS5kZWx0YVgoKSwgU2Nyb2xsTGVmdCwg
U2Nyb2xsUmlnaHQsIGUsIG5vZGUsICZzdG9wTm9kZSk7Ci0gICAgICAgICAgICBzY3JvbGxBbmRB
Y2NlcHRFdmVudChlLmRlbHRhWSgpLCBTY3JvbGxVcCwgU2Nyb2xsRG93biwgZSwgbm9kZSwgJnN0
b3BOb2RlKTsKLSAgICAgICAgICAgIGlmICghbV91c2VMYXRjaGVkV2hlZWxFdmVudE5vZGUpCi0g
ICAgICAgICAgICAgICAgbV9wcmV2aW91c1doZWVsU2Nyb2xsZWROb2RlID0gc3RvcE5vZGU7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZS5pc0FjY2VwdGVkKCkpCkBAIC0xODkyLDYgKzE4
ODEsMjUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdAogICAgIHZp
ZXctPndoZWVsRXZlbnQoZSk7CiAgICAgcmV0dXJuIGUuaXNBY2NlcHRlZCgpOwogfQorICAgIAor
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5v
ZGUsIFdoZWVsRXZlbnQqIHdoZWVsRXZlbnQpCit7CisgICAgaWYgKCFzdGFydE5vZGUgfHwgIXdo
ZWVsRXZlbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBOb2RlKiBzdG9wTm9kZSA9IG1f
cHJldmlvdXNXaGVlbFNjcm9sbGVkTm9kZS5nZXQoKTsKKyAgICAKKyAgICAvLyBCcmVhayB1cCBp
bnRvIHR3byBzY3JvbGxzIGlmIHdlIG5lZWQgdG8uICBEaWFnb25hbCBtb3ZlbWVudCBvbiAKKyAg
ICAvLyBhIE1hY0Jvb2sgcHJvIGlzIGFuIGV4YW1wbGUgb2YgYSAyLWRpbWVuc2lvbmFsIG1vdXNl
IHdoZWVsIGV2ZW50ICh3aGVyZSBib3RoIGRlbHRhWCBhbmQgZGVsdGFZIGNhbiBiZSBzZXQpLgor
ICAgIGlmIChzY3JvbGxOb2RlKHdoZWVsRXZlbnQtPmRlbHRhWCgpLCB3aGVlbEV2ZW50LT5ncmFu
dWxhcml0eSgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxSaWdodCwgc3RhcnROb2RlLCAmc3RvcE5vZGUp
KQorICAgICAgICB3aGVlbEV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIAorICAgIGlm
IChzY3JvbGxOb2RlKHdoZWVsRXZlbnQtPmRlbHRhWSgpLCB3aGVlbEV2ZW50LT5ncmFudWxhcml0
eSgpLCBTY3JvbGxVcCwgU2Nyb2xsRG93biwgc3RhcnROb2RlLCAmc3RvcE5vZGUpKQorICAgICAg
ICB3aGVlbEV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIAorICAgIGlmICghbV91c2VM
YXRjaGVkV2hlZWxFdmVudE5vZGUpCisgICAgICAgIG1fcHJldmlvdXNXaGVlbFNjcm9sbGVkTm9k
ZSA9IHN0b3BOb2RlOworfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBib29sIEV2ZW50
SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDU1NDA0KQorKysgV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFN0cmluZzsKIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsK
IGNsYXNzIFRleHRFdmVudDsKIGNsYXNzIFRvdWNoRXZlbnQ7CitjbGFzcyBXaGVlbEV2ZW50Owog
Y2xhc3MgV2lkZ2V0OwogICAgIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xNDYsNiAr
MTQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSAwKTsKICAgICBi
b29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICB2b2lk
IGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCopOwogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1NDA0KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgZm9yIHRoZSBwYXRjaCB0byBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1NjYuCisgICAgICAgIFRo
ZXNlIGNhbiBiZSBydW4gbWFudWFsbHkgb3IgZnJvbSBEUlQuCisKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy93aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDItMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy93aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRp
di1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93
aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYgQEAKK3Njcm9sbFRvcD0yMDAgKHNob3VsZCBiZSAyMDApOiBQQVNTCitzY3JvbGxM
ZWZ0PTEwMCAoc2hvdWxkIGJlIDEwMCk6IFBBU1MKK3doZWVsRGVsdGFZPS0yNDAwMCAoc2hvdWxk
IGJlIC0yNDAwMCk6IFBBU1MKK3doZWVsRGVsdGFYPS0xMjAwMCAoc2hvdWxkIGJlIC0xMjAwMCk6
IFBBU1MKK3doZWVsRGVsdGE9LTI0MDAwIChzaG91bGQgYmUgLTI0MDAwKTogUEFTUworCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXNj
cm9sbGluZy1kaXYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDg0IEBACis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxU
b3AgPSAyMDA7CisgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbExlZnQgPSAxMDA7CisKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZGlz
cGF0Y2hXaGVlbEV2ZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG92ZXJmbG93RWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdmVyZmxvdyIpOworICAgICAgICAgICAg
aWYgKG92ZXJmbG93RWxlbWVudCkgeworICAgICAgICAgICAgICAgIG92ZXJmbG93RWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgbW91c2V3aGVlbEhhbmRsZXIsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICB2YXIgd2hlZWxFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJX
aGVlbEV2ZW50Iik7CisgICAgICAgICAgICAgICAgaWYgKHdoZWVsRXZlbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgd2hlZWxFdmVudC5pbml0V2ViS2l0V2hlZWxFdmVudCgtd2luZG93LmV4cGVj
dGVkU2Nyb2xsTGVmdCwgLXdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCwgd2luZG93LCAwLCAwLCAw
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIG92
ZXJmbG93RWxlbWVudC5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0VGltZW91dCgncHJpbnRTY3JvbGxP
ZmZzZXRzKCk7JywgMTAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHBhc3NGYWls
U3RyaW5nKHApCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb2xvciA9IHA/ImdyZWVuIjoi
cmVkIjsKKyAgICAgICAgICAgIHZhciB0ZXh0ID0gcD8iUEFTUyI6IkZBSUwiOworICAgICAgICAg
ICAgcmV0dXJuICI8c3BhbiBzdHlsZT0nY29sb3I6Iitjb2xvcisiJz4iK3RleHQrIjwvc3Bhbj4i
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJpbnRTY3JvbGxPZmZzZXRzKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib2Zmc2V0Q29uc29sZSIpOworICAgICAgICAgICAgdmFyIG92ZXJmbG93RGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm92ZXJmbG93Iik7CisgICAgICAgICAgICBpZiAoY29uc29s
ZURpdiAmJiBvdmVyZmxvd0RpdikgeworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5uZXJI
VE1MID0gIiI7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCArPSAic2Ny
b2xsVG9wPSIgKyBvdmVyZmxvd0Rpdi5zY3JvbGxUb3AgKyAiIChzaG91bGQgYmUgIiArIHdpbmRv
dy5leHBlY3RlZFNjcm9sbFRvcCArICIpOiAiOworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYu
aW5uZXJIVE1MICs9IHBhc3NGYWlsU3RyaW5nKG92ZXJmbG93RGl2LnNjcm9sbFRvcCA9PSB3aW5k
b3cuZXhwZWN0ZWRTY3JvbGxUb3ApOworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5uZXJI
VE1MICs9ICI8YnI+IgorCisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhUTUwgKz0g
InNjcm9sbExlZnQ9IiArIG92ZXJmbG93RGl2LnNjcm9sbExlZnQgKyAiIChzaG91bGQgYmUgIiAr
IHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQgKyAiKTogIjsKKyAgICAgICAgICAgICAgICBjb25z
b2xlRGl2LmlubmVySFRNTCArPSBwYXNzRmFpbFN0cmluZyhvdmVyZmxvd0Rpdi5zY3JvbGxMZWZ0
ID09IHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQpOworICAgICAgICAgICAgICAgIGNvbnNvbGVE
aXYuaW5uZXJIVE1MICs9ICI8YnI+IgorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBtb3VzZXdoZWVsSGFuZGxlcihlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29u
c29sZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb3VzZXdoZWVsQ29uc29sZSIpOwor
ICAgICAgICAgICAgaWYgKGNvbnNvbGVEaXYpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2
LmlubmVySFRNTCA9ICIiOworCisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhUTUwg
Kz0gIndoZWVsRGVsdGFZPSIgKyBlLndoZWVsRGVsdGFZICsgIiAoc2hvdWxkIGJlICIgKyB3aW5k
b3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMCArICIpOiAiOworICAgICAgICAgICAgICAgIGNvbnNv
bGVEaXYuaW5uZXJIVE1MICs9IHBhc3NGYWlsU3RyaW5nKGUud2hlZWxEZWx0YVkgPT0gd2luZG93
LmV4cGVjdGVkU2Nyb2xsVG9wKi0xMjApOworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5u
ZXJIVE1MICs9ICI8YnI+IgorCisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhUTUwg
Kz0gIndoZWVsRGVsdGFYPSIgKyBlLndoZWVsRGVsdGFYICsgIiAoc2hvdWxkIGJlICIgKyB3aW5k
b3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Ki0xMjAgKyAiKTogIjsKKyAgICAgICAgICAgICAgICBjb25z
b2xlRGl2LmlubmVySFRNTCArPSBwYXNzRmFpbFN0cmluZyhlLndoZWVsRGVsdGFYID09IHdpbmRv
dy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMCk7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5p
bm5lckhUTUwgKz0gIjxicj4iCisKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGwg
PSBlLndoZWVsRGVsdGFZP3dpbmRvdy5leHBlY3RlZFNjcm9sbFRvcDp3aW5kb3cuZXhwZWN0ZWRT
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5uZXJIVE1MICs9ICJ3aGVl
bERlbHRhPSIgKyBlLndoZWVsRGVsdGEgKyAiIChzaG91bGQgYmUgIiArIGV4cGVjdGVkU2Nyb2xs
Ki0xMjAgKyAiKTogIjsKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCArPSBw
YXNzRmFpbFN0cmluZyhlLndoZWVsRGVsdGEgPT0gZXhwZWN0ZWRTY3JvbGwqLTEyMCk7CisgICAg
ICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhUTUwgKz0gIjxicj4iCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9Im1hcmdp
bjowIiBvbmxvYWQ9InNldFRpbWVvdXQoJ2Rpc3BhdGNoV2hlZWxFdmVudCgpOycsIDEwMCkiPgor
ICAgIDxkaXYgaWQ9Im92ZXJmbG93IiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCBibGFjaztvdmVy
ZmxvdzphdXRvO2hlaWdodDoyMDBweDt3aWR0aDoyMDBweDsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOnJlZDtoZWlnaHQ6MjAwcHg7d2lkdGg6NDAwcHg7Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpncmVlbjtoZWlnaHQ6MjAwcHg7
d2lkdGg6NDAwcHg7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjpyZWQ7aGVpZ2h0OjIwMHB4O3dpZHRoOjQwMHB4OyI+PC9kaXY+CisgICAgPC9kaXY+CisgICAg
PGRpdiBpZD0ib2Zmc2V0Q29uc29sZSI+PHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+RkFJTDwvc3Bh
bj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJtb3VzZXdoZWVsQ29uc29sZSI+PHNwYW4gc3R5bGU9ImNv
bG9yOnJlZCI+RkFJTDwvc3Bhbj48L2Rpdj4KKzwvYm9keT4K
</data>
<flag name="review"
          id="32765"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49793</attachid>
            <date>2010-03-02 02:45:09 -0800</date>
            <delta_ts>2010-03-02 15:32:46 -0800</delta_ts>
            <desc>Proposed patch (v2)</desc>
            <filename>scrollwheel.patch</filename>
            <type>text/plain</type>
            <size>24431</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDMtMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgorCisgICAgICAgIEFk
ZCB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgYW5kIGRpc3BhdGNoIGEgV2hlZWxFdmVudCBpbiBK
YXZhU2NyaXB0LgorICAgICAgICBFbnN1cmUgdGhlIGV2ZW50J3MgZGVmYXVsdCBoYW5kbGVyIGlz
IHRyaWdnZXJlZCBpbiB0aGUgc2FtZSB3YXkgYXMgaXQgaXMKKyAgICAgICAgZHVyaW5nIGEgUGxh
dGZvcm1XaGVlbEV2ZW50LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTU2NgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
aW4tc2Nyb2xsaW5nLWRpdi5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IEVuc3VyZSB0
aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIChzY3JvbGxpbmcpIG9jY3VycyBmb3IKKyAgICAgICAg
d2hlZWwgZXZlbnRzIG9yaWdpbmF0aW5nIGJvdGggZnJvbSB0aGUgcGxhdGZvcm0gYW5kIGZyb20K
KyAgICAgICAgSmF2YVNjcmlwdC9PYmpDLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0
Y2hXaGVlbEV2ZW50KTogSW5zdGFudGlhdGUgbmV3IFdoZWVsRXZlbnQgd2l0aAorICAgICAgICB0
aGUgZ3JhdW51bGFyaXR5IG9mIHRoZSBQbGF0Zm9ybVdoZWVsRXZlbnQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkIHN1cHBvcnQgZm9yIG1vdXNld2hl
ZWwgZXZlbnRzLgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDogQWRkIHRocmVlIG5ldyBt
ZW1iZXIgdmFyaWFibGVzOiBtX2RlbHRhWCwgbV9kZWx0YVkKKyAgICAgICAgYW5kIG1fZ3JhbnVs
YXJpdHkuICBtX2RlbHRhWCBhbmQgbV9kZWx0YVkgZGlmZmVyIGZyb20gbV93aGVlbERlbHRhWCBh
bmQKKyAgICAgICAgbV93aGVlbERlbHRhWSwgd2hpY2ggYXJlIHRoZSBudW1iZXIgb2Ygd2hlZWwg
dGlja3MgbXVsdGlwbGllZCBieSAxMjAgZm9yCisgICAgICAgIElFIGNvbXBhdGliaWxpdHkuCisg
ICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KTogSW5pdGlhbGl6ZSBuZXcg
bWVtYmVyIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXaGVl
bEV2ZW50KTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRX
aGVlbEV2ZW50KTogU2FtZS4KKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOiBTZWUgV2hlZWxF
dmVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjopOiBBZGQgR3JhbnVsYXJp
dHkgZW51bSAoUGl4ZWwsIExpbmUsIFBhZ2UpLgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVu
dDo6Y3JlYXRlKTogQWRkIG5ldyBhcmd1bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2
ZW50OjpkZWx0YVgpOiBBbW91bnQgb2Ygc2Nyb2xsIGluIHggZGlyZWN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudDo6ZGVsdGFZKTogQW1vdW50IG9mIHNjcm9sbCBpbiB5IGRpcmVj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmdyYW51bGFyaXR5KTogVW5pdHMg
b2YgZGVsdGFYIGFuZCBkZWx0YVkuCisgICAgICAgICogZG9tL1doZWVsRXZlbnQuaWRsOiBBZGQg
aW5pdFdlYktpdFdoZWVsRXZlbnQoKSB0byBKYXZhU2NyaXB0LiAgVGhpcyBpcworICAgICAgICB0
aGUgc2FtZSBhcyB0aGUgaW5pdFdoZWVsRXZlbnQgT2JqQyBtZXRob2QuICBBcyB0aGUgRE9NIExl
dmVsIDMgRXZlbnRzCisgICAgICAgIHNwZWNpZmljYXRpb24gaXMgc3RpbGwgYSB3b3JraW5nIGRy
YWZ0IGFuZCBzdWJqZWN0IHRvIGNoYW5nZSwgcHJlZml4CisgICAgICAgICdXZWJLaXQnIHRvIHRo
ZSBtZXRob2Qgc2lnbmF0dXJlIHRvIGluZGljYXRlIGV4cGVyaW1lbnRhbCBzdXBwb3J0LgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDogTW92ZSB0aGUgc2Nyb2xsIGhhbmRsaW5nIGZy
b20KKyAgICAgICAgaGFuZGxlV2hlZWxFdmVudCgpIHRvIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxl
cigpLCB3aGljaCBpcyBleGVjdXRlZCBvbgorICAgICAgICBib3RoIFBsYXRmb3JtV2hlZWxFdmVu
dHMgYW5kIEphdmFTY3JpcHQgV2hlZWxFdmVudHMuCisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxO
b2RlKTogUmVuYW1lZCBmcm9tIHNjcm9sbEFuZEFjY2VwdEV2ZW50KCkuICBSZW1vdmUKKyAgICAg
ICAgdGhlIFBsYXRmb3JtV2hlZWxFdmVudCBmcm9tIHRoZSBhcmd1bWVudCBsaXN0IGFuZCBpbnN0
ZWFkIHJldHVybiBhCisgICAgICAgIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc2Nyb2xsIGV2
ZW50IHdhcyBhY2NlcHRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IE1vdmUgc2Nyb2xsaW5nIGNvZGUgZnJvbSBoZXJlCisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcik6IC4uLnRvIGhlcmUu
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDogQWRkIGZ1bmN0aW9uIHNpZ25hdHVyZS4K
KwogMjAxMC0wMy0wMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoQnVpbGQgZml4KS4KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1NTQwNCkK
KysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKQEAgLTI5MDIsMTQg
KzI5MDIsMjcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaAogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxXaGVlbEV2ZW50PiB3ZSA9IFdoZWVsRXZl
bnQ6OmNyZWF0ZShlLndoZWVsVGlja3NYKCksIGUud2hlZWxUaWNrc1koKSwKKyAgICBXaGVlbEV2
ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eTsKKyAgICBzd2l0Y2ggKGUuZ3JhbnVsYXJpdHko
KSkgeworICAgIGNhc2UgU2Nyb2xsQnlQYWdlV2hlZWxFdmVudDoKKyAgICAgICAgZ3JhbnVsYXJp
dHkgPSBXaGVlbEV2ZW50OjpQYWdlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50OgorICAgIGRlZmF1bHQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2hl
ZWxFdmVudDo6UGl4ZWw7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8
V2hlZWxFdmVudD4gd2UgPSBXaGVlbEV2ZW50OjpjcmVhdGUoZS53aGVlbFRpY2tzWCgpLCBlLndo
ZWVsVGlja3NZKCksIGUuZGVsdGFYKCksIGUuZGVsdGFZKCksIGdyYW51bGFyaXR5LAogICAgICAg
ICBkb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCBlLmdsb2JhbFgoKSwgZS5nbG9iYWxZKCksIGFk
anVzdGVkUGFnZVgsIGFkanVzdGVkUGFnZVksCiAgICAgICAgIGUuY3RybEtleSgpLCBlLmFsdEtl
eSgpLCBlLnNoaWZ0S2V5KCksIGUubWV0YUtleSgpKTsKIAogICAgIHdlLT5zZXRBYnNvbHV0ZUxv
Y2F0aW9uKEludFBvaW50KHBvcy54KCksIHBvcy55KCkpKTsKIAotICAgIGlmICghZGlzcGF0Y2hF
dmVudCh3ZS5yZWxlYXNlKCkpKQorICAgIGlmICghZGlzcGF0Y2hFdmVudCh3ZSkgfHwgd2UtPmRl
ZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgIGUuYWNjZXB0KCk7CisKKyAgICB3ZS5yZWxlYXNlKCk7
CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKQEAgLTI5NjYsNiArMjk3OSwx
OCBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQgJiYgZXZlbnQtPmlzV2hlZWxFdmVudCgpKSB7CisgICAg
ICAgIFdoZWVsRXZlbnQqIHdoZWVsRXZlbnQgPSBzdGF0aWNfY2FzdDxXaGVlbEV2ZW50Kj4oZXZl
bnQpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlbmRlcmVyLCBz
ZW5kIHRoZSB3aGVlbCBldmVudCB0byB0aGUgZmlyc3Qgbm9kZSB3ZSBmaW5kIHdpdGggYSByZW5k
ZXJlci4KKyAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIDxvcHRpb24+IGFuZCA8b3B0Z3Jv
dXA+IGVsZW1lbnRzIHNvIHRoYXQgPHNlbGVjdD5zIGdldCBhIHdoZWVsIHNjcm9sbC4KKyAgICAg
ICAgTm9kZSogc3RhcnROb2RlID0gdGhpczsKKyAgICAgICAgd2hpbGUgKHN0YXJ0Tm9kZSAmJiAh
c3RhcnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2Rl
LT5wYXJlbnQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2Rl
LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kZWZhdWx0
V2hlZWxFdmVudEhhbmRsZXIoc3RhcnROb2RlLCB3aGVlbEV2ZW50KTsKICAgICB9CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1doZWVsRXZlbnQuY3BwCShyZXZpc2lvbiA1NTQwNCkKKysrIFdlYkNvcmUvZG9tL1doZWVsRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVG9i
aWFzIEFudG9uIChhbnRvbkBzdHVkLmZiaS5maC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzEsMjEg
KzMxLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQoKQog
ICAgIDogbV93aGVlbERlbHRhWCgwKQogICAgICwgbV93aGVlbERlbHRhWSgwKQorICAgICwgbV9y
YXdEZWx0YVgoMCkKKyAgICAsIG1fcmF3RGVsdGFZKDApCisgICAgLCBtX2dyYW51bGFyaXR5KFBp
eGVsKQogewogfQogCi1XaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBm
bG9hdCB3aGVlbFRpY2tzWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsCitXaGVlbEV2
ZW50OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxv
YXQgcmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0YVksCisgICAgICAgICAgICAgICAgICAgICAgIEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIDogTW91c2VSZWxhdGVkRXZl
bnQoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5YLCBzY3Jl
ZW5ZLCBwYWdlWCwgcGFnZVksCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRL
ZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQogICAgICwgbV93aGVlbERlbHRhWChscm91bmRmKHdoZWVs
VGlja3NYICogMTIwKSkKICAgICAsIG1fd2hlZWxEZWx0YVkobHJvdW5kZih3aGVlbFRpY2tzWSAq
IDEyMCkpIC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKKyAgICAsIG1f
cmF3RGVsdGFYKHJhd0RlbHRhWCkKKyAgICAsIG1fcmF3RGVsdGFZKHJhd0RlbHRhWSkKKyAgICAs
IG1fZ3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpCiB7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5p
dFdoZWVsRXZlbnQoaW50IHdoZWVsRGVsdGFYLCBpbnQgd2hlZWxEZWx0YVksIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LAordm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQg
cmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQog
ewpAQCAtNjAsMTIgKzY3LDI1IEBAIHZvaWQgV2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoaW50
IHdoZWUKICAgICBtX2FsdEtleSA9IGFsdEtleTsKICAgICBtX3NoaWZ0S2V5ID0gc2hpZnRLZXk7
CiAgICAgbV9tZXRhS2V5ID0gbWV0YUtleTsKLSAgICBtX3doZWVsRGVsdGFYID0gd2hlZWxEZWx0
YVg7Ci0gICAgbV93aGVlbERlbHRhWSA9IHdoZWVsRGVsdGFZOworICAgIAorICAgIC8vIE5vcm1h
bGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKKyAgICBtX3doZWVsRGVsdGFYID0gcmF3
RGVsdGFYICogMTIwOworICAgIG1fd2hlZWxEZWx0YVkgPSByYXdEZWx0YVkgKiAxMjA7CisgICAg
CisgICAgbV9yYXdEZWx0YVggPSByYXdEZWx0YVg7CisgICAgbV9yYXdEZWx0YVkgPSByYXdEZWx0
YVk7CisgICAgbV9ncmFudWxhcml0eSA9IFBpeGVsOwogICAgIAogICAgIGluaXRDb29yZGluYXRl
cyhwYWdlWCwgcGFnZVkpOwogfQogCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0
S2V5LCBib29sIG1ldGFLZXkpCit7CisgICAgaW5pdFdoZWVsRXZlbnQocmF3RGVsdGFYLCByYXdE
ZWx0YVksIHZpZXcsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKKyAgICAgICAgICAg
ICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKK30KIAogYm9vbCBX
aGVlbEV2ZW50Ojppc1doZWVsRXZlbnQoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAkocmV2aXNp
b24gNTU0MDQpCisrKyBXZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwMSBUb2JpYXMgQW50b24gKGFudG9uQHN0dWQuZmJp
LmZoLWRhcm1zdGFkdC5kZSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSwzOSArMzEsNTUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGV4dGVuc2lvbjogbW91c2Ugd2hlZWwgZXZlbnQKICAg
ICBjbGFzcyBXaGVlbEV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKICAgICBwdWJs
aWM6CisgICAgICAgIGVudW0gR3JhbnVsYXJpdHkgeyBQaXhlbCwgTGluZSwgUGFnZSB9OworCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVudCk7CiAgICAgICAgIH0K
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2hlZWxFdmVudD4gY3JlYXRlKGZsb2F0IHdoZWVs
VGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZShmbG9hdCB3aGVl
bFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksCisgICAgICAgICAgICBmbG9hdCByYXdEZWx0YVgs
IGZsb2F0IHJhd0RlbHRhWSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQdHI8QWJz
dHJhY3RWaWV3PiB2aWV3LAogICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwKICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwg
dmlldywgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwgcmF3RGVs
dGFYLCByYXdEZWx0YVksCisgICAgICAgICAgICAgICAgZ3JhbnVsYXJpdHksIHZpZXcsIHNjcmVl
blgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRL
ZXksIHNoaWZ0S2V5LCBtZXRhS2V5KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRX
aGVlbEV2ZW50KGludCB3aGVlbERlbHRhWCwgaW50IHdoZWVsRGVsdGFZLCBQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4sCisgICAgICAgIHZvaWQgaW5pdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIAorICAgICAgICB2b2lkIGluaXRXZWJL
aXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJz
dHJhY3RWaWV3PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSk7CisKICAgICAgICAgaW50IHdoZWVsRGVsdGEoKSBjb25zdCB7IGlmICht
X3doZWVsRGVsdGFZID09IDApIHJldHVybiBtX3doZWVsRGVsdGFYOyByZXR1cm4gbV93aGVlbERl
bHRhWTsgfQogICAgICAgICBpbnQgd2hlZWxEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RGVsdGFYOyB9CiAgICAgICAgIGludCB3aGVlbERlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hl
ZWxEZWx0YVk7IH0KKyAgICAgICAgaW50IHJhd0RlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3
RGVsdGFYOyB9CisgICAgICAgIGludCByYXdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3Jhd0Rl
bHRhWTsgfQorICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhbnVsYXJpdHk7IH0KIAogICAgICAgICAvLyBOZWVkZWQgZm9yIE9iamVjdGl2ZS1DIGxl
Z2FjeSBzdXBwb3J0CiAgICAgICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4g
bV93aGVlbERlbHRhWDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2hlZWxFdmVudCgpOwot
ICAgICAgICBXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwg
UGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LAorICAgICAgICBXaGVlbEV2ZW50KGZsb2F0IHdoZWVs
VGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxvYXQgcmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0
YVksCisgICAgICAgICAgICAgICAgICAgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQ
dHI8QWJzdHJhY3RWaWV3PiwKICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAgICAgICAgIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGlzV2hlZWxFdmVudCgpIGNvbnN0OwotCisgICAgICAgIAogICAgICAg
ICBpbnQgbV93aGVlbERlbHRhWDsKICAgICAgICAgaW50IG1fd2hlZWxEZWx0YVk7CisKKyAgICAg
ICAgaW50IG1fcmF3RGVsdGFYOworICAgICAgICBpbnQgbV9yYXdEZWx0YVk7CisgICAgICAgIEdy
YW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5pZGwJKHJldmlzaW9uIDU1NDA0KQorKysgV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTcsNiArNTcsMTkgQEAgbW9kdWxlIGV2ZW50cyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBzaGlmdEtleSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIG1ldGFLZXkpOwogI2VuZGlmIC8qICFkZWZp
bmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICovCi0gICAgfTsKIAorI2lmIGRlZmluZWQoTEFOR1VB
R0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgICAgICB2b2lkIGluaXRX
ZWJLaXRXaGVlbEV2ZW50KGluIGxvbmcgd2hlZWxEZWx0YVgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gbG9uZyB3aGVlbERlbHRhWSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NV2luZG93IHZpZXcsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGxvbmcgc2NyZWVuWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBsb25nIHNjcmVlblksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gbG9uZyBjbGllbnRYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGxvbmcgY2xpZW50WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29s
ZWFuIGN0cmxLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVh
biBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBz
aGlmdEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIG1l
dGFLZXkpOworI2VuZGlmIC8qIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgKi8KKyAgICB9
OwogfQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDU1NDA0KQorKysgV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKKyNpbmNsdWRlICJX
aGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gZm9yIGNvbXBhcmVQb3Np
dGlvbnMoKQogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTA3LDIzICsxMDgs
MjYgQEAgY29uc3QgZG91YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CiAKIHN0YXRpYyBG
cmFtZSogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmKTsKIAotc3RhdGljIGlubGluZSB2b2lkIHNjcm9sbEFuZEFjY2VwdEV2ZW50KGZs
b2F0IGRlbHRhLCBTY3JvbGxEaXJlY3Rpb24gcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbERpcmVj
dGlvbiBuZWdhdGl2ZURpcmVjdGlvbiwgUGxhdGZvcm1XaGVlbEV2ZW50JiBlLCBOb2RlKiBub2Rl
LCBOb2RlKiogc3RvcE5vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2Nyb2xsTm9kZShmbG9hdCBk
ZWx0YSwgV2hlZWxFdmVudDo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNjcm9sbERpcmVjdGlv
biBwb3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsRGlyZWN0aW9uIG5lZ2F0aXZlRGlyZWN0aW9uLCBO
b2RlKiBub2RlLCBOb2RlKiogc3RvcE5vZGUpCiB7CiAgICAgaWYgKCFkZWx0YSkKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIC8vIEZp
bmQgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGJveC4KICAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0Jv
eCA9IG5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0JveCgpOwogCi0gICAgaWYgKGUuZ3JhbnVs
YXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7Ci0gICAgICAgIGlmIChlbmNsb3Np
bmdCb3gtPnNjcm9sbChkZWx0YSA8IDAgPyBuZWdhdGl2ZURpcmVjdGlvbiA6IHBvc2l0aXZlRGly
ZWN0aW9uLCBTY3JvbGxCeVBhZ2UsIDEsIHN0b3BOb2RlKSkKLSAgICAgICAgICAgIGUuYWNjZXB0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZmxvYXQgYWJzRGVsdGEgPSBkZWx0YSA+
IDAgPyBkZWx0YSA6IC1kZWx0YTsKKyAgICAKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gV2hlZWxF
dmVudDo6UGFnZSkKKyAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0JveC0+c2Nyb2xsKGRlbHRhIDwg
MCA/IG5lZ2F0aXZlRGlyZWN0aW9uIDogcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbEJ5UGFnZSwg
YWJzRGVsdGEsIHN0b3BOb2RlKTsKKworICAgIGlmIChncmFudWxhcml0eSA9PSBXaGVlbEV2ZW50
OjpMaW5lKQorICAgICAgICByZXR1cm4gZW5jbG9zaW5nQm94LT5zY3JvbGwoZGVsdGEgPCAwID8g
bmVnYXRpdmVEaXJlY3Rpb24gOiBwb3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsQnlMaW5lLCBhYnNE
ZWx0YSwgc3RvcE5vZGUpOwogCi0gICAgZmxvYXQgcGl4ZWxzVG9TY3JvbGwgPSBkZWx0YSA+IDAg
PyBkZWx0YSA6IC1kZWx0YTsKLSAgICBpZiAoZW5jbG9zaW5nQm94LT5zY3JvbGwoZGVsdGEgPCAw
ID8gbmVnYXRpdmVEaXJlY3Rpb24gOiBwb3NpdGl2ZURpcmVjdGlvbiwgU2Nyb2xsQnlQaXhlbCwg
cGl4ZWxzVG9TY3JvbGwsIHN0b3BOb2RlKSkKLSAgICAgICAgZS5hY2NlcHQoKTsKKyAgICBpZiAo
Z3JhbnVsYXJpdHkgPT0gV2hlZWxFdmVudDo6UGl4ZWwpCisgICAgICAgIHJldHVybiBlbmNsb3Np
bmdCb3gtPnNjcm9sbChkZWx0YSA8IDAgPyBuZWdhdGl2ZURpcmVjdGlvbiA6IHBvc2l0aXZlRGly
ZWN0aW9uLCBTY3JvbGxCeVBpeGVsLCBhYnNEZWx0YSwgc3RvcE5vZGUpOworICAgICAgICAKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUoRVhQRVJJ
TUVOVEFMX1NJTkdMRV9WSUVXX01PREUpCkBAIC0xODY1LDIxICsxODY5LDYgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdAogICAgICAgICBub2RlLT5kaXNwYXRjaFdo
ZWVsRXZlbnQoZSk7CiAgICAgICAgIGlmIChlLmlzQWNjZXB0ZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2Vu
ZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVy
ZXIuCi0gICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3Vw
PiBlbGVtZW50cyBzbyB0aGF0IDxzZWxlY3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCi0gICAgICAg
IHdoaWxlIChub2RlICYmICFub2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudCgpOwotCi0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgICAgIC8vIEp1c3QgYnJlYWsgdXAgaW50byB0d28gc2Nyb2xscyBpZiB3ZSBuZWVk
IHRvLiAgRGlhZ29uYWwgbW92ZW1lbnQgb24gCi0gICAgICAgICAgICAvLyBhIE1hY0Jvb2sgcHJv
IGlzIGFuIGV4YW1wbGUgb2YgYSAyLWRpbWVuc2lvbmFsIG1vdXNlIHdoZWVsIGV2ZW50ICh3aGVy
ZSBib3RoIGRlbHRhWCBhbmQgZGVsdGFZIGNhbiBiZSBzZXQpLgotICAgICAgICAgICAgTm9kZSog
c3RvcE5vZGUgPSBtX3ByZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUuZ2V0KCk7Ci0gICAgICAgICAg
ICBzY3JvbGxBbmRBY2NlcHRFdmVudChlLmRlbHRhWCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxSaWdo
dCwgZSwgbm9kZSwgJnN0b3BOb2RlKTsKLSAgICAgICAgICAgIHNjcm9sbEFuZEFjY2VwdEV2ZW50
KGUuZGVsdGFZKCksIFNjcm9sbFVwLCBTY3JvbGxEb3duLCBlLCBub2RlLCAmc3RvcE5vZGUpOwot
ICAgICAgICAgICAgaWYgKCFtX3VzZUxhdGNoZWRXaGVlbEV2ZW50Tm9kZSkKLSAgICAgICAgICAg
ICAgICBtX3ByZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUgPSBzdG9wTm9kZTsKLSAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChlLmlzQWNjZXB0ZWQoKSkKQEAgLTE4OTIsNiArMTg4MSwyNSBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChQbGF0CiAgICAgdmlldy0+d2hlZWxF
dmVudChlKTsKICAgICByZXR1cm4gZS5pc0FjY2VwdGVkKCk7CiB9CisgICAgCit2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxF
dmVudCogd2hlZWxFdmVudCkKK3sKKyAgICBpZiAoIXN0YXJ0Tm9kZSB8fCAhd2hlZWxFdmVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIE5vZGUqIHN0b3BOb2RlID0gbV9wcmV2aW91c1do
ZWVsU2Nyb2xsZWROb2RlLmdldCgpOworICAgIAorICAgIC8vIEJyZWFrIHVwIGludG8gdHdvIHNj
cm9sbHMgaWYgd2UgbmVlZCB0by4gIERpYWdvbmFsIG1vdmVtZW50IG9uIAorICAgIC8vIGEgTWFj
Qm9vayBwcm8gaXMgYW4gZXhhbXBsZSBvZiBhIDItZGltZW5zaW9uYWwgbW91c2Ugd2hlZWwgZXZl
bnQgKHdoZXJlIGJvdGggZGVsdGFYIGFuZCBkZWx0YVkgY2FuIGJlIHNldCkuCisgICAgaWYgKHNj
cm9sbE5vZGUod2hlZWxFdmVudC0+cmF3RGVsdGFYKCksIHdoZWVsRXZlbnQtPmdyYW51bGFyaXR5
KCksIFNjcm9sbExlZnQsIFNjcm9sbFJpZ2h0LCBzdGFydE5vZGUsICZzdG9wTm9kZSkpCisgICAg
ICAgIHdoZWVsRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgCisgICAgaWYgKHNjcm9s
bE5vZGUod2hlZWxFdmVudC0+cmF3RGVsdGFZKCksIHdoZWVsRXZlbnQtPmdyYW51bGFyaXR5KCks
IFNjcm9sbFVwLCBTY3JvbGxEb3duLCBzdGFydE5vZGUsICZzdG9wTm9kZSkpCisgICAgICAgIHdo
ZWVsRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgCisgICAgaWYgKCFtX3VzZUxhdGNo
ZWRXaGVlbEV2ZW50Tm9kZSkKKyAgICAgICAgbV9wcmV2aW91c1doZWVsU2Nyb2xsZWROb2RlID0g
c3RvcE5vZGU7Cit9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIGJvb2wgRXZlbnRIYW5k
bGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNTU0MDQpCisrKyBXZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgU3RyaW5nOwogY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogY2xh
c3MgVGV4dEV2ZW50OwogY2xhc3MgVG91Y2hFdmVudDsKK2NsYXNzIFdoZWVsRXZlbnQ7CiBjbGFz
cyBXaWRnZXQ7CiAgICAgCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE0Niw2ICsxNDcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDApOwogICAgIGJvb2wg
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGVm
YXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqLCBXaGVlbEV2ZW50Kik7CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTU0MDQpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMy0wMiAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgdGhlIHBhdGNoIHRvIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTU2Ni4KKyAgICAgICAgVGhl
c2UgY2FuIGJlIHJ1biBtYW51YWxseSBvciBmcm9tIERSVC4KKworICAgICAgICAqIGZhc3QvZXZl
bnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sOiBBZGRl
ZC4KKwogMjAxMC0wMi0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3do
ZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNiBAQAorc2Nyb2xsVG9wPTIwMCAoc2hvdWxkIGJlIDIwMCk6IFBBU1MKK3Njcm9sbExl
ZnQ9MTAwIChzaG91bGQgYmUgMTAwKTogUEFTUword2hlZWxEZWx0YVk9LTI0MDAwIChzaG91bGQg
YmUgLTI0MDAwKTogUEFTUword2hlZWxEZWx0YVg9LTEyMDAwIChzaG91bGQgYmUgLTEyMDAwKTog
UEFTUword2hlZWxEZWx0YT0tMjQwMDAgKHNob3VsZCBiZSAtMjQwMDApOiBQQVNTCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Ny
b2xsaW5nLWRpdi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODQgQEAKKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFRv
cCA9IDIwMDsKKyAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xsTGVmdCA9IDEwMDsKKworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkaXNw
YXRjaFdoZWVsRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgb3ZlcmZsb3dFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm92ZXJmbG93Iik7CisgICAgICAgICAgICBp
ZiAob3ZlcmZsb3dFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3dFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldo
ZWVsRXZlbnQiKTsKKyAgICAgICAgICAgICAgICBpZiAod2hlZWxFdmVudCkgeworICAgICAgICAg
ICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KC13aW5kb3cuZXhwZWN0
ZWRTY3JvbGxMZWZ0LCAtd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wLCB3aW5kb3csIDAsIDAsIDAs
IDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgb3Zl
cmZsb3dFbGVtZW50LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXRUaW1lb3V0KCdwcmludFNjcm9sbE9m
ZnNldHMoKTsnLCAxMDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcGFzc0ZhaWxT
dHJpbmcocCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbG9yID0gcD8iZ3JlZW4iOiJy
ZWQiOworICAgICAgICAgICAgdmFyIHRleHQgPSBwPyJQQVNTIjoiRkFJTCI7CisgICAgICAgICAg
ICByZXR1cm4gIjxzcGFuIHN0eWxlPSdjb2xvcjoiK2NvbG9yKyInPiIrdGV4dCsiPC9zcGFuPiI7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcmludFNjcm9sbE9mZnNldHMoKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgY29uc29sZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvZmZzZXRDb25zb2xlIik7CisgICAgICAgICAgICB2YXIgb3ZlcmZsb3dEaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib3ZlcmZsb3ciKTsKKyAgICAgICAgICAgIGlmIChjb25zb2xl
RGl2ICYmIG92ZXJmbG93RGl2KSB7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhU
TUwgPSAiIjsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5uZXJIVE1MICs9ICJzY3Jv
bGxUb3A9IiArIG92ZXJmbG93RGl2LnNjcm9sbFRvcCArICIgKHNob3VsZCBiZSAiICsgd2luZG93
LmV4cGVjdGVkU2Nyb2xsVG9wICsgIik6ICI7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5p
bm5lckhUTUwgKz0gcGFzc0ZhaWxTdHJpbmcob3ZlcmZsb3dEaXYuc2Nyb2xsVG9wID09IHdpbmRv
dy5leHBlY3RlZFNjcm9sbFRvcCk7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhU
TUwgKz0gIjxicj4iCisKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCArPSAi
c2Nyb2xsTGVmdD0iICsgb3ZlcmZsb3dEaXYuc2Nyb2xsTGVmdCArICIgKHNob3VsZCBiZSAiICsg
d2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCArICIpOiAiOworICAgICAgICAgICAgICAgIGNvbnNv
bGVEaXYuaW5uZXJIVE1MICs9IHBhc3NGYWlsU3RyaW5nKG92ZXJmbG93RGl2LnNjcm9sbExlZnQg
PT0gd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCk7CisgICAgICAgICAgICAgICAgY29uc29sZURp
di5pbm5lckhUTUwgKz0gIjxicj4iCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb25z
b2xlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vdXNld2hlZWxDb25zb2xlIik7Cisg
ICAgICAgICAgICBpZiAoY29uc29sZURpdikgeworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYu
aW5uZXJIVE1MID0gIiI7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCAr
PSAid2hlZWxEZWx0YVk9IiArIGUud2hlZWxEZWx0YVkgKyAiIChzaG91bGQgYmUgIiArIHdpbmRv
dy5leHBlY3RlZFNjcm9sbFRvcCotMTIwICsgIik6ICI7CisgICAgICAgICAgICAgICAgY29uc29s
ZURpdi5pbm5lckhUTUwgKz0gcGFzc0ZhaWxTdHJpbmcoZS53aGVlbERlbHRhWSA9PSB3aW5kb3cu
ZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMCk7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5l
ckhUTUwgKz0gIjxicj4iCisKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCAr
PSAid2hlZWxEZWx0YVg9IiArIGUud2hlZWxEZWx0YVggKyAiIChzaG91bGQgYmUgIiArIHdpbmRv
dy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMCArICIpOiAiOworICAgICAgICAgICAgICAgIGNvbnNv
bGVEaXYuaW5uZXJIVE1MICs9IHBhc3NGYWlsU3RyaW5nKGUud2hlZWxEZWx0YVggPT0gd2luZG93
LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlRGl2Lmlu
bmVySFRNTCArPSAiPGJyPiIKKworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbCA9
IGUud2hlZWxEZWx0YVk/d2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wOndpbmRvdy5leHBlY3RlZFNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgY29uc29sZURpdi5pbm5lckhUTUwgKz0gIndoZWVs
RGVsdGE9IiArIGUud2hlZWxEZWx0YSArICIgKHNob3VsZCBiZSAiICsgZXhwZWN0ZWRTY3JvbGwq
LTEyMCArICIpOiAiOworICAgICAgICAgICAgICAgIGNvbnNvbGVEaXYuaW5uZXJIVE1MICs9IHBh
c3NGYWlsU3RyaW5nKGUud2hlZWxEZWx0YSA9PSBleHBlY3RlZFNjcm9sbCotMTIwKTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlRGl2LmlubmVySFRNTCArPSAiPGJyPiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBzdHlsZT0ibWFyZ2lu
OjAiIG9ubG9hZD0ic2V0VGltZW91dCgnZGlzcGF0Y2hXaGVlbEV2ZW50KCk7JywgMTAwKSI+Cisg
ICAgPGRpdiBpZD0ib3ZlcmZsb3ciIHN0eWxlPSJib3JkZXI6MnB4IHNvbGlkIGJsYWNrO292ZXJm
bG93OmF1dG87aGVpZ2h0OjIwMHB4O3dpZHRoOjIwMHB4OyI+CisgICAgICAgIDxkaXYgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6cmVkO2hlaWdodDoyMDBweDt3aWR0aDo0MDBweDsiPjwvZGl2Pgor
ICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO2hlaWdodDoyMDBweDt3
aWR0aDo0MDBweDsiPjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OnJlZDtoZWlnaHQ6MjAwcHg7d2lkdGg6NDAwcHg7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGlkPSJvZmZzZXRDb25zb2xlIj48c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5GQUlMPC9zcGFu
PjwvZGl2PgorICAgIDxkaXYgaWQ9Im1vdXNld2hlZWxDb25zb2xlIj48c3BhbiBzdHlsZT0iY29s
b3I6cmVkIj5GQUlMPC9zcGFuPjwvZGl2PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="32769"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>