<?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>150860</bug_id>
          
          <creation_ts>2015-11-03 15:08:23 -0800</creation_ts>
          <short_desc>Web Inspector: Remove duplication among ScriptDebugServer subclasses</short_desc>
          <delta_ts>2015-11-03 16:44:54 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139112</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-03 15:08:23 -0800</bug_when>
    <thetext>* SUMMARY
Remove duplication among ScriptDebugServer subclasses.

ScriptDebugServer subclasses each have their own addListener/removeListener implementation because they do different work when the first debugger attaches or the last detaches. However, the base class needs that list of listeners to dispatch its events. This is unnecessarily confusing.

- Move addListener/removeListener and the list of listeners to the base class.
- Make the only virtual work &quot;attachDebugger&quot; / &quot;detachDebugger&quot; when the first listener is added or last removed
- Simplify related code that was duplicated as a result of the previous separation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139114</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-03 15:09:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/23383158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139116</commentid>
    <comment_count>2</comment_count>
      <attachid>264736</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-03 15:19:29 -0800</bug_when>
    <thetext>Created attachment 264736
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139182</commentid>
    <comment_count>3</comment_count>
      <attachid>264736</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 16:44:51 -0800</bug_when>
    <thetext>Comment on attachment 264736
[PATCH] Proposed Fix

Clearing flags on attachment: 264736

Committed r191997: &lt;http://trac.webkit.org/changeset/191997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139183</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 16:44:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264736</attachid>
            <date>2015-11-03 15:19:29 -0800</date>
            <delta_ts>2015-11-03 16:44:51 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>dedup1.patch</filename>
            <type>text/plain</type>
            <size>27232</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3ZjhkZTEuLmRiZGI0M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE1LTExLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3Zl
IGR1cGxpY2F0aW9uIGFtb25nIFNjcmlwdERlYnVnU2VydmVyIHN1YmNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg2MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcmlwdERlYnVnU2VydmVy
IGV4cGVjdHMgYSBsaXN0IG9mIGxpc3RlbmVycyB0byBkaXNwYXRjaCBldmVudHMgdG8uCisgICAg
ICAgIEhvd2V2ZXIgZWFjaCBvZiBpdHMgc3ViY2xhc3NlcyBoYWQgdGhlaXIgb3duIGltcGxlbWVu
dGF0aW9uIG9mIHRoZQorICAgICAgICBsaXN0IGJlY2F1c2Ugb2YgZGlmZmVyZW50IGhhbmRsaW5n
IHdoZW4gdGhlIGZpcnN0IHdhcyBhZGRlZCBvciB3aGVuCisgICAgICAgIHRoZSBsYXN0IHdhcyBy
ZW1vdmVkLiBFeHRyYWN0IGNvbW1vbiBjb2RlIGludG8gU2NyaXB0RGVidWdTZXJ2ZXIKKyAgICAg
ICAgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuCisKKyAgICAgICAgU3ViY2xhc3NlcyBub3cgb25s
eSBpbXBsZW1lbnQgYSB2aXJ0dWFsIG1ldGhvZHMgImF0dGFjaERlYnVnZ2VyIgorICAgICAgICBh
bmQgImRldGFjaERlYnVnZ2VyIiB3aGljaCBpcyB0aGUgdW5pcXVlIHdvcmsgZG9uZSB3aGVuIHRo
ZSBmaXJzdAorICAgICAgICBsaXN0ZW5lciBpcyBhZGRlZCBvciBsYXN0IGlzIHJlbW92ZWQuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmF0
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEJyZWFrcG9p
bnRBY3Rpb25Mb2cpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaDoKKworICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6
OlNjcmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdDo6U2NyaXB0KToKKyAgICAgICAgRHJpdmUtYnkg
Y29udmVydCBTY3JpcHQgdG8gYSBzdHJ1Y3QsIGl0IGhhcyBwdWJsaWMgZmllbGRzIGFuZCBpcyB1
c2VkIGFzIHN1Y2guCisKKzIwMTUtMTEtMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb3ZlIFNjcmlwdERlYnVnU2VydmVy
OjpUYXNrIHRvIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIHdoZXJlIGl0IGlzIGFjdHVhbGx5IHVz
ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg0
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA5YjI1NWJiLi42
ZDhjZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQwLDM0
ICs0MCwxNyBAQCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyKEpTR2xvYmFsT2JqZWN0JgogewogfQogCi12b2lkIEpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIq
IGxpc3RlbmVyKQordm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hE
ZWJ1Z2dlcigpCiB7Ci0gICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOworICAgIGF0
dGFjaCgmbV9nbG9iYWxPYmplY3QpOworICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Cit9
CiAKLSAgICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOwotICAgIG1fbGlz
dGVuZXJzLmFkZChsaXN0ZW5lcik7Ci0KLSAgICAvLyBGaXJzdCBsaXN0ZW5lci4gQXR0YWNoIHRo
ZSBkZWJ1Z2dlciB0byB0aGUgSlNHbG9iYWxPYmplY3QuCi0gICAgaWYgKHdhc0VtcHR5KSB7Ci0g
ICAgICAgIGF0dGFjaCgmbV9nbG9iYWxPYmplY3QpOwordm9pZCBKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCit7Cisg
ICAgZGV0YWNoKCZtX2dsb2JhbE9iamVjdCwgaXNCZWluZ0Rlc3Ryb3llZCA/IERlYnVnZ2VyOjpH
bG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nIDogRGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5n
U2Vzc2lvbik7CisgICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQogICAgICAgICByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygpOwotICAgIH0KLX0KLQotdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwg
Ym9vbCBpc0JlaW5nRGVzdHJveWVkKQotewotICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0KLSAgICAvLyBMYXN0
IGxpc3RlbmVyLiBEZXRhY2ggdGhlIGRlYnVnZ2VyIGZyb20gdGhlIEpTR2xvYmFsT2JqZWN0Lgot
ICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGV0YWNoKCZtX2dsb2Jh
bE9iamVjdCwgaXNCZWluZ0Rlc3Ryb3llZCA/IERlYnVnZ2VyOjpHbG9iYWxPYmplY3RJc0Rlc3Ry
dWN0aW5nIDogRGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbik7Ci0gICAgICAg
IGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKLSAgICAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKCk7Ci0gICAgfQogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6
OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKQEAgLTgxLDQgKzY0LDMgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5oCmluZGV4IDNjZjZjNzIuLmQ4MDhhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXJfaAogCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMzcsMTMgKzM2LDEy
IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyKEpTQzo6SlNH
bG9iYWxPYmplY3QmKTsKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyKCkgeyB9CiAKLSAgICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsK
LSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBib29sIGlzQmVp
bmdEZXN0cm95ZWQpOwotCiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IExpc3RlbmVyU2V0JiBnZXRMaXN0ZW5lcnMoKSBvdmVycmlkZSB7IHJldHVybiBtX2xpc3RlbmVy
czsgfQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRl
OworCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVj
dCopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNl
ZCgpIG92ZXJyaWRlOwpAQCAtNTQsNyArNTIsNiBAQCBwcml2YXRlOgogICAgIC8vIG9yIHNvbWUg
b3RoZXIgYXN5bmMgb3BlcmF0aW9uIGluIGEgcHVyZSBKU0NvbnRleHQpIHdlIGNhbiBpZ25vcmUg
ZXhjZXB0aW9ucyByZXBvcnRlZCBoZXJlLgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IG92ZXJyaWRlIHsgfQog
Ci0gICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5lcnM7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYg
bV9nbG9iYWxPYmplY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCmluZGV4IGRmZDllMGEuLjQzZmYyMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0
ZW5lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdM
aXN0ZW5lci5oCkBAIC0zMSw3ICszMSw2IEBACiAjZGVmaW5lIFNjcmlwdERlYnVnTGlzdGVuZXJf
aAogCiAjaW5jbHVkZSAiZGVidWdnZXIvRGVidWdnZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgRGVwcmVj
YXRlZCB7CkBAIC00NCwyNiArNDMsMTYgQEAgc3RydWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb247
CiAKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXIgewogcHVibGljOgotICAgIGNsYXNzIFNjcmlw
dCB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHQoKQotICAgICAgICAgICAgOiBzdGFydExp
bmUoMCkKLSAgICAgICAgICAgICwgc3RhcnRDb2x1bW4oMCkKLSAgICAgICAgICAgICwgZW5kTGlu
ZSgwKQotICAgICAgICAgICAgLCBlbmRDb2x1bW4oMCkKLSAgICAgICAgICAgICwgaXNDb250ZW50
U2NyaXB0KGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQorICAgIHN0cnVjdCBTY3JpcHQg
ewogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAgICBT
dHJpbmcgc291cmNlVVJMOwogICAgICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTDsKLSAgICAg
ICAgaW50IHN0YXJ0TGluZTsKLSAgICAgICAgaW50IHN0YXJ0Q29sdW1uOwotICAgICAgICBpbnQg
ZW5kTGluZTsKLSAgICAgICAgaW50IGVuZENvbHVtbjsKLSAgICAgICAgYm9vbCBpc0NvbnRlbnRT
Y3JpcHQ7CisgICAgICAgIGludCBzdGFydExpbmUgezB9OworICAgICAgICBpbnQgc3RhcnRDb2x1
bW4gezB9OworICAgICAgICBpbnQgZW5kTGluZSB7MH07CisgICAgICAgIGludCBlbmRDb2x1bW4g
ezB9OworICAgICAgICBib29sIGlzQ29udGVudFNjcmlwdCB7ZmFsc2V9OwogICAgIH07CiAKICAg
ICB2aXJ0dWFsIH5TY3JpcHREZWJ1Z0xpc3RlbmVyKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDkzYjg4
YzguLjQ2NDQ2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiU291
cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTE0NCwxNCArMTQzLDEzIEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluCiAgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTGlzdGVuZXJTZXQmIGxpc3RlbmVycyA9IGdldExpc3RlbmVycygpOwotICAg
IGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBjaGFuZ2UobV9j
YWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAogICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVy
Kj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBsaXN0ZW5lcnND
b3B5KTsKKyAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwogICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQogICAgICAgICBsaXN0ZW5lci0+
YnJlYWtwb2ludEFjdGlvbkxvZyhleGVjLCBtZXNzYWdlKTsKIH0KQEAgLTE2MSwxNCArMTU5LDEz
IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2ludEFjdGlvblNvdW5k
KEV4ZWNTdGF0ZSosIGludCBicmVha3BvaW50CiAgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTGlzdGVuZXJTZXQmIGxpc3RlbmVycyA9IGdldExpc3Rl
bmVycygpOwotICAgIGlmIChsaXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgIGlmIChtX2xpc3RlbmVy
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRlbXBvcmFyeUNoYW5nZTxib29s
PiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAogICAgIFZlY3RvcjxTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJz
LCBsaXN0ZW5lcnNDb3B5KTsKKyAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVy
c0NvcHkpOwogICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQogICAgICAg
ICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVyKTsKIH0KQEAgLTE3OCw4ICsxNzUsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Qcm9iZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNjcgogICAg
IGlmIChtX2NhbGxpbmdMaXN0ZW5lcnMpCiAgICAgICAgIHJldHVybjsKIAotICAgIExpc3RlbmVy
U2V0JiBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnMoKTsKLSAgICBpZiAobGlzdGVuZXJzLmlzRW1w
dHkoKSkKKyAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1fY2FsbGluZ0xpc3RlbmVycywgdHJ1
ZSk7CkBAIC0xODcsNyArMTgzLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hC
cmVha3BvaW50QWN0aW9uUHJvYmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3IKICAgICB1bnNp
Z25lZCBzYW1wbGVJZCA9IG1fbmV4dFByb2JlU2FtcGxlSWQrKzsKIAogICAgIFZlY3RvcjxTY3Jp
cHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVu
ZXJzLCBsaXN0ZW5lcnNDb3B5KTsKKyAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3Rl
bmVyc0NvcHkpOwogICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQogICAg
ICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvblByb2JlKGV4ZWMsIGFjdGlvbiwgbV9jdXJy
ZW50UHJvYmVCYXRjaElkLCBzYW1wbGVJZCwgc2FtcGxlVmFsdWUpOwogfQpAQCAtMjQ5LDE3ICsy
NDUsMTYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSog
ZXhlYywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3YKICAgICBpZiAobV9jYWxsaW5nTGlzdGVu
ZXJzKQogICAgICAgICByZXR1cm47CiAKLSAgICBMaXN0ZW5lclNldCYgbGlzdGVuZXJzID0gZ2V0
TGlzdGVuZXJzKCk7Ci0gICAgaWYgKGxpc3RlbmVycy5pc0VtcHR5KCkpCisgICAgaWYgKG1fbGlz
dGVuZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGVtcG9yYXJ5Q2hhbmdl
PGJvb2w+IGNoYW5nZShtX2NhbGxpbmdMaXN0ZW5lcnMsIHRydWUpOwogCiAgICAgYm9vbCBpc0Vy
cm9yID0gZXJyb3JMaW5lICE9IC0xOwogICAgIGlmIChpc0Vycm9yKQotICAgICAgICBkaXNwYXRj
aEZhaWxlZFRvUGFyc2VTb3VyY2UobGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5l
LCBlcnJvck1lc3NhZ2UpOworICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UobV9s
aXN0ZW5lcnMsIHNvdXJjZVByb3ZpZGVyLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiAgICAg
ZWxzZQotICAgICAgICBkaXNwYXRjaERpZFBhcnNlU291cmNlKGxpc3RlbmVycywgc291cmNlUHJv
dmlkZXIsIGlzQ29udGVudFNjcmlwdChleGVjKSk7CisgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VT
b3VyY2UobV9saXN0ZW5lcnMsIHNvdXJjZVByb3ZpZGVyLCBpc0NvbnRlbnRTY3JpcHQoZXhlYykp
OwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMjY3LDExICsyNjIs
MTIgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjawogICAgIGlmIChtX2NhbGxpbmdMaXN0ZW5lcnMp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBjaGFuZ2UobV9jYWxsaW5n
TGlzdGVuZXJzLCB0cnVlKTsKIAotICAgIExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMgPSBnZXRMaXN0
ZW5lcnMoKTsKLSAgICBpZiAoIWxpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycyhsaXN0ZW5lcnMsIGNhbGxiYWNrKTsKKyAgICBkaXNwYXRjaEZ1
bmN0aW9uVG9MaXN0ZW5lcnMobV9saXN0ZW5lcnMsIGNhbGxiYWNrKTsKIH0KIAogdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKGNvbnN0IExpc3RlbmVy
U2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjaykKQEAg
LTMzMyw2ICszMjksMjkgQEAgY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIFNjcmlwdERlYnVnU2Vy
dmVyOjpnZXRBY3Rpb25zRm9yQnJlYWtwb2ludChKU0M6OkJyZWFrcG8KICAgICByZXR1cm4gZW1w
dHlBY3Rpb25WZWN0b3I7CiB9CiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIEFTU0VSVChsaXN0ZW5lcik7
CisKKyAgICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOworICAgIG1fbGlz
dGVuZXJzLmFkZChsaXN0ZW5lcik7CisKKyAgICAvLyBGaXJzdCBsaXN0ZW5lci4gQXR0YWNoIHRo
ZSBkZWJ1Z2dlci4KKyAgICBpZiAod2FzRW1wdHkpCisgICAgICAgIGF0dGFjaERlYnVnZ2VyKCk7
Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpCit7CisgICAgQVNTRVJU
KGxpc3RlbmVyKTsKKworICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CisKKyAgICAv
LyBMYXN0IGxpc3RlbmVyLiBEZXRhY2ggdGhlIGRlYnVnZ2VyLgorICAgIGlmIChtX2xpc3RlbmVy
cy5pc0VtcHR5KCkpCisgICAgICAgIGRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOwor
fQorCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9u
T3JDYXVnaHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgaWYgKHJlYXNvbkZv
clBhdXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGU5YTk5YjcuLmUwNjcw
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERl
YnVnU2VydmVyLmgKQEAgLTM2LDkgKzM2LDYgQEAKICNpbmNsdWRlICJkZWJ1Z2dlci9EZWJ1Z2dl
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU5LDYgKzU2LDkgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIGdldEFjdGlvbnNGb3JCcmVha3BvaW50KEpTQzo6QnJl
YWtwb2ludElEKTsKIAorICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciop
OworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIGJvb2wgaXNC
ZWluZ0Rlc3Ryb3llZCk7CisKIHByb3RlY3RlZDoKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2NyaXB0
RGVidWdMaXN0ZW5lcio+IExpc3RlbmVyU2V0OwogICAgIHR5cGVkZWYgdm9pZCAoU2NyaXB0RGVi
dWdTZXJ2ZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKFNjcmlwdERlYnVnTGlzdGVu
ZXIqKTsKQEAgLTY2LDcgKzY2LDkgQEAgcHJvdGVjdGVkOgogICAgIFNjcmlwdERlYnVnU2VydmVy
KEpTQzo6Vk0mLCBib29sIGlzSW5Xb3JrZXJUaHJlYWQgPSBmYWxzZSk7CiAgICAgflNjcmlwdERl
YnVnU2VydmVyKCk7CiAKLSAgICB2aXJ0dWFsIExpc3RlbmVyU2V0JiBnZXRMaXN0ZW5lcnMoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpID0gMDsKKwogICAgIHZp
cnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpID0gMDsKQEAgLTk5LDEwICsxMDEsMTEg
QEAgcHJpdmF0ZToKIAogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4Y2VwdGlvbk9yQ2F1
Z2h0VmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKIAotICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJz
IHtmYWxzZX07Ci0KICAgICBCcmVha3BvaW50SURUb0FjdGlvbnNNYXAgbV9icmVha3BvaW50SURU
b0FjdGlvbnM7CiAKKyAgICBMaXN0ZW5lclNldCBtX2xpc3RlbmVyczsKKyAgICBib29sIG1fY2Fs
bGluZ0xpc3RlbmVycyB7ZmFsc2V9OworCiAgICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJ
ZCB7MX07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50UHJvYmVCYXRjaElkIHswfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNiOWY5MTYuLjFjMDkxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKLSAgICBzdGFy
dExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5h
ZGRMaXN0ZW5lcih0aGlzKTsKIAogICAgIGlmIChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3Rl
bmVyLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAgIGlm
ICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wTGlzdGVuaW5nU2NyaXB0
RGVidWdTZXJ2ZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5y
ZW1vdmVMaXN0ZW5lcih0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKICAgICBjbGVhckluc3BlY3Rv
ckJyZWFrcG9pbnRTdGF0ZSgpOwogCiAgICAgQVNTRVJUKG1famF2YVNjcmlwdEJyZWFrcG9pbnRz
LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNWRmMDg0My4u
MWI4NmMzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMTE2LDggKzExNiw2
IEBAIHByb3RlY3RlZDoKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0
TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAgICAg
dmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIHNraXBSZWNvbXBpbGUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVu
bXV0ZUNvbnNvbGUoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IGY2OTEyYTYuLjZjMTRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNDUsMTYgKzQ1LDYgQEAgSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmIGNv
bnRleHQKIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlz
dGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQotewotICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWRk
TGlzdGVuZXIodGhpcyk7Ci19Ci0KLXZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Ojpz
dG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQotewot
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgaXNCZWluZ0Rlc3Ry
b3llZCk7Ci19Ci0KIEluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAppbmRleCAxZGQ0YTIwLi5mMTA1ZTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaApAQCAtNDIsOCArNDIsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIm
IHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZl
cjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2Vy
dmVyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2lu
dEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDIwN2Q5N2MuLmI5NzM0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNSBAQAog
MjAxNS0xMS0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBkdXBsaWNhdGlvbiBhbW9uZyBTY3JpcHREZWJ1Z1Nl
cnZlciBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTA4NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxp
c3RlbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2Vu
dDo6c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVn
U2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OmFkZExpc3RlbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1Nl
cnZlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
aDoKKworMjAxNS0xMS0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgU2NyaXB0RGVidWdTZXJ2ZXI6OlRhc2sgdG8g
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIgd2hlcmUgaXQgaXMgYWN0dWFsbHkgdXNlZAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODQ3CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBlZjU5YzQwLi5lYTg1OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01MSwzMyArNTEs
MTggQEAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNjcmlwdERlYnVnU2VydmVyKFdv
cmtlckdsb2JhbFNjb3BlJiBjb250ZXh0LCBjb24KIHsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCit2
b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCiB7Ci0gICAgaWYg
KCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOworICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuc2Ny
aXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOworICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KCk7Cit9CiAKLSAgICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOwotICAg
IG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7Ci0KLSAgICBpZiAod2FzRW1wdHkpIHsKLSAgICAg
ICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+YXR0YWNoRGVidWdnZXIodGhpcyk7Cit2
b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIHNraXBSZWNv
bXBpbGUpCit7CisgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCkpCisgICAgICAg
IG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFjaERlYnVnZ2VyKHRoaXMpOworICAg
IGlmICghc2tpcFJlY29tcGlsZSkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsK
LSAgICB9Ci19Ci0KLXZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHNraXBSZWNvbXBpbGUpCi17Ci0g
ICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9saXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVyKTsKLQotICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCkpCi0gICAgICAgICAgICBtX3dvcmtl
ckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKLSAgICAgICAgaWYg
KCFza2lwUmVjb21waWxlKQotICAgICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsK
LSAgICB9CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGM5YTAxYTcuLmEzMTk4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
NTIsMTMgKzUyLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihJbnNwZWN0b3I6
OlNjcmlwdERlYnVnTGlzdGVuZXIqKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKEluc3BlY3Rv
cjo6U2NyaXB0RGVidWdMaXN0ZW5lciosIGJvb2wgc2tpcFJlY29tcGlsZSk7Ci0KICAgICB2b2lk
IGludGVycnVwdEFuZFJ1blRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KTsKIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIExpc3RlbmVyU2V0JiBnZXRMaXN0ZW5lcnMoKSBvdmVycmlkZSB7IHJldHVy
biBtX2xpc3RlbmVyczsgfQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95
ZWQpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNDOjpK
U0dsb2JhbE9iamVjdCopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjUsNiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkV4Y2Vw
dGlvbiopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2Vy
R2xvYmFsU2NvcGU7Ci0gICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5lcnM7CiAgICAgU3RyaW5nIG1f
ZGVidWdnZXJUYXNrTW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDUwZjY3YjUuLjE5MzQ4OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtOTMsMTYgKzkzLDYg
QEAgU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3Qg
U2NyaXB0JiBzY3JpcHQpCiAgICAgcmV0dXJuIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvclNjcmlwdChzY3JpcHQpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojpz
dGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKLXsKLSAgICBzY3JpcHREZWJ1Z1NlcnZl
cigpLmFkZExpc3RlbmVyKHRoaXMpOwotfQotCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzdG9w
TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQotewotICAg
IHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgaXNCZWluZ0Rlc3Ryb3ll
ZCk7Ci19Ci0KIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZURlYnVnZ2VyQWdlbnQ6OnNjcmlw
dERlYnVnU2VydmVyKCkKIHsKICAgICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggMmQzOGMzMy4u
NzgxNjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmgKQEAgLTY0LDggKzY0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCmluZGV4IDYzYjViNTQuLmU3YzVmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01NywzMiArNTcsMTcgQEAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFnZSYgcGFnZSkKIHsK
IH0KIAotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERl
YnVnZ2VyKCkKIHsKLSAgICBpZiAoIWxpc3RlbmVyKQotICAgICAgICByZXR1cm47CisgICAgbV9w
YWdlLnNldERlYnVnZ2VyKHRoaXMpOworICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Cit9
CiAKLSAgICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOwotICAgIG1fbGlz
dGVuZXJzLmFkZChsaXN0ZW5lcik7Ci0KLSAgICBpZiAod2FzRW1wdHkpIHsKLSAgICAgICAgbV9w
YWdlLnNldERlYnVnZ2VyKHRoaXMpOwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFj
aERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBtX3BhZ2Uuc2V0RGVidWdn
ZXIobnVsbHB0cik7CisgICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQogICAgICAgICByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucygpOwotICAgIH0KLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIGlz
QmVpbmdEZXN0cm95ZWQpCi17Ci0gICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLQotICAgIGlmIChtX2xpc3RlbmVy
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9wYWdlLnNldERlYnVnZ2VyKG51bGxwdHIpOwotICAg
ICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCi0gICAgICAgICAgICByZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpOwotICAgIH0KIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBkMjI0ZjY3Li40NDc4ZWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0yOCw3ICsy
OCw2IEBACiAjZGVmaW5lIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcl9oCiAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDEzICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyKFBhZ2UmKTsKICAgICB2aXJ0dWFsIH5QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIoKSB7IH0KIAotICAgIHZvaWQgYWRkTGlzdGVuZXIoSW5zcGVjdG9yOjpTY3JpcHREZWJ1
Z0xpc3RlbmVyKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJbnNwZWN0b3I6OlNjcmlwdERl
YnVnTGlzdGVuZXIqLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpOwotCiAgICAgdmlydHVhbCB2b2lk
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBMaXN0ZW5lclNldCYgZ2V0TGlzdGVuZXJzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9saXN0
ZW5lcnM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVy
cmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQo
KSBvdmVycmlkZTsKQEAgLTYzLDcgKzYxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEphdmFT
Y3JpcHRQYXVzZWQoRnJhbWUqLCBib29sIHBhdXNlZCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0
UGF1c2VkKEZyYW1lVmlldyosIGJvb2wgcGF1c2VkKTsKIAotICAgIExpc3RlbmVyU2V0IG1fbGlz
dGVuZXJzOwogICAgIFBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjYzg0NGUzLi44NTk0NjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0xMDYsMTYgKzEwNiw2IEBAIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW50ZXJydXB0
QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhXb3JrZXJUaHJlYWQqIHRoCiAgICAgICAgIGFn
ZW50LT5tX3NjcmlwdERlYnVnU2VydmVyLmludGVycnVwdEFuZFJ1blRhc2soc3RkOjptYWtlX3Vu
aXF1ZTxSdW5JbnNwZWN0b3JDb21tYW5kc1Rhc2s+KHRocmVhZCwgJmFnZW50LT5tX2luc3BlY3Rl
ZFdvcmtlckdsb2JhbFNjb3BlKSk7CiB9CiAKLXZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6c3Rh
cnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCi17Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIo
KS5hZGRMaXN0ZW5lcih0aGlzKTsKLX0KLQotdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpzdG9w
TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQotewotICAg
IHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgaXNCZWluZ0Rlc3Ryb3ll
ZCk7Ci19Ci0KIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX2luc3BlY3Rl
ZFdvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyQWdlbnQuaAppbmRleCAzZTE3NjgxLi5hYzE5MDgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTUwLDggKzUw
LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z2dlclRhc2tNb2RlOwog
ICAgIHN0YXRpYyB2b2lkIGludGVycnVwdEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMoV29y
a2VyVGhyZWFkKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1
Z1NlcnZlcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nU2NyaXB0
RGVidWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>