<?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>23539</bug_id>
          
          <creation_ts>2009-01-25 17:49:19 -0800</creation_ts>
          <short_desc>Form control specific methods could be moved away from Node/Element</short_desc>
          <delta_ts>2019-02-06 09:03:23 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>cdumez</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106986</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-01-25 17:49:19 -0800</bug_when>
    <thetext>Some virtual methods living in Node/Element are related to form control elements only.
isAutofilled / isTextControl / etc... (nine methods in total)

As we now have some abstract base classes for form control elements (FormControlElement/InputElement/etc) we could add pure-virtual methods there, instead of jamming Node/Element.

Proof-on-concept patch following.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106987</commentid>
    <comment_count>1</comment_count>
      <attachid>27032</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-01-25 17:53:57 -0800</bug_when>
    <thetext>Created attachment 27032
Initial patch

As discussed on IRC, would be great if Dave could check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107400</commentid>
    <comment_count>2</comment_count>
      <attachid>27032</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-28 14:07:25 -0800</bug_when>
    <thetext>Comment on attachment 27032
Initial patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107574</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-01-29 13:23:27 -0800</bug_when>
    <thetext>Landed in r40370.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502957</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:23 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27032</attachid>
            <date>2009-01-25 17:53:57 -0800</date>
            <delta_ts>2009-01-28 14:07:25 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>ProofOfConcept.diff</filename>
            <type>text/plain</type>
            <size>31040</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMDktMDEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4ZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUzOQorCisgICAgICAgIFJlbW92ZSBzZXZlcmFsIHZpcnR1YWwgZnVuY3Rp
b25zIGZyb20gTm9kZSAmIEVsZW1lbnQgcmVsYXRlZCB0byBmb3JtIGNvbnRyb2wgLyBpbnB1dCBl
bGVtZW50cywKKyAgICAgICAgdGhhdCBzaG91bGRuJ3QgcmVzaWRlIHRoZXJlLCBidXQgbW92ZSB0
byBhcHByb3JpYXRlIGxvY2F0aW9ucywgaW4gdGhlIG5ldyBmb3JtIGNvbnRyb2wgLworICAgICAg
ICBpbnB1dCBlbGVtZW50IGFic3RyYWN0IGJhc2UgY2xhc3Nlcy4KKworICAgICAgICBSZW1vdmUg
dGhlIGlzQ29udHJvbCgpIG1ldGhvZCBmcm9tIE5vZGUsIGFzIGl0J3MgcmVkdW5kYW50IC0gaXNG
b3JtQ29udHJvbEVsZW1lbnQoKSBwcm92aWRlcyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KKyAgICAg
ICAgTW92ZSBpc0VuYWJsZWQoIC8gaXNSZWFkT25seUNvbnRyb2woKSAvIGlzVGV4dENvbnRyb2wo
KSBmcm9tIE5vZGUgdG8gRm9ybUNvbnRyb2xFbGVtZW50LgorICAgICAgICBNb3ZlIGlzQXV0b2Zp
bGxlZCgpIC8gaXNDaGVja2VkKCkgLyBpc0luZGV0ZXJtaW5hdGUoKSBmcm9tIE5vZGUgdG8gSW5w
dXRFbGVtZW50LgorICAgICAgICBNb3ZlIGlzSW5wdXRUeXBlSGlkZGVuKCkgLyBpc1Bhc3N3b3Jk
RmllbGQoKSBmcm9tIEVsZW1lbnQgdG8gSW5wdXRFbGVtZW50LgorCisgICAgICAgIFF1ZXJ5aW5n
IHRoZXNlIG1ldGhvZHMgcmVxdWlyZXMgdXNpbmcgdGhlIHRvSW5wdXRFbGVtZW50L3RvRm9ybUNv
bnRyb2xFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICB0byBjYXN0IEVs
ZW1lbnQgcG9pbnRlcnMgdG8gSW5wdXRFbGVtZW50L0Zvcm1Db250cm9sRWxlbWVudCBwb2ludGVy
cy4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojppc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSk6CisgICAgICAgICogZG9tL0Zvcm1D
b250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1RleHRDb250
cm9sKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OkNoZWNrZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbik6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50Ojppc0F1dG9maWxsZWQpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNJbmRldGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQ2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0NvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKToKKyAgICAg
ICAgKiBwYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKHRl
eHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRN
ZW51LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpwb3B1bGF0ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpyZXNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzQ2hlY2tlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aXNJbmRldGVybWluYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjppc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OmlzUmVhZE9ubHlDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0
TWVudUxpc3RTdHlsZSk6CisKIDIwMDktMDEtMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC05MzksMTUg
KzkzOSwyOSBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAg
ICAgICAgICAocy0+Z2V0QXR0cmlidXRlKGxhbmdBdHRyKSA9PSBtX2VsZW1lbnQtPmdldEF0dHJp
YnV0ZShsYW5nQXR0cikpICYmCiAgICAgICAgICAgICAocy0+Z2V0QXR0cmlidXRlKHJlYWRvbmx5
QXR0cikgPT0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyKSkgJiYKICAgICAg
ICAgICAgIChzLT5nZXRBdHRyaWJ1dGUoY2VsbHBhZGRpbmdBdHRyKSA9PSBtX2VsZW1lbnQtPmdl
dEF0dHJpYnV0ZShjZWxscGFkZGluZ0F0dHIpKSkgewotICAgICAgICAgICAgYm9vbCBpc0NvbnRy
b2wgPSBzLT5pc0NvbnRyb2woKTsKLSAgICAgICAgICAgIGlmIChpc0NvbnRyb2wgIT0gbV9lbGVt
ZW50LT5pc0NvbnRyb2woKSkKKyAgICAgICAgICAgIGJvb2wgaXNDb250cm9sID0gcy0+aXNGb3Jt
Q29udHJvbEVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChpc0NvbnRyb2wgIT0gbV9lbGVtZW50
LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGlmIChpc0NvbnRyb2wgJiYgKHMtPmlzRW5hYmxlZCgpICE9IG1fZWxlbWVu
dC0+aXNFbmFibGVkKCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5pc0lu
ZGV0ZXJtaW5hdGUoKSAhPSBtX2VsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgpKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocy0+aXNDaGVja2VkKCkgIT0gbV9lbGVtZW50LT5pc0No
ZWNrZWQoKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmlzQXV0b2ZpbGxl
ZCgpICE9IG1fZWxlbWVudC0+aXNBdXRvZmlsbGVkKCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzQ29udHJvbCkgeworICAg
ICAgICAgICAgICAgIElucHV0RWxlbWVudCogdGhpc0lucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVt
ZW50KHMpOworICAgICAgICAgICAgICAgIElucHV0RWxlbWVudCogb3RoZXJJbnB1dEVsZW1lbnQg
PSB0b0lucHV0RWxlbWVudChtX2VsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmICh0aGlzSW5w
dXRFbGVtZW50ICYmIG90aGVySW5wdXRFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgodGhpc0lucHV0RWxlbWVudC0+aXNBdXRvZmlsbGVkKCkgIT0gb3RoZXJJbnB1dEVsZW1lbnQt
PmlzQXV0b2ZpbGxlZCgpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJbnB1dEVs
ZW1lbnQtPmlzQ2hlY2tlZCgpICE9IG90aGVySW5wdXRFbGVtZW50LT5pc0NoZWNrZWQoKSkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSW5wdXRFbGVtZW50LT5pc0luZGV0ZXJtaW5h
dGUoKSAhPSBvdGhlcklucHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCkpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIEZvcm1Db250cm9s
RWxlbWVudCogdGhpc0Zvcm1Db250cm9sRWxlbWVudCA9IHRvRm9ybUNvbnRyb2xFbGVtZW50KHMp
OworICAgICAgICAgICAgICAgIEZvcm1Db250cm9sRWxlbWVudCogb3RoZXJGb3JtQ29udHJvbEVs
ZW1lbnQgPSB0b0Zvcm1Db250cm9sRWxlbWVudChtX2VsZW1lbnQpOworICAgICAgICAgICAgICAg
IGlmICh0aGlzRm9ybUNvbnRyb2xFbGVtZW50ICYmIG90aGVyRm9ybUNvbnRyb2xFbGVtZW50KSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzRm9ybUNvbnRyb2xFbGVtZW50LT5pc0VuYWJs
ZWQoKSAhPSBvdGhlckZvcm1Db250cm9sRWxlbWVudC0+aXNFbmFibGVkKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgaWYgKHN0eWxlLT50cmFuc2l0aW9ucygpIHx8IHN0eWxlLT5hbmltYXRpb25zKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTI2LDcgKzE1NDAsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFkanVzdFJlbmRlclN0eWxlCiAKICAgICAvLyBJbXBvcnRhbnQ6IElu
dHJpbnNpYyBtYXJnaW5zIGdldCBhZGRlZCB0byBjb250cm9scyBiZWZvcmUgdGhlIHRoZW1lIGhh
cyBhZGp1c3RlZCB0aGUgc3R5bGUsIHNpbmNlIHRoZSB0aGVtZSB3aWxsCiAgICAgLy8gYWx0ZXIg
Zm9udHMgYW5kIGhlaWdodHMvd2lkdGhzLgotICAgIGlmIChlICYmIGUtPmlzQ29udHJvbCgpICYm
IHN0eWxlLT5mb250U2l6ZSgpID49IDExKSB7CisgICAgaWYgKGUgJiYgZS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSAmJiBzdHlsZS0+Zm9udFNpemUoKSA+PSAxMSkgewogICAgICAgICAvLyBEb24n
dCBhcHBseSBpbnRyaW5zaWMgbWFyZ2lucyB0byBpbWFnZSBidXR0b25zLiAgVGhlIGRlc2lnbmVy
IGtub3dzIGhvdyBiaWcgdGhlIGltYWdlcyBhcmUsCiAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8g
dHJlYXQgYWxsIGltYWdlIGJ1dHRvbnMgYXMgdGhvdWdoIHRoZXkgd2VyZSBleHBsaWNpdGx5IHNp
emVkLgogICAgICAgICBpZiAoIWUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlKS0+aW5wdXRUeXBlKCkgIT0gSFRNTElucHV0RWxlbWVudDo6
SU1BR0UpCkBAIC0yMjA0LDEwICsyMjE4LDEzIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRv
QW55TGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9MaW5rIHx8IHBzZXVkb1N0YXRlID09IFBz
ZXVkb1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2Zp
bGw6Ci0gICAgICAgICAgICAgICAgaWYgKGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBl
LT5pc0F1dG9maWxsZWQoKTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0F1
dG9maWxsOiB7CisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAo
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0lucHV0RWxlbWVudChlKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNBdXRvZmlsbGVkKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9MaW5rOgogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9Vbmtub3duIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAgICAg
ICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKQEAgLTIyNTksMzcgKzIy
NzYsNjIgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0VuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aXND
b250cm9sKCkgJiYgIWUtPmlzSW5wdXRUeXBlSGlkZGVuKCkpCisgICAgICAgICAgICAgICAgaWYg
KGUgJiYgZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KGUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNJbnB1dFR5cGVI
aWRkZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgVUkgc3BlYyBzdGF0ZXMgdGhhdCB5b3UgY2FuJ3QgbWF0Y2ggOmVuYWJsZWQg
dW5sZXNzIHlvdSBhcmUgYW4gb2JqZWN0IHRoYXQgY2FuCiAgICAgICAgICAgICAgICAgICAgIC8v
ICJyZWNlaXZlIGZvY3VzIGFuZCBiZSBhY3RpdmF0ZWQuIiAgV2Ugd2lsbCBsaW1pdCBtYXRjaGlu
ZyBvZiB0aGlzIHBzZXVkby1jbGFzcyB0byBlbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAv
LyB0aGF0IGFyZSBub24tImhpZGRlbiIgY29udHJvbHMuCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlLT5pc0VuYWJsZWQoKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdG9Gb3JtQ29udHJvbEVsZW1lbnQoZSktPmlzRW5hYmxlZCgpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0Z1bGxQYWdlTWVkaWE6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUg
JiYgZS0+ZG9jdW1lbnQoKSAmJiBlLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0Rpc2FibGVkOgotICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmlzQ29udHJvbCgpICYmICFl
LT5pc0lucHV0VHlwZUhpZGRlbigpKQorICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5wdXRFbGVtZW50KiBp
bnB1dEVsZW1lbnQgPSB0b0lucHV0RWxlbWVudChlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzSW5wdXRUeXBlSGlkZGVuKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
VUkgc3BlYyBzdGF0ZXMgdGhhdCB5b3UgY2FuJ3QgbWF0Y2ggOmVuYWJsZWQgdW5sZXNzIHlvdSBh
cmUgYW4gb2JqZWN0IHRoYXQgY2FuCiAgICAgICAgICAgICAgICAgICAgIC8vICJyZWNlaXZlIGZv
Y3VzIGFuZCBiZSBhY3RpdmF0ZWQuIiAgV2Ugd2lsbCBsaW1pdCBtYXRjaGluZyBvZiB0aGlzIHBz
ZXVkby1jbGFzcyB0byBlbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGFyZSBu
b24tImhpZGRlbiIgY29udHJvbHMuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZS0+aXNF
bmFibGVkKCk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICF0b0Zvcm1Db250cm9sRWxlbWVudChlKS0+aXNFbmFibGVkKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvUmVhZE9ubHk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS0+aXNUZXh0Q29u
dHJvbCgpICYmIGUtPmlzUmVhZE9ubHlDb250cm9sKCk7Ci0gICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9SZWFkV3JpdGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS0+
aXNUZXh0Q29udHJvbCgpICYmICFlLT5pc1JlYWRPbmx5Q29udHJvbCgpOwotICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZDoKKyAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1JlYWRPbmx5OiB7CisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgRm9ybUNvbnRyb2xFbGVtZW50KiBmb3JtQ29udHJvbEVsZW1lbnQg
PSB0b0Zvcm1Db250cm9sRWxlbWVudChlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9ybUNv
bnRyb2xFbGVtZW50LT5pc1RleHRDb250cm9sKCkgJiYgZm9ybUNvbnRyb2xFbGVtZW50LT5pc1Jl
YWRPbmx5Q29udHJvbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvUmVhZFdyaXRlOiB7CisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgRm9ybUNvbnRyb2xFbGVtZW50KiBmb3JtQ29udHJvbEVsZW1lbnQg
PSB0b0Zvcm1Db250cm9sRWxlbWVudChlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9ybUNv
bnRyb2xFbGVtZW50LT5pc1RleHRDb250cm9sKCkgJiYgIWZvcm1Db250cm9sRWxlbWVudC0+aXNS
ZWFkT25seUNvbnRyb2woKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NoZWNrZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIFdpbklFIGFsbG93cyBjaGVja2VkIGFuZCBpbmRldGVy
bWluYXRlIHRvIGNvLWV4aXN0LCB0aGUgQ1NTIHNlbGVjdG9yIHNwZWMgc2F5cyB0aGF0CiAgICAg
ICAgICAgICAgICAgLy8geW91IGNhbid0IGJlIGJvdGggY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0
ZS4gIFdlIHdpbGwgYmVoYXZlIGxpa2UgV2luSUUgYmVoaW5kIHRoZSBzY2VuZXMgYW5kIGp1c3QK
ICAgICAgICAgICAgICAgICAvLyBvYmV5IHRoZSBDU1Mgc3BlYyBoZXJlIGluIHRoZSB0ZXN0IGZv
ciBtYXRjaGluZyB0aGUgcHNldWRvLgotICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmlzQ2hl
Y2tlZCgpICYmICFlLT5pc0luZGV0ZXJtaW5hdGUoKSkKKyAgICAgICAgICAgICAgICBJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KGUpOworICAgICAgICAgICAgICAg
IGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc0NoZWNrZWQoKSAmJiAhaW5wdXRF
bGVtZW50LT5pc0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9JbmRldGVybWluYXRlOgotICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmlzSW5k
ZXRlcm1pbmF0ZSgpKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvSW5kZXRlcm1pbmF0ZTogeworICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+
aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0lucHV0RWxlbWVudChl
KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNJ
bmRldGVybWluYXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvUm9vdDoKICAgICAgICAgICAgICAgICBpZiAoZSA9PSBlLT5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxl
bWVudC5oCShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIyLDggKzEyMiw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFR5cGVIaWRkZW4oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgU3RyaW5nIG5vZGVOYW1lUHJlc2VydmluZ0Nhc2UoKSBjb25z
dDsKIApJbmRleDogV2ViQ29yZS9kb20vRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDQwMjM2KQorKysg
V2ViQ29yZS9kb20vRm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDEwIEBAIGNsYXNzIEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+Rm9ybUNvbnRyb2xFbGVtZW50KCkgeyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVk
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5Q29udHJvbCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKKwogICAg
IHZpcnR1YWwgYm9vbCB2YWx1ZU1hdGNoZXNSZW5kZXJlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoYm9vbCB2YWx1ZSA9IHRydWUpID0gMDsK
IApJbmRleDogV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDQwMjM2KQorKysgV2ViQ29yZS9kb20vSW5w
dXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDEwIEBAIGNsYXNzIElucHV0
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5wdXRFbGVtZW50KCkgeyB9CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBdXRvZmlsbGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0NoZWNrZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5kZXRlcm1pbmF0
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFR5cGVIaWRkZW4oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0RmllbGQoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNv
cmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDE0ICsyOTAsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNBdXRvZmlsbGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gLy8gRXZlbnR1
YWxseSB0aGUgbm90aW9uIG9mIHdoYXQgaXMgYSBjb250cm9sIHdpbGwgYmUgZXh0ZW5zaWJsZS4K
LSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotCiAgICAgdmlydHVhbCBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAkocmV2aXNpb24gNDAyMzYpCisrKyBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw5IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjphZHZhbmNlKCkKICAgICAgICAgICAgIGlmICghbV9oYW5kbGVkTm9kZSkgewogICAgICAgICAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5ub2RlVHlwZSgpID09IE5v
ZGU6OlRFWFRfTk9ERSkgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwog
ICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlVGV4dE5vZGUoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8
fCByZW5kZXJlci0+aXNXaWRnZXQoKSB8fCAocmVuZGVyZXItPmVsZW1lbnQoKSAmJiByZW5kZXJl
ci0+ZWxlbWVudCgpLT5pc0NvbnRyb2woKSkpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
bmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbmRlcmVyLT5lbGVtZW50KCkgJiYgcmVuZGVy
ZXItPmVsZW1lbnQoKS0+aXNFbGVtZW50Tm9kZSgpICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+ZWxlbWVudCgpKS0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkpKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFu
ZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlTm9uVGV4dE5vZGUoKTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDQwMjM2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OCw4ICs5OCwxMiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAg
Ly8gRm9jdXMgdGhlIGVsZW1lbnQgaWYgaXQgc2hvdWxkIGhvbm91ciBpdHMgYXV0b2ZvY3VzIGF0
dHJpYnV0ZS4KICAgICAvLyBXZSBoYXZlIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBpcyBh
IFRleHRBcmVhL0lucHV0L0J1dHRvbi9TZWxlY3QsCiAgICAgLy8gaWYgaW5wdXQgdHlwZSBoaWRk
ZW4gaWdub3JlIGF1dG9mb2N1cy4gU28gaWYgZGlzYWJsZWQgb3IgcmVhZG9ubHkuCisgICAgYm9v
bCBpc0lucHV0VHlwZUhpZGRlbiA9IGZhbHNlOworICAgIGlmIChoYXNUYWdOYW1lKGlucHV0VGFn
KSkKKyAgICAgICAgaXNJbnB1dFR5cGVIaWRkZW4gPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4odGhpcyktPmlzSW5wdXRUeXBlSGlkZGVuKCk7CisKICAgICBpZiAoYXV0b2ZvY3VzKCkg
JiYgcmVuZGVyZXIoKSAmJiAhZG9jdW1lbnQoKS0+aWdub3JlQXV0b2ZvY3VzKCkgJiYgIWlzUmVh
ZE9ubHlDb250cm9sKCkgJiYKLSAgICAgICAgICAgICgoaGFzVGFnTmFtZShpbnB1dFRhZykgJiYg
IWlzSW5wdXRUeXBlSGlkZGVuKCkpIHx8IGhhc1RhZ05hbWUoc2VsZWN0VGFnKSB8fAorICAgICAg
ICAgICAgKChoYXNUYWdOYW1lKGlucHV0VGFnKSAmJiAhaXNJbnB1dFR5cGVIaWRkZW4pIHx8IGhh
c1RhZ05hbWUoc2VsZWN0VGFnKSB8fAogICAgICAgICAgICAgICBoYXNUYWdOYW1lKGJ1dHRvblRh
ZykgfHwgaGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpKQogICAgICAgICAgZm9jdXMoKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gNDAyMzYpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuICFkaXNhYmxlZCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAko
cmV2aXNpb24gNDAyMzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMwLDkgKzYzMCwxMSBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6Q2hl
Y2tlZFJhZGlvQnV0dG9uCiAgICAgaWYgKGl0ID09IG1fbmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9u
TWFwLT5lbmQoKSB8fCBpdC0+c2Vjb25kICE9IGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKKyAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KGVsZW1l
bnQpOworICAgIEFTU0VSVF9VTlVTRUQoaW5wdXRFbGVtZW50LCBpbnB1dEVsZW1lbnQpOworICAg
IEFTU0VSVChpbnB1dEVsZW1lbnQtPmlzQ2hlY2tlZCgpKTsKICAgICBBU1NFUlQoZWxlbWVudC0+
aXNSYWRpb0J1dHRvbigpKTsKLSAgICBBU1NFUlQoZWxlbWVudC0+aXNDaGVja2VkKCkpOwotICAg
IAorCiAgICAgbV9uYW1lVG9DaGVja2VkUmFkaW9CdXR0b25NYXAtPnJlbW92ZShpdCk7CiAgICAg
aWYgKG1fbmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9uTWFwLT5pc0VtcHR5KCkpCiAgICAgICAgIG1f
bmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9uTWFwLmNsZWFyKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgJKHJldmlzaW9uIDQwMjM2KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgdXNlTWFwKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2VNYXAoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBib29sIGlzQXV0b2ZpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b2ZpbGxlZDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9maWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9maWxs
ZWQ7IH0KICAgICB2b2lkIHNldEF1dG9maWxsZWQoYm9vbCB2YWx1ZSA9IHRydWUpOwogCiAgICAg
RmlsZUxpc3QqIGZpbGVzKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDcgKzIzMCwxNCBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUGFzc3dvCiAgICAgQVNTRVJUKG1fcmVu
ZGVyZXIpOwogICAgIGlmICghbV9yZW5kZXJlci0+ZWxlbWVudCgpIHx8ICFtX3JlbmRlcmVyLT5l
bGVtZW50KCktPmlzSFRNTEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG1fcmVuZGVyZXItPmVsZW1lbnQoKSktPmlz
UGFzc3dvcmRGaWVsZCgpICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVW5rbm93blJvbGU7Cisg
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9JbnB1dEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fcmVuZGVyZXItPmVsZW1lbnQoKSkpOworICAgIGlm
ICghaW5wdXRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaW5w
dXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0CkBAIC0zMjEsMTMgKzMyOCwyNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUHJlc3NlCiBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1fcmVuZGVyZXIpOwotICAgIHJldHVybiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgbV9yZW5kZXJl
ci0+bm9kZSgpLT5pc0luZGV0ZXJtaW5hdGUoKTsKKyAgICBpZiAoIW1fcmVuZGVyZXItPm5vZGUo
KSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9JbnB1dEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSkpOworICAgIGlmICgh
aW5wdXRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaW5wdXRF
bGVtZW50LT5pc0luZGV0ZXJtaW5hdGUoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc0NoZWNrZWQoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAg
ICByZXR1cm4gbV9yZW5kZXJlci0+bm9kZSgpICYmIG1fcmVuZGVyZXItPm5vZGUoKS0+aXNDaGVj
a2VkKCk7CisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXItPm5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQq
PihtX3JlbmRlcmVyLT5ub2RlKCkpKTsKKyAgICBpZiAoIWlucHV0RWxlbWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNDaGVja2VkKCk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNIb3ZlcmVkKCkgY29uc3QKQEAg
LTQzMSw3ICs0NTIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQ29udHJv
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJl
ci0+ZWxlbWVudCgpOwotICAgIHJldHVybiBub2RlICYmIChub2RlLT5pc0NvbnRyb2woKSB8fCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFDb250cm9sKGFyaWFSb2xlQXR0cmlidXRlKCkpKTsK
KyAgICByZXR1cm4gbm9kZSAmJiAoKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIHx8IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUNvbnRyb2woYXJpYVJvbGVBdHRy
aWJ1dGUoKSkpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRmllbGRz
ZXQoKSBjb25zdApAQCAtMTQzNiw3ICsxNDU4LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6c2V0VmFsdWUKIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0Vu
YWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlbmRlcmVyLT5lbGVtZW50KCkgPyBtX3Jl
bmRlcmVyLT5lbGVtZW50KCktPmlzRW5hYmxlZCgpIDogdHJ1ZTsKKyAgICBBU1NFUlQobV9yZW5k
ZXJlcik7CisgICAgaWYgKCFtX3JlbmRlcmVyLT5lbGVtZW50KCkgfHwgIW1fcmVuZGVyZXItPmVs
ZW1lbnQoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEZv
cm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2xFbGVtZW50ID0gdG9Gb3JtQ29udHJvbEVsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fcmVuZGVyZXItPmVsZW1lbnQoKSkpOworICAgIGlm
ICghZm9ybUNvbnRyb2xFbGVtZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBmb3JtQ29udHJvbEVsZW1lbnQtPmlzRW5hYmxlZCgpOyAgICAKIH0KIAogUmVuZGVyVmlldyog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dG9wUmVuZGVyZXIoKSBjb25zdApAQCAtMjE3OCwx
MiArMjIwOCwxOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFSb2xlCiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBj
b25zdAogeworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKKwogICAgIC8vIE5PVEU6IEl0IHdvdWxk
IGJlIG1vcmUgYWNjdXJhdGUgdG8gYXNrIHRoZSBkb2N1bWVudCB3aGV0aGVyIHNldEZvY3VzZWRO
b2RlKCkgd291bGQKICAgICAvLyBkbyBhbnl0aGluZy4gIEZvciBleGFtcGxlLCBpdCBzZXRGb2N1
c2VkTm9kZSgpIHdpbGwgZG8gbm90aGluZyBpZiB0aGUgY3VycmVudCBmb2N1c2VkCiAgICAgLy8g
bm9kZSB3aWxsIG5vdCByZWxpbnF1aXNoIHRoZSBmb2N1cy4KLSAgICBpZiAoIW1fcmVuZGVyZXIt
PmVsZW1lbnQoKSB8fCAhbV9yZW5kZXJlci0+ZWxlbWVudCgpLT5pc0VuYWJsZWQoKSkKKyAgICBp
ZiAoIW1fcmVuZGVyZXItPmVsZW1lbnQoKSB8fCAhbV9yZW5kZXJlci0+ZWxlbWVudCgpLT5pc0Vs
ZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKworICAgIEZvcm1Db250
cm9sRWxlbWVudCogZm9ybUNvbnRyb2xFbGVtZW50ID0gdG9Gb3JtQ29udHJvbEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG1fcmVuZGVyZXItPmVsZW1lbnQoKSkpOworICAgIGlmIChmb3Jt
Q29udHJvbEVsZW1lbnQgJiYgIWZvcm1Db250cm9sRWxlbWVudC0+aXNFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICAgICAg
Y2FzZSBXZWJDb3JlTGlua1JvbGU6CiAgICAgICAgIGNhc2UgSW1hZ2VNYXBMaW5rUm9sZToKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQko
cmV2aXNpb24gNDAyMzYpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOSArMTgxLDExIEBAIHN0YXRpYyBXZWJD
b3JlVGV4dE1hcmtlciogdGV4dE1hcmtlckZvclYKICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBpZiAoZG9tTm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihkb21Ob2RlKS0+aXNQYXNzd29yZEZpZWxk
KCkpCisgICAgaWYgKGRvbU5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihkb21Ob2RlKSk7CisgICAgICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5p
c1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQogCiAgICAg
Ly8gbG9jYXRlIHRoZSByZW5kZXJlciwgd2hpY2ggbXVzdCBleGlzdCBmb3IgYSB2aXNpYmxlIGRv
bSBub2RlCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRvbU5vZGUtPnJlbmRlcmVyKCk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAkocmV2aXNpb24gNDAyMzYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDcgKzI1
Miw3IEBAIHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybjsKICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKCFyZXN1bHQuaXNDb250ZW50
RWRpdGFibGUoKSAmJiBub2RlLT5pc0NvbnRyb2woKSkKKyAgICBpZiAoIXJlc3VsdC5pc0NvbnRl
bnRFZGl0YWJsZSgpICYmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDQwMjM2KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDczLDcgKzEw
NzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1NCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKIAogICAgIGlmIChkaWZmZXJlbmNlLndpZHRoKCkpIHsKLSAgICAgICAg
aWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNDb250cm9sKCkpIHsKKyAgICAgICAgaWYgKGVsZW1l
bnQgJiYgZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkgewogICAgICAgICAgICAgLy8g
TWFrZSBpbXBsaWNpdCBtYXJnaW5zIGZyb20gdGhlIHRoZW1lIGV4cGxpY2l0IChzZWUgPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc+KS4KICAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIFN0cmluZzo6bnVtYmVyKHJl
bmRlcmVyLT5tYXJnaW5MZWZ0KCkgLyB6b29tRmFjdG9yKSArICJweCIsIGZhbHNlLCBlYyk7CiAg
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgU3Ry
aW5nOjpudW1iZXIocmVuZGVyZXItPm1hcmdpblJpZ2h0KCkgLyB6b29tRmFjdG9yKSArICJweCIs
IGZhbHNlLCBlYyk7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNp
emUoY29uc3QgUGxhdGZvcm1NCiAgICAgfQogCiAgICAgaWYgKGRpZmZlcmVuY2UuaGVpZ2h0KCkp
IHsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNDb250cm9sKCkpIHsKKyAgICAg
ICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgLy8gTWFrZSBpbXBsaWNpdCBtYXJnaW5zIGZyb20gdGhlIHRoZW1lIGV4cGxpY2l0
IChzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc+KS4KICAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgU3RyaW5n
OjpudW1iZXIocmVuZGVyZXItPm1hcmdpblRvcCgpIC8gem9vbUZhY3RvcikgKyAicHgiLCBmYWxz
ZSwgZWMpOwogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
Qm90dG9tLCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+bWFyZ2luQm90dG9tKCkgLyB6b29tRmFj
dG9yKSArICJweCIsIGZhbHNlLCBlYyk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCShyZXZpc2lvbiA0MDIzNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDkgKzMxNSwxNSBAQCBib29sIFJlbmRlck1l
bnVMaXN0OjppdGVtSXNFbmFibGVkKHVuc2lnCiAgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGlvblRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGdyb3VwRW5hYmxl
ZCA9IHRydWU7Ci0gICAgaWYgKGVsZW1lbnQtPnBhcmVudE5vZGUoKSAmJiBlbGVtZW50LT5wYXJl
bnROb2RlKCktPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKQotICAgICAgICBncm91cEVuYWJsZWQg
PSBlbGVtZW50LT5wYXJlbnROb2RlKCktPmlzRW5hYmxlZCgpOwotICAgIHJldHVybiBlbGVtZW50
LT5pc0VuYWJsZWQoKSAmJiBncm91cEVuYWJsZWQ7CisgICAgaWYgKGVsZW1lbnQtPnBhcmVudE5v
ZGUoKSAmJiBlbGVtZW50LT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKSB7
CisgICAgICAgIEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2xFbGVtZW50ID0gdG9Gb3Jt
Q29udHJvbEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVsZW1lbnQtPnBhcmVudE5vZGUo
KSkpOworICAgICAgICBncm91cEVuYWJsZWQgPSBmb3JtQ29udHJvbEVsZW1lbnQtPmlzRW5hYmxl
ZCgpOworICAgIH0KKworICAgIGlmICghZ3JvdXBFbmFibGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdG9Gb3JtQ29udHJvbEVsZW1lbnQoZWxlbWVudCktPmlzRW5hYmxl
ZCgpOwogfQogCiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKHVuc2ln
bmVkIGxpc3RJbmRleCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAJKHJldmlzaW9uIDQwMjM2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTQgKzEwMiwzMSBAQCB2b2lkIFJl
bmRlclRleHRDb250cm9sOjpzdHlsZURpZENoYW5nZShSCiAgICAgc2V0UmVwbGFjZWQoaXNJbmxp
bmUoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHko
Tm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQoreworICAgIGJvb2wgaXNFbmFibGVkID0g
dHJ1ZTsKKyAgICBib29sIGlzUmVhZE9ubHlDb250cm9sID0gZmFsc2U7CisKKyAgICBpZiAobm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNv
bnRyb2xFbGVtZW50ID0gdG9Gb3JtQ29udHJvbEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUpKTsKKyAgICAgICAgQVNTRVJUKGZvcm1Db250cm9sRWxlbWVudCk7CisKKyAgICAgICAg
aXNFbmFibGVkID0gZm9ybUNvbnRyb2xFbGVtZW50LT5pc0VuYWJsZWQoKTsKKyAgICAgICAgaXNS
ZWFkT25seUNvbnRyb2wgPSBmb3JtQ29udHJvbEVsZW1lbnQtPmlzUmVhZE9ubHlDb250cm9sKCk7
CisgICAgfQorCisgICAgc3R5bGUtPnNldFVzZXJNb2RpZnkoKGlzUmVhZE9ubHlDb250cm9sIHx8
ICFpc0VuYWJsZWQpID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7Cisg
ICAgcmV0dXJuICFpc0VuYWJsZWQ7Cit9CisKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVz
dElubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHls
ZSogdGV4dEJsb2NrU3R5bGUpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGlubmVyIGJsb2NrLCBpZiBw
cmVzZW50LCBhbHdheXMgaGFzIGl0cyBkaXJlY3Rpb24gc2V0IHRvIExUUiwKICAgICAvLyBzbyB3
ZSBuZWVkIHRvIGluaGVyaXQgdGhlIGRpcmVjdGlvbiBmcm9tIHRoZSBlbGVtZW50LgogICAgIHRl
eHRCbG9ja1N0eWxlLT5zZXREaXJlY3Rpb24oc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwotICAgIHRl
eHRCbG9ja1N0eWxlLT5zZXRVc2VyTW9kaWZ5KChub2RlKCktPmlzUmVhZE9ubHlDb250cm9sKCkg
fHwgIW5vZGUoKS0+aXNFbmFibGVkKCkpID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9QTEFJTlRF
WFRfT05MWSk7CiAKLSAgICBpZiAoIW5vZGUoKS0+aXNFbmFibGVkKCkpCisgICAgYm9vbCBkaXNh
YmxlZCA9IHVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eShub2RlKCksIHRleHRCbG9ja1N0eWxlKTsK
KyAgICBpZiAoZGlzYWJsZWQpCiAgICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRDb2xvcihkaXNh
YmxlZFRleHRDb2xvcih0ZXh0QmxvY2tTdHlsZS0+Y29sb3IoKSwgc3RhcnRTdHlsZS0+YmFja2dy
b3VuZENvbG9yKCkpKTsKIH0KIApAQCAtMTM4LDcgKzE1NSw3IEBAIGludCBSZW5kZXJUZXh0Q29u
dHJvbDo6dGV4dEJsb2NrV2lkdGgoKSAKIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRl
RnJvbUVsZW1lbnQoKQogewotICAgIG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5z
ZXRVc2VyTW9kaWZ5KChub2RlKCktPmlzUmVhZE9ubHlDb250cm9sKCkgfHwgIW5vZGUoKS0+aXNF
bmFibGVkKCkpID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7IAorICAg
IHVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eShub2RlKCksIG1faW5uZXJUZXh0LT5yZW5kZXJlcigp
LT5zdHlsZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0VmFs
dWUoY29uc3QgU3RyaW5nJiBpbm5lclRleHRWYWx1ZSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAJKHJldmlzaW9uIDQwMjM2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsMjMgKzU5NCwzOCBAQCBib29sIFJlbmRlclRo
ZW1lOjppc0FjdGl2ZShjb25zdCBSZW5kZXJPCiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzQ2hlY2tl
ZChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgaWYgKCFvLT5lbGVtZW50KCkp
CisgICAgaWYgKCFvLT5lbGVtZW50KCkgfHwgIW8tPmVsZW1lbnQoKS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCA9IHRvSW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihvLT5lbGVtZW50KCkpKTsK
KyAgICBpZiAoIWlucHV0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBvLT5lbGVtZW50KCktPmlzQ2hlY2tlZCgpOworCisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+
aXNDaGVja2VkKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzSW5kZXRlcm1pbmF0ZShjb25z
dCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgaWYgKCFvLT5lbGVtZW50KCkpCisgICAg
aWYgKCFvLT5lbGVtZW50KCkgfHwgIW8tPmVsZW1lbnQoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRv
SW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihvLT5lbGVtZW50KCkpKTsKKyAgICBp
ZiAoIWlucHV0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBvLT5l
bGVtZW50KCktPmlzSW5kZXRlcm1pbmF0ZSgpOworCisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+
aXNJbmRldGVybWluYXRlKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzRW5hYmxlZChjb25z
dCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgaWYgKCFvLT5lbGVtZW50KCkpCisgICAg
aWYgKCFvLT5lbGVtZW50KCkgfHwgIW8tPmVsZW1lbnQoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2xF
bGVtZW50ID0gdG9Gb3JtQ29udHJvbEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG8tPmVs
ZW1lbnQoKSkpOworICAgIGlmICghZm9ybUNvbnRyb2xFbGVtZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gby0+ZWxlbWVudCgpLT5pc0VuYWJsZWQoKTsKKworICAgIHJldHVy
biBmb3JtQ29udHJvbEVsZW1lbnQtPmlzRW5hYmxlZCgpOwogfQogCiBib29sIFJlbmRlclRoZW1l
Ojppc0ZvY3VzZWQoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdApAQCAtNjMyLDkgKzY0Nywx
NCBAQCBib29sIFJlbmRlclRoZW1lOjppc1ByZXNzZWQoY29uc3QgUmVuZGVyCiAKIGJvb2wgUmVu
ZGVyVGhlbWU6OmlzUmVhZE9ubHlDb250cm9sKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QK
IHsKLSAgICBpZiAoIW8tPmVsZW1lbnQoKSkKKyAgICBpZiAoIW8tPmVsZW1lbnQoKSB8fCAhby0+
ZWxlbWVudCgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2xFbGVtZW50ID0gdG9Gb3JtQ29udHJvbEVs
ZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG8tPmVsZW1lbnQoKSkpOworICAgIGlmICghZm9y
bUNvbnRyb2xFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG8tPmVs
ZW1lbnQoKS0+aXNSZWFkT25seUNvbnRyb2woKTsKKworICAgIHJldHVybiBmb3JtQ29udHJvbEVs
ZW1lbnQtPmlzUmVhZE9ubHlDb250cm9sKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWU6OmlzSG92
ZXJlZChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gNDAyMzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUxLDcgKzk1MSwxMSBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlCiAKICAgICAvLyBTZXQgdGhlIGZvcmVn
cm91bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3JheSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4K
ICAgICAvLyBDYXN0IHRvIFJHQjMyIGlzIHRvIHdvcmsgYXJvdW5kIGEgY29tcGlsZXIgYnVnLgot
ICAgIHN0eWxlLT5zZXRDb2xvcihlLT5pc0VuYWJsZWQoKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4o
Q29sb3I6OmJsYWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CisgICAgYm9vbCBpc0VuYWJsZWQgPSB0
cnVlOworICAgIGlmIChGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sRWxlbWVudCA9IHRv
Rm9ybUNvbnRyb2xFbGVtZW50KGUpKQorICAgICAgICBpc0VuYWJsZWQgPSBmb3JtQ29udHJvbEVs
ZW1lbnQtPmlzRW5hYmxlZCgpOworCisgICAgc3R5bGUtPnNldENvbG9yKGlzRW5hYmxlZCA/IHN0
YXRpY19jYXN0PFJHQkEzMj4oQ29sb3I6OmJsYWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CiAKICAg
ICAvLyBTZXQgdGhlIGJ1dHRvbidzIHZlcnRpY2FsIHNpemUuCiAgICAgc2V0U2l6ZUZyb21Gb250
KHN0eWxlLCBtZW51TGlzdEJ1dHRvblNpemVzKCkpOwo=
</data>
<flag name="review"
          id="12968"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>