<?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>195128</bug_id>
          
          <creation_ts>2019-02-27 16:35:06 -0800</creation_ts>
          <short_desc>[ContentChangeObserver] Move WKSetObservedContentChange logic to ContentChangeObserver class.</short_desc>
          <delta_ts>2019-02-27 20:39:29 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510686</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-27 16:35:06 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510696</commentid>
    <comment_count>1</comment_count>
      <attachid>363156</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-02-27 16:45:55 -0800</bug_when>
    <thetext>Created attachment 363156
Patch

Will update the patch with the rdar number</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510702</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-27 16:51:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/48456752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510714</commentid>
    <comment_count>3</comment_count>
      <attachid>363156</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-27 16:58:39 -0800</bug_when>
    <thetext>Comment on attachment 363156
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=363156&amp;action=review

Want to do the .mm -&gt; .cpp in this patch?

&gt; Source/WebCore/page/ios/ContentChangeObserver.mm:225
&gt; +    // We&apos;ve already have a definite answer.

We&apos;ve have? We have or We&apos;ve had or We&apos;ve received</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510784</commentid>
    <comment_count>4</comment_count>
      <attachid>363185</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-02-27 19:46:00 -0800</bug_when>
    <thetext>Created attachment 363185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510796</commentid>
    <comment_count>5</comment_count>
      <attachid>363185</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-27 20:39:27 -0800</bug_when>
    <thetext>Comment on attachment 363185
Patch

Clearing flags on attachment: 363185

Committed r242190: &lt;https://trac.webkit.org/changeset/242190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510797</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-27 20:39:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363156</attachid>
            <date>2019-02-27 16:45:55 -0800</date>
            <delta_ts>2019-02-27 19:45:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>9205</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMzNiYTE0YWIwYy4uY2ExZjU3YWQ3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOS0wMi0yNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIE1vdmUgV0tTZXRPYnNlcnZlZENvbnRl
bnRDaGFuZ2UgbG9naWMgdG8gQ29udGVudENoYW5nZU9ic2VydmVyIGNsYXNzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MTI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgZmluYWwgYml0
cyBvdmVyIHRvIENvbnRlbnRDaGFuZ2VPYnNlcnZlciBhbmQgZGVsZXRlIFdLQ29udGVudE9ic2Vy
dmF0aW9uSW50ZXJuYWwuaC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnNldE9ic2VydmVkQ29udGVu
dENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlv
bi5jcHA6CisgICAgICAgIChXS1NldE9ic2VydmVkQ29udGVudENoYW5nZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oOiBSZW1vdmVkLgorCiAy
MDE5LTAyLTI3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
bnRlbnRDaGFuZ2VPYnNlcnZlcl0gTW92ZSBfV0tPYnNlcnZpbmdDb250ZW50Q2hhbmdlcyBmcm9t
IGdsb2JhbCB0byBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDk3OTM2ZGFiNC4u
OWUyN2QyYmRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ5MjMsNyArNDkyMyw2IEBACiAJCUVCRjUxMjFDMTY5NjQ5NkMw
MDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBl
Q29udmVyc2lvbnMuY3BwICovOyB9OwogCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNU
eXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVCRjUxMjFCMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oICov
OyB9OwogCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDNjFFNjc3
MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRUNDREI4ODExRTRCOEM1OTAwQTFBRUE2IC8qIFdL
Q29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVDQ0RCODgwMUU0QjhDNTkwMEExQUVBNiAvKiBXS0NvbnRlbnRP
YnNlcnZhdGlvbkludGVybmFsLmggKi87IH07CiAJCUVEMkJBODNDMDlBMjRCOTEwMDZDMEFDNCAv
KiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFM0E1MDAw
QzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFREVD
OTgwMzBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8q
IFdlYkNvcmVQcmVmaXguaCAqLzsgfTsKQEAgLTE1MTM2LDcgKzE1MTM1LDYgQEAKIAkJRUJGNTEy
MUIxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUNvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVDQTY4MEM2MUU2NzcyNDUwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MEM4MUU2NzczMEIwMDczMUQyMCAvKiBT
dHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUVDQ0RC
ODgwMUU0QjhDNTkwMEExQUVBNiAvKiBXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQyQkE4M0IwOUEyNEI5MTAwNkMw
QUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERvY3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRWRpdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIyMzA4LDcgKzIyMzA2LDYgQEAKIAkJCQlBMTQ4MzJBMTE4N0Y1MDg3MDBEQTYzQTYg
LyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oICovLAogCQkJCUExNDgzMkEyMTg3RjUw
ODcwMERBNjNBNiAvKiBXS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAgKi8sCiAJCQkJQTE0ODMyQTMx
ODdGNTA4NzAwREE2M0E2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uLmggKi8sCi0JCQkJRUNDREI4
ODAxRTRCOEM1OTAwQTFBRUE2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCAqLywK
IAkJCQlBMTQ4MzJBNDE4N0Y1MDg3MDBEQTYzQTYgLyogV0tHcmFwaGljcy5oICovLAogCQkJCUEx
NDgzMkE1MTg3RjUwODcwMERBNjNBNiAvKiBXS0dyYXBoaWNzLm1tICovLAogCQkJCUExNDgzMkE2
MTg3RjUwODcwMERBNjNBNiAvKiBXS1R5cGVzLmggKi8sCkBAIC0zMjM4Miw3ICszMjM3OSw2IEBA
CiAJCQkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MDFCQUFBOTEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExNDgzMkJFMTg3RjY0Q0MwMERBNjNBNiAvKiBXS0NvbnRl
bnRPYnNlcnZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRUNDREI4ODExRTRCOEM1OTAwQTFB
RUE2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExNDgzMkJGMTg3RjY1MkMwMERBNjNBNiAvKiBXS0dyYXBoaWNzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTQ4MzJDMTE4N0Y2NTdBMDBEQTYzQTYgLyogV0tUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE0ODMyQzMxODdGNjVERjAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZl
ci5tbQppbmRleCA4NjQ2ZGU3YjI0Yi4uZmI3YjA4NDYyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIubW0KQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbXBvcnQgIkRPTVRpbWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQYWdl
LmgiCi0jaW1wb3J0ICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjIzLDYgKzIyMiw5IEBAIHZvaWQgQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpjbGVhck9ic2VydmVkRE9NVGltZXJzKCkKIAogdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI6OnNldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRDaGFuZ2UgY2hhbmdlKQogewor
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgaGF2ZSBhIGRlZmluaXRlIGFuc3dlci4KKyAgICBpZiAob2Jz
ZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIFdLU2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKGNoYW5nZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2Jz
ZXJ2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRP
YnNlcnZhdGlvbi5jcHAKaW5kZXggY2U1NTk2ZTJkMjcuLjhjOTJmZDk4MGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0
aW9uLmNwcApAQCAtMjUsMTUgKzI1LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCi0jaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRp
b25JbnRlcm5hbC5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCiBXS0NvbnRlbnRD
aGFuZ2UgX1dLQ29udGVudENoYW5nZSA9IFdLQ29udGVudE5vQ2hhbmdlOwogCiBXS0NvbnRlbnRD
aGFuZ2UgV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2Uodm9pZCkKQEAgLTQzLDE1ICszNyw3IEBAIFdL
Q29udGVudENoYW5nZSBXS09ic2VydmVkQ29udGVudENoYW5nZSh2b2lkKQogCiB2b2lkIFdLU2V0
T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudENoYW5nZSBjaGFuZ2UpCiB7Ci0gICAgLy8g
V2UndmUgYWxyZWFkeSBoYXZlIGEgZGVmaW5pdGUgYW5zd2VyLgotICAgIGlmIChfV0tDb250ZW50
Q2hhbmdlID09IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChjaGFuZ2UgPT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSB8fCBjaGFuZ2UgPT0g
V0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSkgewotICAgICAgICBfV0tDb250ZW50Q2hhbmdl
ID0gY2hhbmdlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIF9XS0NvbnRlbnRDaGFuZ2UgPSBjaGFuZ2U7ICAgCiB9CiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oCmluZGV4IDZiMTIxOTdiYTgxLi4yZmNhODk0
ZTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRl
bnRPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tD
b250ZW50T2JzZXJ2YXRpb24uaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIGVudW0KIH0gICBX
S0NvbnRlbnRDaGFuZ2U7CiAKIFdFQkNPUkVfRVhQT1JUIFdLQ29udGVudENoYW5nZSBXS09ic2Vy
dmVkQ29udGVudENoYW5nZSh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tTZXRPYnNlcnZl
ZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50Q2hhbmdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tD
b250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkNGFmYzhjOWEwMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRlbnRPYnNlcnZhdGlvbklu
dGVybmFsX2gKLSNkZWZpbmUgV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbF9oCi0KLSNpZiBU
QVJHRVRfT1NfSVBIT05FCi0KLSNpbXBvcnQgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCi0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdm9pZCBXS1NldE9ic2Vy
dmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRDaGFuZ2UpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQotCi0jZW5kaWYgLy8gV0tD
b250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363185</attachid>
            <date>2019-02-27 19:46:00 -0800</date>
            <delta_ts>2019-02-27 20:39:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195128-20190227194559.patch</filename>
            <type>text/plain</type>
            <size>34553</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNkODczMWMzNmM0Mjg5
NGZhZjU2MTVhMjQzNmJiOTBmMGY3OThiZi4uMWU0ZTRiODk1MzdjMDAxMGI3YjI5OTkwMmUxYzg5
MWY3MTNhMDZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAyLTI3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNl
cnZlcl0gTW92ZSBXS1NldE9ic2VydmVkQ29udGVudENoYW5nZSBsb2dpYyB0byBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTUxMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NDU2NzUyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBNb3ZlIHRoZSBmaW5h
bCBiaXRzIG92ZXIgdG8gQ29udGVudENoYW5nZU9ic2VydmVyIGFuZCBkZWxldGUgV0tDb250ZW50
T2JzZXJ2YXRpb25JbnRlcm5hbC5oLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c2V0T2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2Vy
dmF0aW9uLmNwcDoKKyAgICAgICAgKFdLU2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmg6IFJlbW92ZWQu
CisKIDIwMTktMDItMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBNb3ZlIF9XS09ic2VydmluZ0NvbnRlbnRDaGFuZ2Vz
IGZyb20gZ2xvYmFsIHRvIENvbnRlbnRDaGFuZ2VPYnNlcnZlciBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggNzhhOWY3YWNkMDhjNGEyMGU2MzY5MDJjNjgyNzllMjE1MTdjNDZkMy4u
ZmFlMzBmODM1NTI1ZjZmMWUxMzI0MzI0OGUzNGQzNWRjZGQyNzAzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0xMzEsNyArMTMxLDcgQEAgcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zl
cmxheUNvY29hLm1tCiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQogcGFn
ZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQogCi1wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIubW0KK3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5jcHAKIHBhZ2UvaW9zL0V2
ZW50SGFuZGxlcklPUy5tbQogcGFnZS9pb3MvRnJhbWVJT1MubW0KIHBhZ2UvaW9zL1dlYkV2ZW50
UmVnaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzA5NzkzNmRhYjQ2OTQxY2VkYzBhMThmNzE0OThlNDM5ZTFkZGVmNC4u
MjQ0MTk1OTc3OWJjMDcwZmE0ZTM0NDFlMzhjYzVmYjUxNzM5ZGIzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDkyMyw3ICs0
OTIzLDYgQEAKIAkJRUJGNTEyMUMxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCRjUx
MjFBMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgKi87IH07CiAJCUVC
RjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJGNTEyMUIxNjk2NDk2QzAwNTZC
RDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggKi87IH07CiAJCUVDQTY4MEM3MUU2NzcyNDUwMDcz
MUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEVDQTY4MEM2MUU2NzcyNDUwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRp
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlF
Q0NEQjg4MTFFNEI4QzU5MDBBMUFFQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNDREI4ODAx
RTRCOEM1OTAwQTFBRUE2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsK
IAkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgzQjA5QTI0QjkxMDA2
QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJD
b3JlUHJlZml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OwpAQCAt
OTI0NSw3ICs5MjQ0LDcgQEAKIAkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1NzMgLyogTGF5
b3V0TGluZUJyZWFrQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91
dExpbmVCcmVha0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkU3Q0ZBNTIx
NzdGMDY5MDA1QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dExpbmVCcmVha0JveC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b250ZW50Q2hhbmdlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZG
RTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZGREM0M0UyMTJFRkYxNjAwQTlDQTkx
IC8qIEZsb2F0QXZvaWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGbG9hdEF2b2lkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkZEQzQ0
MDIxMkVGRjE2MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZsb2F0QXZvaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MDlBMDFGRDFFM0QwQkNDMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTEzNiw3ICsxNTEzNSw2IEBACiAJCUVC
RjUxMjFCMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVDb252ZXJzaW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQ0E2ODBDNjFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBDODFFNjc3MzBCMDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
Q0NEQjg4MDFFNEI4QzU5MDBBMUFFQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRPYnNlcnZhdGlvbklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRCOTEw
MDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEb2N1bWVudE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDUw
MURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNjU5MSw4ICsxNjU4OSw4IEBACiAJCTE4QTZDRDZGMEQ4RjIwMjUwMDFEQzND
RSAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTZGRTlGMDkyMjIyMTEwMzUwMDRDNTA4MiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuY3BwICov
LAogCQkJCTZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aCAqLywKLQkJCQk2RkU5RjA5MjIyMjExMDM1MDA0QzUwODIgLyogQ29udGVudENoYW5nZU9ic2Vy
dmVyLm1tICovLAogCQkJCUZFNjkzOEI1MTA0NUQ2N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJ
T1MubW0gKi8sCiAJCQkJRkVEMTNEM0IwQ0VBOTM2QTAwRDg5NDY2IC8qIEZyYW1lSU9TLm1tICov
LAogCQkJCTIyNUExNkIzMEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5oICovLApA
QCAtMjIzMDgsNyArMjIzMDYsNiBAQAogCQkJCUExNDgzMkExMTg3RjUwODcwMERBNjNBNiAvKiBX
ZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmggKi8sCiAJCQkJQTE0ODMyQTIxODdGNTA4NzAw
REE2M0E2IC8qIFdLQ29udGVudE9ic2VydmF0aW9uLmNwcCAqLywKIAkJCQlBMTQ4MzJBMzE4N0Y1
MDg3MDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb24uaCAqLywKLQkJCQlFQ0NEQjg4MDFF
NEI4QzU5MDBBMUFFQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oICovLAogCQkJ
CUExNDgzMkE0MTg3RjUwODcwMERBNjNBNiAvKiBXS0dyYXBoaWNzLmggKi8sCiAJCQkJQTE0ODMy
QTUxODdGNTA4NzAwREE2M0E2IC8qIFdLR3JhcGhpY3MubW0gKi8sCiAJCQkJQTE0ODMyQTYxODdG
NTA4NzAwREE2M0E2IC8qIFdLVHlwZXMuaCAqLywKQEAgLTMyMzgyLDcgKzMyMzc5LDYgQEAKIAkJ
CQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQkUxODdGNjRDQzAwREE2M0E2IC8qIFdLQ29udGVudE9i
c2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlFQ0NEQjg4MTFFNEI4QzU5MDBBMUFFQTYg
LyogV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0
ODMyQkYxODdGNjUyQzAwREE2M0E2IC8qIFdLR3JhcGhpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExNDgzMkMxMTg3RjY1N0EwMERBNjNBNiAvKiBXS1R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTQ4MzJDMzE4N0Y2NURGMDBEQTYzQTYgLyogV0tVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDZmODZmOGFlNThjZjkxY2RhYTEzYzc3ZDBmMTY1NGI5OGMyZjA0Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5jcHAKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQ29udGVudENoYW5nZU9ic2VydmVyOjpDb250ZW50Q2hhbmdlT2JzZXJ2ZXIo
UGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIENvbnRlbnRDaGFu
Z2VPYnNlcnZlcjo6ZGlkSW5zdGFsbERPTVRpbWVyKGNvbnN0IERPTVRpbWVyJiB0aW1lciwgU2Vj
b25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCit7CisgICAgaWYgKCFtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKHRpbWVvdXQgPiAyNTBfbXMgfHwgIXNpbmdsZVNob3QpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWlzT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBzZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50SW5k
ZXRlcm1pbmF0ZUNoYW5nZSk7CisgICAgYWRkT2JzZXJ2ZWRET01UaW1lcih0aW1lcik7CisgICAg
TE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJkaWRJbnN0YWxs
RE9NVGltZXI6IHJlZ2lzdGVyIHRoaXMgdGltZXI6ICgiIDw8ICZ0aW1lciA8PCAiKSBhbmQgb2Jz
ZXJ2ZSB3aGVuIGl0IGZpcmVzLiIpOworfQorCit2b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6
c3RhcnRPYnNlcnZpbmdET01UaW1lckV4ZWN1dGUoY29uc3QgRE9NVGltZXImIHRpbWVyKQorewor
ICAgIGlmICghY29udGFpbnNPYnNlcnZlZERPTVRpbWVyKHRpbWVyKSkKKyAgICAgICAgcmV0dXJu
OworICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAic3Rh
cnRPYnNlcnZpbmdET01UaW1lckV4ZWN1dGU6IHN0YXJ0IG9ic2VydmluZyAoIiA8PCAmdGltZXIg
PDwgIikgdGltZXIgY2FsbGJhY2suIik7CisgICAgc3RhcnRPYnNlcnZpbmdTdHlsZVJlY2FsY1Nj
aGVkdWxpbmcoKTsKKyAgICBtX29ic2VydmluZ0NvbnRlbnRDaGFuZ2VzID0gdHJ1ZTsKK30KKwor
dm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdET01UaW1lckV4ZWN1dGUo
Y29uc3QgRE9NVGltZXImIHRpbWVyKQoreworICAgIGlmICghY29udGFpbnNPYnNlcnZlZERPTVRp
bWVyKHRpbWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJlbW92ZU9ic2VydmVkRE9NVGltZXIo
dGltZXIpOworICAgIHN0b3BPYnNlcnZpbmdTdHlsZVJlY2FsY1NjaGVkdWxpbmcoKTsKKyAgICBz
dG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKKyAgICBhdXRvIG9ic2VydmVkQ29udGVudENo
YW5nZSA9IHRoaXMtPm9ic2VydmVkQ29udGVudENoYW5nZSgpOworICAgIC8vIENoZWNrIGlmIHRo
ZSB0aW1lciBjYWxsYmFjayB0cmlnZ2VyZWQgZWl0aGVyIGEgc3luYyBvciBhc3luYyBzdHlsZSB1
cGRhdGUuCisgICAgYXV0byBpbkRldGVybWluZWRTdGF0ZSA9IG9ic2VydmVkQ29udGVudENoYW5n
ZSA9PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlIHx8ICghY291bnRPZk9ic2VydmVkRE9NVGlt
ZXJzKCkgJiYgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlID09IFdLQ29udGVudE5vQ2hhbmdlKTsgIAor
CisgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJzdG9w
T2JzZXJ2aW5nRE9NVGltZXJFeGVjdXRlOiBzdG9wIG9ic2VydmluZyAoIiA8PCAmdGltZXIgPDwg
IikgdGltZXIgY2FsbGJhY2suIik7CisgICAgaWYgKGluRGV0ZXJtaW5lZFN0YXRlKSB7CisgICAg
ICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8PCAic3RvcE9i
c2VydmluZ0RPTVRpbWVyRXhlY3V0ZTogKCIgPDwgJnRpbWVyIDw8ICIpIGluIGRldGVybWluZWQg
c3RhdGUuIik7CisgICAgICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5vYnNlcnZlZENvbnRl
bnRDaGFuZ2UobV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICB9IGVsc2UgaWYgKG9ic2VydmVkQ29u
dGVudENoYW5nZSA9PSBXS0NvbnRlbnRJbmRldGVybWluYXRlQ2hhbmdlKSB7CisgICAgICAgIC8v
IEFuIGFzeW5jIHN0eWxlIHJlY2FsYyBoYXMgYmVlbiBzY2hlZHVsZWQuIExldCdzIG9ic2VydmUg
aXQuCisgICAgICAgIExPR19XSVRIX1NUUkVBTShDb250ZW50T2JzZXJ2YXRpb24sIHN0cmVhbSA8
PCAic3RvcE9ic2VydmluZ0RPTVRpbWVyRXhlY3V0ZTogKCIgPDwgJnRpbWVyIDw8ICIpIHdhaXQg
dW50aWwgbmV4dCBzdHlsZSByZWNhbGMgZmlyZXMuIik7CisgICAgICAgIHNldFNob3VsZE9ic2Vy
dmVOZXh0U3R5bGVSZWNhbGModHJ1ZSk7CisgICAgfQorfQorCit2b2lkIENvbnRlbnRDaGFuZ2VP
YnNlcnZlcjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsYygpCit7CisgICAgaWYgKCFpc09ic2Vydmlu
Z1N0eWxlUmVjYWxjU2NoZWR1bGluZygpKQorICAgICAgICByZXR1cm47CisgICAgTE9HKENvbnRl
bnRPYnNlcnZhdGlvbiwgImRpZFNjaGVkdWxlU3R5bGVSZWNhbGM6IHJlZ2lzdGVyIHRoaXMgc3R5
bGUgcmVjYWxjIHNjaGVkdWxlIGFuZCBvYnNlcnZlIHdoZW4gaXQgZmlyZXMuIik7CisgICAgc2V0
T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFuZ2UpOworfQor
Cit2b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdTdHlsZVJlc29sdmUo
KQoreworICAgIGlmICghc2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYygpKQorICAgICAgICBy
ZXR1cm47CisgICAgTE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgInN0YXJ0T2JzZXJ2aW5nU3R5bGVS
ZXNvbHZlOiBzdGFydCBvYnNlcnZpbmcgc3R5bGUgcmVzb2x2ZS4iKTsKKyAgICBtX29ic2Vydmlu
Z0NvbnRlbnRDaGFuZ2VzID0gdHJ1ZTsKK30KKwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6
OnN0b3BPYnNlcnZpbmdTdHlsZVJlc29sdmUoKQoreworICAgIGlmICghc2hvdWxkT2JzZXJ2ZU5l
eHRTdHlsZVJlY2FsYygpKQorICAgICAgICByZXR1cm47CisgICAgTE9HKENvbnRlbnRPYnNlcnZh
dGlvbiwgInN0b3BPYnNlcnZpbmdTdHlsZVJlc29sdmU6IHN0b3Agb2JzZXJ2aW5nIHN0eWxlIHJl
c29sdmUiKTsKKyAgICBzZXRTaG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKGZhbHNlKTsKKyAg
ICBhdXRvIGluRGV0ZXJtaW5lZFN0YXRlID0gb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tD
b250ZW50VmlzaWJpbGl0eUNoYW5nZSB8fCAhY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCk7Cisg
ICAgaWYgKCFpbkRldGVybWluZWRTdGF0ZSkgeworICAgICAgICBMT0coQ29udGVudE9ic2VydmF0
aW9uLCAic3RvcE9ic2VydmluZ1N0eWxlUmVzb2x2ZTogY2FuJ3QgZGVjaWRlZCBpdCB5ZXQuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgInN0
b3BPYnNlcnZpbmdTdHlsZVJlc29sdmU6IG5vdGlmeSB0aGUgcGVuZGluZyBzeW50aGV0aWMgY2xp
Y2sgaGFuZGxlci4iKTsKKyAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkub2JzZXJ2ZWRDb250
ZW50Q2hhbmdlKG1fcGFnZS5tYWluRnJhbWUoKSk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9i
c2VydmVyOjpyZW1vdmVET01UaW1lcihjb25zdCBET01UaW1lciYgdGltZXIpCit7CisgICAgaWYg
KCFjb250YWluc09ic2VydmVkRE9NVGltZXIodGltZXIpKQorICAgICAgICByZXR1cm47CisgICAg
cmVtb3ZlT2JzZXJ2ZWRET01UaW1lcih0aW1lcik7CisgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRl
bnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJyZW1vdmVET01UaW1lcjogcmVtb3ZlIHJlZ2lzdGVy
ZWQgdGltZXIgKCIgPDwgJnRpbWVyIDw8ICIpIik7CisgICAgaWYgKGNvdW50T2ZPYnNlcnZlZERP
TVRpbWVycygpKQorICAgICAgICByZXR1cm47CisgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgp
Lm9ic2VydmVkQ29udGVudENoYW5nZShtX3BhZ2UubWFpbkZyYW1lKCkpOworfQorCit2b2lkIENv
bnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y2xlYXJUaW1lcnNBbmRSZXBvcnRDb250ZW50Q2hhbmdlKCkK
K3sKKyAgICBpZiAoIWNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpKQorICAgICAgICByZXR1cm47
CisgICAgTE9HKENvbnRlbnRPYnNlcnZhdGlvbiwgImNsZWFyVGltZXJzQW5kUmVwb3J0Q29udGVu
dENoYW5nZTogcmVtb3ZlIHJlZ2lzdGVyZWQgdGltZXJzIGFuZCByZXBvcnQgY29udGVudCBjaGFu
Z2UuIik7CisgICAgY2xlYXJPYnNlcnZlZERPTVRpbWVycygpOworICAgIG1fcGFnZS5jaHJvbWUo
KS5jbGllbnQoKS5vYnNlcnZlZENvbnRlbnRDaGFuZ2UobV9wYWdlLm1haW5GcmFtZSgpKTsKK30K
Kwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmRpZFN1c3BlbmRBY3RpdmVET01PYmplY3Rz
KCkKK3sKKyAgICBjbGVhclRpbWVyc0FuZFJlcG9ydENvbnRlbnRDaGFuZ2UoKTsKK30KKwordm9p
ZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICBjbGVhclRp
bWVyc0FuZFJlcG9ydENvbnRlbnRDaGFuZ2UoKTsKK30KKwordm9pZCBDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKQoreworICAgIHN0YXJ0T2JzZXJ2
aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7CisgICAgc2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdL
Q29udGVudE5vQ2hhbmdlKTsKKyAgICBtX29ic2VydmluZ0NvbnRlbnRDaGFuZ2VzID0gdHJ1ZTsK
K30KKwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdDb250ZW50Q2hh
bmdlcygpCit7CisgICAgc3RvcE9ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpOworICAgIG1f
b2JzZXJ2aW5nQ29udGVudENoYW5nZXMgPSBmYWxzZTsKK30KKworYm9vbCBDb250ZW50Q2hhbmdl
T2JzZXJ2ZXI6OmlzT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKQoreworICAgIHJldHVybiBtX29i
c2VydmluZ0NvbnRlbnRDaGFuZ2VzOworfQorCit2b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6
c3RhcnRPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKQoreworICAgIG1fb2JzZXJ2aW5nRE9N
VGltZXJTY2hlZHVsaW5nID0gdHJ1ZTsKKyAgICBjbGVhck9ic2VydmVkRE9NVGltZXJzKCk7Cit9
CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hl
ZHVsaW5nKCkKK3sKKyAgICBtX29ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZyA9IGZhbHNlOwor
fQorCitib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdET01UaW1lclNjaGVk
dWxpbmcoKQoreworICAgIHJldHVybiBtX29ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZzsKK30K
Kwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nU3R5bGVSZWNhbGNT
Y2hlZHVsaW5nKCkKK3sKKyAgICBtX29ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzdG9wT2JzZXJ2aW5nU3R5bGVS
ZWNhbGNTY2hlZHVsaW5nKCkKK3sKKyAgICBtX29ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGlu
ZyA9IGZhbHNlOworfQorCitib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdT
dHlsZVJlY2FsY1NjaGVkdWxpbmcoKQoreworICAgIHJldHVybiBtX29ic2VydmluZ1N0eWxlUmVj
YWxjU2NoZWR1bGluZzsKK30KKwordm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnNldFNob3Vs
ZE9ic2VydmVOZXh0U3R5bGVSZWNhbGMoYm9vbCBvYnNlcnZlKQoreworICAgIG1fb2JzZXJ2aW5n
TmV4dFN0eWxlUmVjYWxjID0gb2JzZXJ2ZTsKK30KKworYm9vbCBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI6OnNob3VsZE9ic2VydmVOZXh0U3R5bGVSZWNhbGMoKQoreworICAgIHJldHVybiBtX29ic2Vy
dmluZ05leHRTdHlsZVJlY2FsYzsKK30KKworV0tDb250ZW50Q2hhbmdlIENvbnRlbnRDaGFuZ2VP
YnNlcnZlcjo6b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkKK3sKKyAgICByZXR1cm4gV0tPYnNlcnZl
ZENvbnRlbnRDaGFuZ2UoKTsKK30KKwordW5zaWduZWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpj
b3VudE9mT2JzZXJ2ZWRET01UaW1lcnMoKQoreworICAgIHJldHVybiBtX0RPTVRpbWVyTGlzdC5z
aXplKCk7Cit9CisKK3ZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpjbGVhck9ic2VydmVkRE9N
VGltZXJzKCkKK3sKKyAgICBtX0RPTVRpbWVyTGlzdC5jbGVhcigpOworfQorCit2b2lkIENvbnRl
bnRDaGFuZ2VPYnNlcnZlcjo6c2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudENoYW5n
ZSBjaGFuZ2UpCit7CisgICAgaWYgKG9ic2VydmVkQ29udGVudENoYW5nZSgpID09IFdLQ29udGVu
dFZpc2liaWxpdHlDaGFuZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBXS1NldE9ic2VydmVkQ29u
dGVudENoYW5nZShjaGFuZ2UpOworfQorCitib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y29u
dGFpbnNPYnNlcnZlZERPTVRpbWVyKGNvbnN0IERPTVRpbWVyJiB0aW1lcikKK3sKKyAgICByZXR1
cm4gbV9ET01UaW1lckxpc3QuY29udGFpbnMoJnRpbWVyKTsKK30KKwordm9pZCBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI6OmFkZE9ic2VydmVkRE9NVGltZXIoY29uc3QgRE9NVGltZXImIHRpbWVyKQor
eworICAgIEFTU0VSVChpc09ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpKTsKKyAgICBpZiAo
b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fRE9NVGltZXJMaXN0LmFkZCgmdGltZXIpOworfQorCit2b2lk
IENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6cmVtb3ZlT2JzZXJ2ZWRET01UaW1lcihjb25zdCBET01U
aW1lciYgdGltZXIpCit7CisgICAgbV9ET01UaW1lckxpc3QucmVtb3ZlKCZ0aW1lcik7CisgICAg
Ly8gRm9yY2UgcmVzZXQgdGhlIGNvbnRlbnQgY2hhbmdlIGZsYWcgd2hlbiB0aGUgbGFzdCBvYnNl
cnZlZCBjb250ZW50IG1vZGlmaWVyIGlzIHJlbW92ZWQuIFdlIHNob3VsZCBub3QgYmUgaW4gaW5k
ZXRlcm1pbmF0ZSBzdGF0ZSBhbnltb3JlLgorICAgIGlmICghY291bnRPZk9ic2VydmVkRE9NVGlt
ZXJzKCkgJiYgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50SW5kZXRlcm1pbmF0
ZUNoYW5nZSkKKyAgICAgICAgc2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudE5vQ2hh
bmdlKTsKK30KKworc3RhdGljIFZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShj
b25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5y
ZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5
OjpWaXNpYmxlOworCisgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKworICAg
IGF1dG8gd2lkdGggPSBzdHlsZS53aWR0aCgpOworICAgIGF1dG8gaGVpZ2h0ID0gc3R5bGUuaGVp
Z2h0KCk7CisgICAgaWYgKCh3aWR0aC5pc0ZpeGVkKCkgJiYgd2lkdGgudmFsdWUoKSA8PSAwKSB8
fCAoaGVpZ2h0LmlzRml4ZWQoKSAmJiBoZWlnaHQudmFsdWUoKSA8PSAwKSkKKyAgICAgICAgcmV0
dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsKKworICAgIGF1dG8gdG9wID0gc3R5bGUudG9wKCk7Cisg
ICAgYXV0byBsZWZ0ID0gc3R5bGUubGVmdCgpOworICAgIGlmIChsZWZ0LmlzRml4ZWQoKSAmJiB3
aWR0aC5pc0ZpeGVkKCkgJiYgLWxlZnQudmFsdWUoKSA+PSB3aWR0aC52YWx1ZSgpKQorICAgICAg
ICByZXR1cm4gVmlzaWJpbGl0eTo6SGlkZGVuOworCisgICAgaWYgKHRvcC5pc0ZpeGVkKCkgJiYg
aGVpZ2h0LmlzRml4ZWQoKSAmJiAtdG9wLnZhbHVlKCkgPj0gaGVpZ2h0LnZhbHVlKCkpCisgICAg
ICAgIHJldHVybiBWaXNpYmlsaXR5OjpIaWRkZW47CisgICAgcmV0dXJuIFZpc2liaWxpdHk6OlZp
c2libGU7Cit9CisKK0NvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVDaGFuZ2U6OlN0eWxlQ2hh
bmdlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgY29udGVu
dENoYW5nZU9ic2VydmVyKQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX2NvbnRl
bnRDaGFuZ2VPYnNlcnZlcihjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCisgICAgLCBtX3ByZXZpb3Vz
RGlzcGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPmRp
c3BsYXkoKSA6IERpc3BsYXlUeXBlOjpOb25lKQorICAgICwgbV9wcmV2aW91c1Zpc2liaWxpdHko
ZWxlbWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5
KCkgOiBWaXNpYmlsaXR5OjpIaWRkZW4pCisgICAgLCBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmls
aXR5KGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYg
Y29udGVudENoYW5nZU9ic2VydmVyLm9ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29udGVu
dFZpc2liaWxpdHlDaGFuZ2UgPyBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGVsZW1lbnQpIDog
VmlzaWJpbGl0eTo6VmlzaWJsZSkKK3sKK30KKworQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHls
ZUNoYW5nZTo6flN0eWxlQ2hhbmdlKCkKK3sKKyAgICBpZiAoIW1fY29udGVudENoYW5nZU9ic2Vy
dmVyLmlzT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogc3R5bGUgPSBtX2VsZW1lbnQucmVuZGVyU3R5bGUoKTsKKyAgICBhdXRvIHF1YWxpZmll
c0ZvclZpc2liaWxpdHlDaGVjayA9IFsmXSB7CisgICAgICAgIGlmICghc3R5bGUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNo
YWRvd1RyZWUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjb25z
dF9jYXN0PEVsZW1lbnQmPihtX2VsZW1lbnQpLndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH07CisKKyAgICBpZiAoIXF1YWxpZmllc0ZvclZpc2liaWxpdHlDaGVjaygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoKG1fcHJldmlvdXNEaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25l
ICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgIHx8ICht
X3ByZXZpb3VzVmlzaWJpbGl0eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgc3R5bGUtPnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpIaWRkZW4pCisgICAgICAgIHx8IChtX3ByZXZpb3VzSW1w
bGljaXRWaXNpYmlsaXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBlbGVtZW50SW1wbGljaXRW
aXNpYmlsaXR5KG1fZWxlbWVudCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpCisgICAgICAgIG1f
Y29udGVudENoYW5nZU9ic2VydmVyLnNldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRW
aXNpYmlsaXR5Q2hhbmdlKTsKK30KK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NDZkZTdiMjRiYzI0N2Y1MzVkZGY3ZGY0
ODQwZTBkNDA0NmJkNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCIKLQotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0jaW1wb3J0ICJDaHJvbWUuaCIKLSNpbXBvcnQgIkNocm9tZUNsaWVudC5o
IgotI2ltcG9ydCAiRE9NVGltZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlBh
Z2UuaCIKLSNpbXBvcnQgIldLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1Db250ZW50Q2hhbmdlT2JzZXJ2ZXI6OkNvbnRlbnRDaGFuZ2VPYnNl
cnZlcihQYWdlJiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi17Ci19Ci0KLXZvaWQgQ29udGVu
dENoYW5nZU9ic2VydmVyOjpkaWRJbnN0YWxsRE9NVGltZXIoY29uc3QgRE9NVGltZXImIHRpbWVy
LCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKLXsKLSAgICBpZiAoIW1fcGFnZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fcGFnZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAodGltZW91dCA+IDI1MF9tcyB8fCAhc2luZ2xlU2hvdCkK
LSAgICAgICAgcmV0dXJuOwotICAgIGlmICghaXNPYnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmco
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRl
bnRJbmRldGVybWluYXRlQ2hhbmdlKTsKLSAgICBhZGRPYnNlcnZlZERPTVRpbWVyKHRpbWVyKTsK
LSAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgImRpZElu
c3RhbGxET01UaW1lcjogcmVnaXN0ZXIgdGhpcyB0aW1lcjogKCIgPDwgJnRpbWVyIDw8ICIpIGFu
ZCBvYnNlcnZlIHdoZW4gaXQgZmlyZXMuIik7Ci19Ci0KLXZvaWQgQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpzdGFydE9ic2VydmluZ0RPTVRpbWVyRXhlY3V0ZShjb25zdCBET01UaW1lciYgdGltZXIp
Ci17Ci0gICAgaWYgKCFjb250YWluc09ic2VydmVkRE9NVGltZXIodGltZXIpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8
ICJzdGFydE9ic2VydmluZ0RPTVRpbWVyRXhlY3V0ZTogc3RhcnQgb2JzZXJ2aW5nICgiIDw8ICZ0
aW1lciA8PCAiKSB0aW1lciBjYWxsYmFjay4iKTsKLSAgICBzdGFydE9ic2VydmluZ1N0eWxlUmVj
YWxjU2NoZWR1bGluZygpOwotICAgIG1fb2JzZXJ2aW5nQ29udGVudENoYW5nZXMgPSB0cnVlOwot
fQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ0RPTVRpbWVyRXhl
Y3V0ZShjb25zdCBET01UaW1lciYgdGltZXIpCi17Ci0gICAgaWYgKCFjb250YWluc09ic2VydmVk
RE9NVGltZXIodGltZXIpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVtb3ZlT2JzZXJ2ZWRET01U
aW1lcih0aW1lcik7Ci0gICAgc3RvcE9ic2VydmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpOwot
ICAgIHN0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOwotICAgIGF1dG8gb2JzZXJ2ZWRDb250
ZW50Q2hhbmdlID0gdGhpcy0+b2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCk7Ci0gICAgLy8gQ2hlY2sg
aWYgdGhlIHRpbWVyIGNhbGxiYWNrIHRyaWdnZXJlZCBlaXRoZXIgYSBzeW5jIG9yIGFzeW5jIHN0
eWxlIHVwZGF0ZS4KLSAgICBhdXRvIGluRGV0ZXJtaW5lZFN0YXRlID0gb2JzZXJ2ZWRDb250ZW50
Q2hhbmdlID09IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UgfHwgKCFjb3VudE9mT2JzZXJ2ZWRE
T01UaW1lcnMoKSAmJiBvYnNlcnZlZENvbnRlbnRDaGFuZ2UgPT0gV0tDb250ZW50Tm9DaGFuZ2Up
OyAgCi0KLSAgICBMT0dfV0lUSF9TVFJFQU0oQ29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwg
InN0b3BPYnNlcnZpbmdET01UaW1lckV4ZWN1dGU6IHN0b3Agb2JzZXJ2aW5nICgiIDw8ICZ0aW1l
ciA8PCAiKSB0aW1lciBjYWxsYmFjay4iKTsKLSAgICBpZiAoaW5EZXRlcm1pbmVkU3RhdGUpIHsK
LSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3RyZWFtIDw8ICJz
dG9wT2JzZXJ2aW5nRE9NVGltZXJFeGVjdXRlOiAoIiA8PCAmdGltZXIgPDwgIikgaW4gZGV0ZXJt
aW5lZCBzdGF0ZS4iKTsKLSAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLm9ic2VydmVk
Q29udGVudENoYW5nZShtX3BhZ2UubWFpbkZyYW1lKCkpOwotICAgIH0gZWxzZSBpZiAob2JzZXJ2
ZWRDb250ZW50Q2hhbmdlID09IFdLQ29udGVudEluZGV0ZXJtaW5hdGVDaGFuZ2UpIHsKLSAgICAg
ICAgLy8gQW4gYXN5bmMgc3R5bGUgcmVjYWxjIGhhcyBiZWVuIHNjaGVkdWxlZC4gTGV0J3Mgb2Jz
ZXJ2ZSBpdC4KLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbnRlbnRPYnNlcnZhdGlvbiwgc3Ry
ZWFtIDw8ICJzdG9wT2JzZXJ2aW5nRE9NVGltZXJFeGVjdXRlOiAoIiA8PCAmdGltZXIgPDwgIikg
d2FpdCB1bnRpbCBuZXh0IHN0eWxlIHJlY2FsYyBmaXJlcy4iKTsKLSAgICAgICAgc2V0U2hvdWxk
T2JzZXJ2ZU5leHRTdHlsZVJlY2FsYyh0cnVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGVudENo
YW5nZU9ic2VydmVyOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjKCkKLXsKLSAgICBpZiAoIWlzT2Jz
ZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0co
Q29udGVudE9ic2VydmF0aW9uLCAiZGlkU2NoZWR1bGVTdHlsZVJlY2FsYzogcmVnaXN0ZXIgdGhp
cyBzdHlsZSByZWNhbGMgc2NoZWR1bGUgYW5kIG9ic2VydmUgd2hlbiBpdCBmaXJlcy4iKTsKLSAg
ICBzZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSk7
Ci19Ci0KLXZvaWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpzdGFydE9ic2VydmluZ1N0eWxlUmVz
b2x2ZSgpCi17Ci0gICAgaWYgKCFzaG91bGRPYnNlcnZlTmV4dFN0eWxlUmVjYWxjKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAic3RhcnRPYnNlcnZpbmdT
dHlsZVJlc29sdmU6IHN0YXJ0IG9ic2VydmluZyBzdHlsZSByZXNvbHZlLiIpOwotICAgIG1fb2Jz
ZXJ2aW5nQ29udGVudENoYW5nZXMgPSB0cnVlOwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNl
cnZlcjo6c3RvcE9ic2VydmluZ1N0eWxlUmVzb2x2ZSgpCi17Ci0gICAgaWYgKCFzaG91bGRPYnNl
cnZlTmV4dFN0eWxlUmVjYWxjKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coQ29udGVudE9i
c2VydmF0aW9uLCAic3RvcE9ic2VydmluZ1N0eWxlUmVzb2x2ZTogc3RvcCBvYnNlcnZpbmcgc3R5
bGUgcmVzb2x2ZSIpOwotICAgIHNldFNob3VsZE9ic2VydmVOZXh0U3R5bGVSZWNhbGMoZmFsc2Up
OwotICAgIGF1dG8gaW5EZXRlcm1pbmVkU3RhdGUgPSBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSA9
PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlIHx8ICFjb3VudE9mT2JzZXJ2ZWRET01UaW1lcnMo
KTsKLSAgICBpZiAoIWluRGV0ZXJtaW5lZFN0YXRlKSB7Ci0gICAgICAgIExPRyhDb250ZW50T2Jz
ZXJ2YXRpb24sICJzdG9wT2JzZXJ2aW5nU3R5bGVSZXNvbHZlOiBjYW4ndCBkZWNpZGVkIGl0IHll
dC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBMT0coQ29udGVudE9ic2VydmF0aW9u
LCAic3RvcE9ic2VydmluZ1N0eWxlUmVzb2x2ZTogbm90aWZ5IHRoZSBwZW5kaW5nIHN5bnRoZXRp
YyBjbGljayBoYW5kbGVyLiIpOwotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5vYnNlcnZl
ZENvbnRlbnRDaGFuZ2UobV9wYWdlLm1haW5GcmFtZSgpKTsKLX0KLQotdm9pZCBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI6OnJlbW92ZURPTVRpbWVyKGNvbnN0IERPTVRpbWVyJiB0aW1lcikKLXsKLSAg
ICBpZiAoIWNvbnRhaW5zT2JzZXJ2ZWRET01UaW1lcih0aW1lcikpCi0gICAgICAgIHJldHVybjsK
LSAgICByZW1vdmVPYnNlcnZlZERPTVRpbWVyKHRpbWVyKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0o
Q29udGVudE9ic2VydmF0aW9uLCBzdHJlYW0gPDwgInJlbW92ZURPTVRpbWVyOiByZW1vdmUgcmVn
aXN0ZXJlZCB0aW1lciAoIiA8PCAmdGltZXIgPDwgIikiKTsKLSAgICBpZiAoY291bnRPZk9ic2Vy
dmVkRE9NVGltZXJzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3BhZ2UuY2hyb21lKCkuY2xp
ZW50KCkub2JzZXJ2ZWRDb250ZW50Q2hhbmdlKG1fcGFnZS5tYWluRnJhbWUoKSk7Ci19Ci0KLXZv
aWQgQ29udGVudENoYW5nZU9ic2VydmVyOjpjbGVhclRpbWVyc0FuZFJlcG9ydENvbnRlbnRDaGFu
Z2UoKQotewotICAgIGlmICghY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBMT0coQ29udGVudE9ic2VydmF0aW9uLCAiY2xlYXJUaW1lcnNBbmRSZXBvcnRD
b250ZW50Q2hhbmdlOiByZW1vdmUgcmVnaXN0ZXJlZCB0aW1lcnMgYW5kIHJlcG9ydCBjb250ZW50
IGNoYW5nZS4iKTsKLSAgICBjbGVhck9ic2VydmVkRE9NVGltZXJzKCk7Ci0gICAgbV9wYWdlLmNo
cm9tZSgpLmNsaWVudCgpLm9ic2VydmVkQ29udGVudENoYW5nZShtX3BhZ2UubWFpbkZyYW1lKCkp
OwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6ZGlkU3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoKQotewotICAgIGNsZWFyVGltZXJzQW5kUmVwb3J0Q29udGVudENoYW5nZSgpOwotfQot
Ci12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6d2lsbERldGFjaFBhZ2UoKQotewotICAgIGNs
ZWFyVGltZXJzQW5kUmVwb3J0Q29udGVudENoYW5nZSgpOwotfQotCi12b2lkIENvbnRlbnRDaGFu
Z2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpCi17Ci0gICAgc3RhcnRP
YnNlcnZpbmdET01UaW1lclNjaGVkdWxpbmcoKTsKLSAgICBzZXRPYnNlcnZlZENvbnRlbnRDaGFu
Z2UoV0tDb250ZW50Tm9DaGFuZ2UpOwotICAgIG1fb2JzZXJ2aW5nQ29udGVudENoYW5nZXMgPSB0
cnVlOwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RvcE9ic2VydmluZ0NvbnRl
bnRDaGFuZ2VzKCkKLXsKLSAgICBzdG9wT2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nKCk7Ci0g
ICAgbV9vYnNlcnZpbmdDb250ZW50Q2hhbmdlcyA9IGZhbHNlOwotfQotCi1ib29sIENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6aXNPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpCi17Ci0gICAgcmV0dXJu
IG1fb2JzZXJ2aW5nQ29udGVudENoYW5nZXM7Ci19Ci0KLXZvaWQgQ29udGVudENoYW5nZU9ic2Vy
dmVyOjpzdGFydE9ic2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpCi17Ci0gICAgbV9vYnNlcnZp
bmdET01UaW1lclNjaGVkdWxpbmcgPSB0cnVlOwotICAgIGNsZWFyT2JzZXJ2ZWRET01UaW1lcnMo
KTsKLX0KLQotdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdET01UaW1l
clNjaGVkdWxpbmcoKQotewotICAgIG1fb2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5nID0gZmFs
c2U7Ci19Ci0KLWJvb2wgQ29udGVudENoYW5nZU9ic2VydmVyOjppc09ic2VydmluZ0RPTVRpbWVy
U2NoZWR1bGluZygpCi17Ci0gICAgcmV0dXJuIG1fb2JzZXJ2aW5nRE9NVGltZXJTY2hlZHVsaW5n
OwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmdTdHlsZVJl
Y2FsY1NjaGVkdWxpbmcoKQotewotICAgIG1fb2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hlZHVsaW5n
ID0gdHJ1ZTsKLX0KLQotdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OnN0b3BPYnNlcnZpbmdT
dHlsZVJlY2FsY1NjaGVkdWxpbmcoKQotewotICAgIG1fb2JzZXJ2aW5nU3R5bGVSZWNhbGNTY2hl
ZHVsaW5nID0gZmFsc2U7Ci19Ci0KLWJvb2wgQ29udGVudENoYW5nZU9ic2VydmVyOjppc09ic2Vy
dmluZ1N0eWxlUmVjYWxjU2NoZWR1bGluZygpCi17Ci0gICAgcmV0dXJuIG1fb2JzZXJ2aW5nU3R5
bGVSZWNhbGNTY2hlZHVsaW5nOwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6c2V0
U2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYyhib29sIG9ic2VydmUpCi17Ci0gICAgbV9vYnNl
cnZpbmdOZXh0U3R5bGVSZWNhbGMgPSBvYnNlcnZlOwotfQotCi1ib29sIENvbnRlbnRDaGFuZ2VP
YnNlcnZlcjo6c2hvdWxkT2JzZXJ2ZU5leHRTdHlsZVJlY2FsYygpCi17Ci0gICAgcmV0dXJuIG1f
b2JzZXJ2aW5nTmV4dFN0eWxlUmVjYWxjOwotfQotCi1XS0NvbnRlbnRDaGFuZ2UgQ29udGVudENo
YW5nZU9ic2VydmVyOjpvYnNlcnZlZENvbnRlbnRDaGFuZ2UoKQotewotICAgIHJldHVybiBXS09i
c2VydmVkQ29udGVudENoYW5nZSgpOwotfQotCi11bnNpZ25lZCBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI6OmNvdW50T2ZPYnNlcnZlZERPTVRpbWVycygpCi17Ci0gICAgcmV0dXJuIG1fRE9NVGltZXJM
aXN0LnNpemUoKTsKLX0KLQotdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmNsZWFyT2JzZXJ2
ZWRET01UaW1lcnMoKQotewotICAgIG1fRE9NVGltZXJMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQg
Q29udGVudENoYW5nZU9ic2VydmVyOjpzZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50
Q2hhbmdlIGNoYW5nZSkKLXsKLSAgICBXS1NldE9ic2VydmVkQ29udGVudENoYW5nZShjaGFuZ2Up
OwotfQotCi1ib29sIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6Y29udGFpbnNPYnNlcnZlZERPTVRp
bWVyKGNvbnN0IERPTVRpbWVyJiB0aW1lcikKLXsKLSAgICByZXR1cm4gbV9ET01UaW1lckxpc3Qu
Y29udGFpbnMoJnRpbWVyKTsKLX0KLQotdm9pZCBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmFkZE9i
c2VydmVkRE9NVGltZXIoY29uc3QgRE9NVGltZXImIHRpbWVyKQotewotICAgIEFTU0VSVChpc09i
c2VydmluZ0RPTVRpbWVyU2NoZWR1bGluZygpKTsKLSAgICBpZiAob2JzZXJ2ZWRDb250ZW50Q2hh
bmdlKCkgPT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fRE9NVGltZXJMaXN0LmFkZCgmdGltZXIpOwotfQotCi12b2lkIENvbnRlbnRDaGFuZ2VPYnNl
cnZlcjo6cmVtb3ZlT2JzZXJ2ZWRET01UaW1lcihjb25zdCBET01UaW1lciYgdGltZXIpCi17Ci0g
ICAgbV9ET01UaW1lckxpc3QucmVtb3ZlKCZ0aW1lcik7Ci0gICAgLy8gRm9yY2UgcmVzZXQgdGhl
IGNvbnRlbnQgY2hhbmdlIGZsYWcgd2hlbiB0aGUgbGFzdCBvYnNlcnZlZCBjb250ZW50IG1vZGlm
aWVyIGlzIHJlbW92ZWQuIFdlIHNob3VsZCBub3QgYmUgaW4gaW5kZXRlcm1pbmF0ZSBzdGF0ZSBh
bnltb3JlLgotICAgIGlmICghY291bnRPZk9ic2VydmVkRE9NVGltZXJzKCkgJiYgb2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKCkgPT0gV0tDb250ZW50SW5kZXRlcm1pbmF0ZUNoYW5nZSkKLSAgICAgICAg
c2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudE5vQ2hhbmdlKTsKLX0KLQotc3RhdGlj
IFZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQotewotICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwotCi0gICAg
YXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLQotICAgIGF1dG8gd2lkdGggPSBzdHls
ZS53aWR0aCgpOwotICAgIGF1dG8gaGVpZ2h0ID0gc3R5bGUuaGVpZ2h0KCk7Ci0gICAgaWYgKCh3
aWR0aC5pc0ZpeGVkKCkgJiYgd2lkdGgudmFsdWUoKSA8PSAwKSB8fCAoaGVpZ2h0LmlzRml4ZWQo
KSAmJiBoZWlnaHQudmFsdWUoKSA8PSAwKSkKLSAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6Okhp
ZGRlbjsKLQotICAgIGF1dG8gdG9wID0gc3R5bGUudG9wKCk7Ci0gICAgYXV0byBsZWZ0ID0gc3R5
bGUubGVmdCgpOwotICAgIGlmIChsZWZ0LmlzRml4ZWQoKSAmJiB3aWR0aC5pc0ZpeGVkKCkgJiYg
LWxlZnQudmFsdWUoKSA+PSB3aWR0aC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gVmlzaWJpbGl0
eTo6SGlkZGVuOwotCi0gICAgaWYgKHRvcC5pc0ZpeGVkKCkgJiYgaGVpZ2h0LmlzRml4ZWQoKSAm
JiAtdG9wLnZhbHVlKCkgPj0gaGVpZ2h0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmls
aXR5OjpIaWRkZW47Ci0gICAgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7Ci19Ci0KLUNvbnRl
bnRDaGFuZ2VPYnNlcnZlcjo6U3R5bGVDaGFuZ2U6OlN0eWxlQ2hhbmdlKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgY29udGVudENoYW5nZU9ic2VydmVyKQot
ICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcihj
b250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgLCBtX3ByZXZpb3VzRGlzcGxheShlbGVtZW50LnJl
bmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSA6IERpc3BsYXlU
eXBlOjpOb25lKQotICAgICwgbV9wcmV2aW91c1Zpc2liaWxpdHkoZWxlbWVudC5yZW5kZXJTdHls
ZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkgOiBWaXNpYmlsaXR5OjpI
aWRkZW4pCi0gICAgLCBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5KGNvbnRlbnRDaGFuZ2VP
YnNlcnZlci5pc09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgY29udGVudENoYW5nZU9ic2Vy
dmVyLm9ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2Ug
PyBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGVsZW1lbnQpIDogVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKLXsKLX0KLQotQ29udGVudENoYW5nZU9ic2VydmVyOjpTdHlsZUNoYW5nZTo6flN0eWxlQ2hh
bmdlKCkKLXsKLSAgICBpZiAoIW1fY29udGVudENoYW5nZU9ic2VydmVyLmlzT2JzZXJ2aW5nQ29u
dGVudENoYW5nZXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogc3R5bGUgPSBtX2Vs
ZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICBhdXRvIHF1YWxpZmllc0ZvclZpc2liaWxpdHlDaGVj
ayA9IFsmXSB7Ci0gICAgICAgIGlmICghc3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGlmIChtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFjb25zdF9jYXN0PEVsZW1lbnQmPiht
X2VsZW1lbnQpLndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH07Ci0KLSAgICBpZiAoIXF1
YWxpZmllc0ZvclZpc2liaWxpdHlDaGVjaygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
KG1fcHJldmlvdXNEaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5kaXNwbGF5
KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUpCi0gICAgICAgIHx8IChtX3ByZXZpb3VzVmlzaWJpbGl0
eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpIaWRkZW4pCi0gICAgICAgIHx8IChtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5ID09
IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KG1fZWxlbWVu
dCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2Vy
dmVyLnNldE9ic2VydmVkQ29udGVudENoYW5nZShXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlKTsK
LX0KLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwCmlu
ZGV4IGNlNTU5NmUyZDI3ZDNjNmJkNGYwNTJkMWQzMGU0MTJiODZmMTNkYWEuLjNjNjE4MTUyMzdi
MDRlNDAxYjI4NTkyMDk4OGUxNWQ4NjkwYjdjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwCkBAIC0yNSwx
NSArMjUsOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tDb250ZW50T2Jz
ZXJ2YXRpb24uaCIKLSNpbmNsdWRlICJXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmgiCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KIFdLQ29udGVudENoYW5nZSBfV0tDb250ZW50
Q2hhbmdlID0gV0tDb250ZW50Tm9DaGFuZ2U7CiAKIFdLQ29udGVudENoYW5nZSBXS09ic2VydmVk
Q29udGVudENoYW5nZSh2b2lkKQpAQCAtNDMsMTUgKzM3LDcgQEAgV0tDb250ZW50Q2hhbmdlIFdL
T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKHZvaWQpCiAKIHZvaWQgV0tTZXRPYnNlcnZlZENvbnRlbnRD
aGFuZ2UoV0tDb250ZW50Q2hhbmdlIGNoYW5nZSkKIHsKLSAgICAvLyBXZSd2ZSBhbHJlYWR5IGhh
dmUgYSBkZWZpbml0ZSBhbnN3ZXIuCi0gICAgaWYgKF9XS0NvbnRlbnRDaGFuZ2UgPT0gV0tDb250
ZW50VmlzaWJpbGl0eUNoYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNoYW5nZSA9
PSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlIHx8IGNoYW5nZSA9PSBXS0NvbnRlbnRJbmRldGVy
bWluYXRlQ2hhbmdlKSB7Ci0gICAgICAgIF9XS0NvbnRlbnRDaGFuZ2UgPSBjaGFuZ2U7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgX1dLQ29u
dGVudENoYW5nZSA9IGNoYW5nZTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9i
c2VydmF0aW9uLmgKaW5kZXggNmIxMjE5N2JhODE1YTEzMmE2NTk2NjIzODYzZWE4MjEyZGRmZWRh
ZS4uMmZjYTg5NGU0ZTQ2NmU3MGI2MjIzNzA5ZGE5ZjgyNGVhOTA1YjY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24u
aApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIGVudW0KIH0gICBXS0NvbnRlbnRDaGFuZ2U7CiAK
IFdFQkNPUkVfRVhQT1JUIFdLQ29udGVudENoYW5nZSBXS09ic2VydmVkQ29udGVudENoYW5nZSh2
b2lkKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tD
b250ZW50Q2hhbmdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb25J
bnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGFmYzhjOWEwMzU5NWI5
ZmE2NDdiOGU0MmExMDExNDU3YjdiNTU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50
T2JzZXJ2YXRpb25JbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbF9oCi0jZGVmaW5l
IFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWxfaAotCi0jaWYgVEFSR0VUX09TX0lQSE9ORQot
Ci0jaW1wb3J0ICJXS0NvbnRlbnRPYnNlcnZhdGlvbi5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2Uo
V0tDb250ZW50Q2hhbmdlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2Vu
ZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKLQotI2VuZGlmIC8vIFdLQ29udGVudE9ic2VydmF0aW9u
SW50ZXJuYWxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>