<?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>179627</bug_id>
          
          <creation_ts>2017-11-13 13:03:17 -0800</creation_ts>
          <short_desc>Replace dispatch_async with callOnMainThread</short_desc>
          <delta_ts>2017-11-13 13:25:07 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1371017</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 13:03:17 -0800</bug_when>
    <thetext>Replace dispatch_async with callOnMainThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371020</commentid>
    <comment_count>1</comment_count>
      <attachid>326784</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 13:08:10 -0800</bug_when>
    <thetext>Created attachment 326784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371034</commentid>
    <comment_count>2</comment_count>
      <attachid>326784</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-13 13:25:07 -0800</bug_when>
    <thetext>Comment on attachment 326784
Patch

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

I think this blanket replacement is dangerous. Some of those call sites almost certainly want the actual main thread. I think you need to consult file owners for each area.

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:318
&gt; -    RetainPtr&lt;WebMediaSessionHelper&gt; strongSelf = self;
&gt; -    dispatch_async(dispatch_get_main_queue(), [strongSelf]() {
&gt; +    callOnMainThread([strongSelf = retainPtr(self)]() {
&gt;          BEGIN_BLOCK_OBJC_EXCEPTIONS
&gt;          RetainPtr&lt;MPVolumeView&gt; volumeView = adoptNS([allocMPVolumeViewInstance() init]);
&gt;          callOnWebThreadOrDispatchAsyncOnMainThread([strongSelf, volumeView]() {

I think this one was correct.

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:364
&gt;          [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

This probably really should be the main thread, so undo this part.

&gt; Source/WebCore/platform/audio/mac/AudioSampleDataSource.mm:185
&gt; -    dispatch_async(dispatch_get_main_queue(), [sampleCount, sampleTime, presentationTime, absoluteTime = mach_absolute_time(), startFrame1, endFrame1, startFrame2, endFrame2] {
&gt; +    callOnMainThread([sampleCount, sampleTime, presentationTime, absoluteTime = mach_absolute_time(), startFrame1, endFrame1, startFrame2, endFrame2] {
&gt;          LOG(MediaCaptureSamples, &quot;@@ pushSamples: added %ld samples for time = %s (was %s), mach time = %lld&quot;, sampleCount, toString(sampleTime).utf8().data(), toString(presentationTime).utf8().data(), absoluteTime);
&gt;          LOG(MediaCaptureSamples, &quot;@@ pushSamples: buffered range was [%lld .. %lld], is [%lld .. %lld]&quot;, startFrame1, endFrame1, startFrame2, endFrame2);

Why would we do anything here if we&apos;re not logging?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326784</attachid>
            <date>2017-11-13 13:08:10 -0800</date>
            <delta_ts>2017-11-13 13:25:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179627-20171113130809.patch</filename>
            <type>text/plain</type>
            <size>68364</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0NzcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTExLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVwbGFjZSBkaXNwYXRjaF9hc3luYyB3aXRoIGNhbGxPbk1haW5UaHJlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTYyNwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzMjEzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvckNvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnNpbmdsZXRvbik6CisKIDIwMTctMTEtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgdGhlIGpzYyBzaGVsbCBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRl
cigpIGZ1bmN0aW9uIG1vcmUgcm9idXN0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yQ29jb2EubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIFJlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5zcGVjdG9y
OjpzaW5nbGUKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CiAgICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXnsKICAgICAgICAgaWYgKGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0
KCkpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2Jsb2NrX3QgaW5pdGlhbGl6ZSA9IF57CisgICAg
ICAgICAgICBhdXRvIGluaXRpYWxpemUgPSBbXSB7CiAgICAgICAgICAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgICAgICAgICAgICAgIGlmIChSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxl
ZCkKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZW1vdGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6
c2luZ2xlCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkg
bWlzcyBhbiBhdXRvLWF0dGFjaCB0byBhIEpTQ29udGV4dCBjcmVhdGVkIG9uIGEgbm9uLW1haW4g
dGhyZWFkLgogICAgICAgICAgICAgICAgIC8vIFRoZSBtYWluIHRocmVhZCBpbml0aWFsaXphdGlv
biBpcyByZXF1aXJlZCBmb3IgY2VydGFpbiBXVEYgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBpbml0
aWFsaXplZAogICAgICAgICAgICAgICAgIC8vIG9uIHRoZSAicmVhbCIgbWFpbiB0aHJlYWQuIFdl
IHNob3VsZCBpbnZlc3RpZ2F0ZSBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuCi0gICAgICAg
ICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgaW5pdGlh
bGl6ZSk7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGluaXRpYWxp
emUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0pOwpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyNDc1NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTctMTEtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGRpc3BhdGNoX2FzeW5jIHdpdGggY2FsbE9uTWFp
blRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5NjI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTMyMTM2OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9jb2NvYS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXJDb2NvYS5tbToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKToKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3Rh
bGwpOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYpOgorCiAy
MDE3LTExLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIEZhaXJQbGF5IFN0cmVhbWluZyBiYXNlZCBDRE0gZm9yIE1vZGVybiBFTUUKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
CShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCA8bWFsbG9jL21hbGxvYy5oPgogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNkZWZpbmUgRU5BQkxF
X0ZNV19GT09UUFJJTlRfQ09NUEFSSVNPTiAwCiAKQEAgLTY3LDcgKzY4LDcgQEAgdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQogICAgIGlmIChtX2luc3RhbGxlZCB8fCBfdGlt
ZXJfZXZlbnRfc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgICAgIF9jYWNoZV9ldmVudF9zb3VyY2UgPSBkaXNwYXRjaF9z
b3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBSRVNTVVJFLCAwLCBESVNQ
QVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwgfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJO
IHwgRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfQ1JJVElDQUwsIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOwogI2VsaWYgUExBVEZPUk0oTUFDKQpAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkKICAgICAgICAgbG9nRm9vdHByaW50Q29tcGFy
aXNvbihmb290cHJpbnRCZWZvcmUsIGZvb3RwcmludEFmdGVyKTsKICNlbmRpZgogCi0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgICAgIGVuZFNpbXVsYXRlZE1lbW9yeVByZXNzdXJl
KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKQogICAgIGlmICghbV9pbnN0YWxsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgY2FsbE9uTWFpblRocmVhZCheewogICAgICAgICBpZiAoX2NhY2hlX2V2ZW50
X3NvdXJjZSkgewogICAgICAgICAgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbChfY2FjaGVfZXZl
bnRfc291cmNlKTsKICAgICAgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UoX2NhY2hlX2V2ZW50X3Nv
dXJjZSk7CkBAIC0xNTQsNyArMTU1LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVu
aW5zdGFsbCgpCiAKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVk
IHNlY29uZHMpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgIF90aW1lcl9ldmVudF9zb3Vy
Y2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1RJTUVSLCAw
LCAwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKF90aW1lcl9ldmVu
dF9zb3VyY2UpIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KF90aW1lcl9ldmVu
dF9zb3VyY2UsIHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0NzYzKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIw
MTctMTEtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXBsYWNlIGRpc3BhdGNoX2FzeW5jIHdpdGggY2FsbE9uTWFpblRocmVhZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjI3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zNTMyMTM2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBkaXNwYXRjaF9hc3luYyBkb2Vzbid0IGRpc3BhdGNoIG9u
IHRoZSBjb3JyZWN0IHRocmVhZCBpbiBVSVdlYlZpZXcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29u
bmVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQZXJmb3JtUHJlc3NBY3Rpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9jYXRlVm9sdW1lVmlld10p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBs
ZXNJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlzcGF0Y2hUb01haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRBVlBsYXllckl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNsb25lIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFpblRocmVh
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVEZWNvZGVkU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVxdWVzdE1lZGlh
RGF0YVdoZW5SZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVDYWNoZUNWOjp0ZXh0dXJlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgICgtW1dlYkFWUGxheWVy
TGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6d2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpZEZpbmlzaExh
c3RUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpOgorICAg
ICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVD
aGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZm
ZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAo
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAg
ICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6bXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKE1haW5UaHJlYWRBZG9wdEFu
ZFJlbGVhc2UpOgorICAgICAgICAoV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0dXBGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlciBk
ZXZpY2VEaXNjb25uZWN0ZWQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyT2JzZXJ2ZXIgZGV2aWNlQ29ubmVjdGVkOl0pOgorCiAyMDE3LTExLTEzICBDb2xpbiBC
ZW5kZWxsICA8Y29saW5AYmVuZGVsbC5jYT4KIAogICAgICAgICBBZGRlZCBtaW1lIHR5cGUgY2hl
Y2sgdG8gdGhlIHBpY3R1cmUgc291cmNlIHByZWxvYWRlciB0byBhdm9pZCBkb3dubG9hZGluZyBp
bmNvbXBhdGlibGUgcmVzb3VyY2VzLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTAsMjEgKzI5MCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3Qo
Y29uCiAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZXJyb3IgZXZlbnQuIEJ1dCBzaW5jZSB0aGlz
IGNvZGUgZXhlY3V0ZXMgYXMgcGFydCBvZiB0aGUgV2ViU29ja2V0J3MKICAgICAgICAgICAgIC8v
IGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRvIHdhaXQgdW50aWwgdGhlIGNvbnN0cnVjdG9yIGhhcyBj
b21wbGV0ZWQgYmVmb3JlIGZpcmluZyB0aGUKICAgICAgICAgICAgIC8vIGV2ZW50OyBvdGhlcndp
c2UsIHVzZXJzIGNhbid0IGNvbm5lY3QgdG8gdGhlIGV2ZW50LgotI2lmIFVTRShXRUJfVEhSRUFE
KQotICAgICAgICAgICAgcmVmKCk7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgICAgIFdlYlRocmVhZFJ1biheewot
ICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0b3AoKTsKLSAgICAgICAgICAgICAgICAgICAgZGVyZWYoKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotI2Vsc2UKLSAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSgpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oKSB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hPclF1ZXVlRXJy
b3JFdmVudCgpOwogICAgICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIH0pOwotI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5nKGZyYW1lLmdldCgpLCBt
X3VybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2
aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MzksNyAr
MzQzOSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1QcmVzc0FjdGlvbgogewogICAg
IC8vIEluIGNhc2UgYW55dGhpbmcgd2UgZG8gYnkgcGVyZm9ybWluZyB0aGUgcHJlc3MgYWN0aW9u
IGNhdXNlcyBhbiBhbGVydCBvciBvdGhlciBtb2RhbAogICAgIC8vIGJlaGF2aW9ycywgd2UgbmVl
ZCB0byByZXR1cm4gbm93LCBzbyB0aGF0IFZvaWNlT3ZlciBkb2Vzbid0IGhhbmcgaW5kZWZpbml0
ZWx5LgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgW3NlbGYgX2FjY2Vzc2liaWxpdHlQZXJm
b3JtUHJlc3NBY3Rpb25dOwogICAgIH0pOwogfQpAQCAtMzU1OSw3ICszNTU5LDcgQEAgLSAodm9p
ZClhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLyBJbiBjYXNlIGFueXRoaW5nIHdlIGRvIGJ5IGNoYW5naW5nIHZhbHVlcyBjYXVzZXMgYW4g
YWxlcnQgb3Igb3RoZXIgbW9kYWwKICAgICAvLyBiZWhhdmlvcnMsIHdlIG5lZWQgdG8gcmV0dXJu
IG5vdywgc28gdGhhdCBWb2ljZU92ZXIgZG9lc24ndCBoYW5nIGluZGVmaW5pdGVseS4KLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIGNhbGxPbk1h
aW5UaHJlYWQoXnsKICAgICAgICAgW3NlbGYgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTp2YWx1ZSBm
b3JBdHRyaWJ1dGU6YXR0cmlidXRlTmFtZV07CiAgICAgfSk7CiAjZWxzZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTIsOCArMzEyLDcgQEAgLSAodm9pZClhbGxvY2F0ZVZvbHVtZVZpZXcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IHN0cm9u
Z1NlbGYgPSBzZWxmOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdTZWxmXSgpIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpXSgpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAgICAgICAgIFJldGFpblB0cjxNUFZvbHVtZVZpZXc+IHZvbHVtZVZpZXcgPSBhZG9wdE5TKFth
bGxvY01QVm9sdW1lVmlld0luc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHZvbHVtZVZpZXddKCkg
ewpAQCAtMzYwLDcgKzM1OSw3IEBAIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lv
bk1hbmEKICAgICBbc2VsZiBhbGxvY2F0ZVZvbHVtZVZpZXddOwogCiAgICAgLy8gTm93IHBsYXlp
bmcgd29uJ3Qgd29yayB1bmxlc3Mgd2UgdHVybiBvbiB0aGUgZGVsaXZlcnkgb2YgcmVtb3RlIGNv
bnRyb2wgZXZlbnRzLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF4geworICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgICAgIFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0g
YmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKICAgICAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCShyZXZpc2lvbiAyMjQ3NTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxzeXNsb2cuaD4K
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAjaW5jbHVkZSA8cGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg+CkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzSQogICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWUyID0gMDsK
ICAgICB1aW50NjRfdCBlbmRGcmFtZTIgPSAwOwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVu
dEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUyLCBlbmRGcmFtZTIpOwotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzYW1wbGVDb3VudCwgc2FtcGxlVGltZSwgcHJl
c2VudGF0aW9uVGltZSwgYWJzb2x1dGVUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCksIHN0YXJ0
RnJhbWUxLCBlbmRGcmFtZTEsIHN0YXJ0RnJhbWUyLCBlbmRGcmFtZTJdIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtzYW1wbGVDb3VudCwgc2FtcGxlVGltZSwgcHJlc2VudGF0aW9uVGltZSwgYWJz
b2x1dGVUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCksIHN0YXJ0RnJhbWUxLCBlbmRGcmFtZTEs
IHN0YXJ0RnJhbWUyLCBlbmRGcmFtZTJdIHsKICAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBs
ZXMsICJAQCBwdXNoU2FtcGxlczogYWRkZWQgJWxkIHNhbXBsZXMgZm9yIHRpbWUgPSAlcyAod2Fz
ICVzKSwgbWFjaCB0aW1lID0gJWxsZCIsIHNhbXBsZUNvdW50LCB0b1N0cmluZyhzYW1wbGVUaW1l
KS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhwcmVzZW50YXRpb25UaW1lKS51dGY4KCkuZGF0YSgp
LCBhYnNvbHV0ZVRpbWUpOwogICAgICAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywgIkBAIHB1
c2hTYW1wbGVzOiBidWZmZXJlZCByYW5nZSB3YXMgWyVsbGQgLi4gJWxsZF0sIGlzIFslbGxkIC4u
ICVsbGRdIiwgc3RhcnRGcmFtZTEsIGVuZEZyYW1lMSwgc3RhcnRGcmFtZTIsIGVuZEZyYW1lMik7
CiAgICAgfSk7CkBAIC0yNDgsNyArMjQ5LDcgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
OnB1bGxTYW1wbGVzSQogICAgIHRpbWVTdGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKIAog
I2lmICFMT0dfRElTQUJMRUQKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgc2FtcGxlT2Zmc2V0ID0gbV9vdXRwdXRT
YW1wbGVPZmZzZXRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzYW1wbGVDb3VudCwgdGltZVN0
YW1wLCBzYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldF0gewogICAgICAgICBMT0co
TWVkaWFDYXB0dXJlU2FtcGxlcywgIioqIHB1bGxTYW1wbGVzOiBhc2tpbmcgZm9yICVsZCBzYW1w
bGVzIGF0IHRpbWUgPSAlbGxkICh3YXMgJWxsZCkiLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCB0
aW1lU3RhbXAgLSBzYW1wbGVPZmZzZXQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yNjMsNyArMjY0
LDcgQEAgYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSQogICAgICAgICAg
ICAgZnJhbWVzQXZhaWxhYmxlID0gdGltZVN0YW1wICsgc2FtcGxlQ291bnQgLSBlbmRGcmFtZTsK
IAogI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3RpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIGZyYW1lc0F2
YWlsYWJsZV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aW1lU3RhbXAsIHN0YXJ0RnJh
bWUsIGVuZEZyYW1lLCBmcmFtZXNBdmFpbGFibGVdIHsKICAgICAgICAgICAgIExPRyhNZWRpYUNh
cHR1cmVTYW1wbGVzLCAiKiogcHVsbFNhbXBsZXNJbnRlcm5hbDogc2FtcGxlICVsbGQgaXMgbm90
IGNvbXBsZXRlbHkgaW4gcmFuZ2UgWyVsbGQgLi4gJWxsZF0sIHJldHVybmluZyAlbGxkIGZyYW1l
cyIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIGZyYW1lc0F2YWlsYWJsZSk7CiAg
ICAgICAgIH0pOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5t
bQkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKICNpZiAhTE9HX0RJU0FCTEVECiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xNDEsMjMgKzE0MiwxMiBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6Y2FuSGFuCiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgICAgIFdlYlRocmVhZFJ1bihibG9jayk7Ci0jZWxzZQotICAgICAgICBibG9jaygp
OwotI2VuZGlmCi0gICAgfSk7Ci19Ci0KIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpyZXF1ZXN0VW5ibG9ja0FzeW5jKERlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGRlY2lzaW9uSGFu
ZGxlcikgY29uc3QKIHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKSAmJiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKG1fd2ViRmlsdGVyRXZhbHVhdG9yKSB7CiAgICAgICAgIFttX3dlYkZpbHRl
ckV2YWx1YXRvciB1bmJsb2NrV2l0aENvbXBsZXRpb246W2RlY2lzaW9uSGFuZGxlcl0oQk9PTCB1
bmJsb2NrZWQsIE5TRXJyb3IgKikgewotICAgICAgICAgICAgZGlzcGF0Y2hUb01haW5UaHJlYWQo
W2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiV2ViRmlsdGVyRXZhbHVhdG9yICVzIHRoZSB1bmJsb2NrIHJlcXVl
c3QuXG4iLCB1bmJsb2NrZWQgPyAiYWxsb3dlZCIgOiAiZGlkIG5vdCBhbGxvdyIpOwogICAgICAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CkBA
IC0xNjgsNyArMTU4LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogCiAgICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewogICAgICAgICBtX3VuYmxvY2tSZXF1
ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGRp
c3BhdGNoVG9NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0geworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKICAg
ICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMjI0
NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTA0Miw3ICsxMDQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogCiAgICAgUmV0YWluUHRyPEFWUGxheWVyVHlwZT4gc3Ryb25nUGxheWVyID0gbV9hdlBs
YXllci5nZXQoKTsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVHlwZT4gc3Ryb25nSXRlbSA9
IGl0ZW07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0
cm9uZ1BsYXllciwgc3Ryb25nSXRlbV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1Bs
YXllciwgc3Ryb25nSXRlbV0gewogICAgICAgICBbc3Ryb25nUGxheWVyIHJlcGxhY2VDdXJyZW50
SXRlbVdpdGhQbGF5ZXJJdGVtOnN0cm9uZ0l0ZW0uZ2V0KCldOwogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgUmVmPFBsYXRmb3JtQ0FM
YXllcj4gUGxhdGZvcm1DQUxheWVyQ29jbwogICAgICAgICBBVlBsYXllckxheWVyICpzb3VyY2VQ
bGF5ZXJMYXllciA9IGF2UGxheWVyTGF5ZXIoKTsKICAgICAgICAgQVNTRVJUKHNvdXJjZVBsYXll
ckxheWVyKTsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICBbZGVzdGlu
YXRpb25QbGF5ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0xMDY1LDcgKzEwNjUsNyBAQCBib29sIFBsYXRmb3JtQ0FM
YXllcjo6aXNXZWJMYXllcigpCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWlu
VGhyZWFkKENHUmVjdCBib3VuZHMpCiB7CiAgICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdl
dCgpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgY2FsbE9uTWFpblRocmVhZCheewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKICAgICAgICAgW2xheWVyIHNldEJvdW5kczpib3VuZHNdOwogICAgICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0Qm91bmRzT25NYWluVGhyCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25P
bk1haW5UaHJlYWQoQ0dQb2ludCBwb3NpdGlvbikKIHsKICAgICBDQUxheWVyICpsYXllciA9IG1f
bGF5ZXIuZ2V0KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0UG9zaXRpb246cG9zaXRpb25dOwogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6
c2V0QW5jaG9yUG9pbnRPbk1haW5UaHJlYWQoRmxvYXRQb2ludDNEIHZhbHVlKQogewogICAgIENB
TGF5ZXIgKmxheWVyID0gbV9sYXllci5nZXQoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFtsYXllciBzZXRBbmNob3JQb2lu
dDpDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSldOwogICAgICAgICBbbGF5ZXIgc2V0
QW5jaG9yUG9pbnRaOnZhbHVlLnooKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjo6bWF5YmVCCiAgICAgfQogCiAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbj4gcHJvdGVjdGVkVGhpcyB7IHRoaXMgfTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpc10geworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbm90aWZp
Y2F0aW9uQ2FsbGJhY2spCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX25vdGlmaWNhdGlv
bkNhbGxiYWNrKCk7CiAgICAgfSk7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJDb3JlRGVj
b21wcmVzc2lvblNlc3Npb246OmVucXVldQogICAgIGlmICghc2hvdWxkTm90aWZ5KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZSht
X2hhc0F2YWlsYWJsZUZyYW1lQ2FsbGJhY2spXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShtX2hhc0F2
YWlsYWJsZUZyYW1lQ2FsbGJhY2spXSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSk7CiB9
CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnJl
cXVlcwogCiAgICAgaWYgKG5vdGlmaWNhdGlvbkNhbGxiYWNrICYmIGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4g
cHJvdGVjdGVkVGhpcyB7IHRoaXMgfTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpc10gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
bm90aWZpY2F0aW9uQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9u
b3RpZmljYXRpb25DYWxsYmFjaygpOwogICAgICAgICB9KTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2
b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6c3RvcFJlCiB2b2lkIFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbjo6bm90aWZ5V2hlbkhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQogewogICAgIGlmIChjYWxsYmFjayAmJiBtX3Byb2R1
Y2VyUXVldWUgJiYgIUNNQnVmZmVyUXVldWVJc0VtcHR5KG1fcHJvZHVjZXJRdWV1ZS5nZXQoKSkp
IHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2Nh
bGxiYWNrXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrXSB7CiAgICAgICAg
ICAgICBjYWxsYmFjaygpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hl
Q1YubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IFJldGFpblB0cjxUZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZVR5cGU+IFQKICAgICBSZXRhaW5QdHI8
VGV4dHVyZVR5cGU+IHZpZGVvVGV4dHVyZSA9IGFkb3B0Q0YoYmFyZVZpZGVvVGV4dHVyZSk7CiAK
ICAgICBhdXRvIHdlYWtUaGlzID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1Ro
aXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjY5LDcgKzI2OSw3IEBAIC0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCiAgICAgW3ZpZXcgc2V0VHJh
bnNmb3JtOnRyYW5zZm9ybV07CiAgICAgCiAgICAgTlNUaW1lSW50ZXJ2YWwgYW5pbWF0aW9uRHVy
YXRpb24gPSBbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAgY2FsbE9uTWFpblRocmVh
ZCheewogICAgICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRo
VGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxd
OwogCiAgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5k
cykgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTphbmltYXRpb25EdXJhdGlvbiArIDAuMV07CkBA
IC02NTcsNyArNjU3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
dQogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKICAgICBSZWZQdHI8VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgIGlmICht
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKQEAgLTc1NCw3ICs3NTQs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0CiAgICAgICAgICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFy
VUlDb2xvcigpXTsKICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKLSAgICAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzLCB0aGlzXSgpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMsIHRoaXNdKCkgewogICAgICAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudC5tbQkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjEsMTQgKzYxLDE0IEBAIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYlNR
TGkKIAogdm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OndpbGxCZWdpbkZpcnN0
VHJhbnNhY3Rpb24oKQogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFt0aGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10gewogICAgICAgICBt
X2h5c3RlcmVzaXMuc3RhcnQoKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXNdIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzXSB7CiAgICAgICAgIG1faHlzdGVyZXNpcy5zdG9wKCk7CiAgICAgfSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0JKHJldmlzaW9uIDIyNDc1
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkCiAgICAgV2ViVGhyZWFkUnVuKFtwcm90
ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBbdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6
Q29sb3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRo
aXMsIHRoaXNdIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmZh
Y2UtPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmQK
ICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAg
ICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90
ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10geworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmYKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlz
XSB7CiAgICAgICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2xpZW50UmVjdF0geworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjbGllbnRSZWN0XSB7CiAg
ICAgICAgICAgICBtX2ludGVyZmFjZS0+cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKHRydWUsIGNs
aWVudFJlY3QpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkCiB7CiAgICAgaWYgKFdlYlRocmVh
ZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGR1cmF0aW9uXSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIGR1cmF0aW9uXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmMKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkp
IHsKICAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgY3VycmVudFRpbWUsIGFuY2hv
clRpbWVdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmN1cnJlbnRUaW1lQ2hhbmdlZChj
dXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBA
IC0zMDIsNyArMzAyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YgogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8Vmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzLCBidWZmZXJlZFRpbWVdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcywgYnVmZmVyZWRUaW1lXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5idWZmZXJl
ZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cgogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0geworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0gewogICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmgKIHsKICAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKICAgICAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgaGFzVmlkZW9dIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgaGFzVmlkZW9dIHsKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6dgogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewog
ICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB2aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnNd
IHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdmlkZW9EaW1lbnNp
b25zID0gdmlkZW9EaW1lbnNpb25zXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT52aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6cwogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAg
ICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtwcm90ZWN0ZWRUaGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygp
LCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWxdIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdl
cy5yYW5nZXMoKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsXSB7CiAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoVGltZVJhbmdlczo6
Y3JlYXRlKHBsYXRmb3JtVGltZVJhbmdlcyksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJ
bnRlcnZhbCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zNzIsNyArMzcyLDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YwogewogICAgIGlmIChX
ZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBjYW5QbGF5RmFz
dFJldmVyc2VdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgY2Fu
UGxheUZhc3RSZXZlcnNlXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6YQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAg
ICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3Rl
ZEluZGV4XSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIG9wdGlv
bnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwOSw3
ICs0MDksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsCiB7CiAg
ICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIG9w
dGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShv
cHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dwogewogICAgIGlmIChXZWJUaHJlYWRJ
c0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBkaXNhYmxlZF0geworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBkaXNhYmxlZF0gewogICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGRp
c2FibGVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ1MSw3ICs0NTEsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjptCiB7CiAgICAgaWYgKFdl
YlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIG11dGVkXSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIG11dGVkXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tdXRlZENoYW5nZWQobXV0ZWQpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnMKICAgICAKICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0U3Vi
bGF5ZXJUcmFuc2Zvcm06W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRyYW5zZm9ybV1dOwogCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAgY2FsbE9u
TWFpblRocmVhZCheewogICAgICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMs
IGZyYW1lLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICAgICAgW0NBVHJhbnNhY3Rp
b24gYmVnaW5dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6
WUVTXTsKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzCiAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRl
b0xheWVyRnJhbWUpOwogCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRS
ZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwg
dmlld1JlZiwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZV0gewogICAgICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKIAogICAgICAgICBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ+IHNlc3Npb25JbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3Jl
YXRlKCp0aGlzKTsKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjplCiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IGlzTWFp
blRocmVhZCgpKTsKICAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93
KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNsaWVudFJlY3Rd
IHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjbGllbnRSZWN0
XSB7CiAgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgICAgICBtX2ludGVyZmFjZS0+
ZXhpdEZ1bGxzY3JlZW4oY2xpZW50UmVjdCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCShyZXZpc2lvbiAyMjQ3
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFk
QWRvcHRBbmRSZWxlYXNlKGlkCiAgICAgLy8gV2Ugb3duIG9iaiBhdCB0aGlzIHBvaW50LCBzbyB3
ZSBkb24ndCBuZWVkIHRoZSBibG9jayB0byBpbXBsaWNpdGx5CiAgICAgLy8gcmV0YWluIGl0Lgog
ICAgIF9fYmxvY2sgaWQgb2JqTm90UmV0YWluZWQgPSBvYmo7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBjYWxsT25NYWluVGhyZWFkKF57CiAg
ICAgICAgIFtvYmpOb3RSZXRhaW5lZCByZWxlYXNlXTsKICAgICB9KTsKIH0KQEAgLTQ0Myw3ICs0
NDMsNyBAQCB2b2lkIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oTlNTdHJpbmcgCiAgICAgaWYg
KHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2JqZWN0Om9iamVjdCB1c2VySW5m
bzp1c2VySW5mb107CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF4geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAg
ICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmlj
YXRpb25OYW1lOm5hbWUgb2JqZWN0Om9iamVjdCB1c2VySW5mbzp1c2VySW5mb107CiAgICAgICAg
IH0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQkocmV2aXNpb24gMjI0NzU3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEYKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2Jq
QygpIHNldFVwUElQRm9yVmlkZW9WaWV3OiZsYXllckhvc3RlZFZpZXcgd2l0aEZyYW1lOihOU1Jl
Y3QpaW5pdGlhbFJlY3QgaW5XaW5kb3c6cGFyZW50V2luZG93XTsKIAogICAgIFJlZlB0cjxWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNd
IHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKHZvaWQpZGV2aWNlRGlz
Y29ubmVjdGVkOihOU05vdGlmaWNhdGkKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgY2FsbE9uTWFpblRocmVhZCheewogICAgICAgICBpZiAobV9jYWxsYmFjaykgewogICAg
ICAgICAgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNlID0gW25vdGlmaWNhdGlvbiBv
YmplY3RdOwogICAgICAgICAgICAgbV9jYWxsYmFjay0+ZGV2aWNlRGlzY29ubmVjdGVkKGRldmlj
ZSk7CkBAIC0yNTMsNyArMjUzLDcgQEAgLSAodm9pZClkZXZpY2VDb25uZWN0ZWQ6KE5TTm90aWZp
Y2F0aW9uIAogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKF57CiAgICAgICAgIGlmIChtX2NhbGxiYWNrKQogICAgICAgICAgICAgbV9jYWxsYmFj
ay0+ZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI0
NzcwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw1NiBAQAorMjAxNy0xMS0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgZGlzcGF0Y2hfYXN5bmMgd2l0aCBjYWxsT25NYWlu
VGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Nzk2MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MzIxMzY4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y2xlYXJOU1VSTENhY2hl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW06
CisgICAgICAgIChXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfZXZhbHVhdGVKYXZhU2NyaXB0OmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVBZnRlclNjcm9sbEluVmlldzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlck5leHRTdGFi
bGVQcmVzZW50YXRpb25VcGRhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZmlyZVByZXNl
bnRhdGlvblVwZGF0ZUZvclBlbmRpbmdTdGFibGVTdGF0ZVByZXNlbnRhdGlvbkNhbGxiYWNrc10p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlV2l0
aG91dFdhaXRpbmdGb3JQYWludGluZzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkv
Y29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbToKKyAgICAgICAgKFdlYktp
dDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdl
YktpdDo6QXV0b21hdGlvbkNsaWVudDo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uV2l0aENhcGFi
aWxpdGllcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlV2lu
ZG93QW5kVmlld0ZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUb3BD
b250ZW50SW5zZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQmVjb21lRWRp
dGFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJm
b3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0
aW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tQREZWaWV3IF9jb21wdXRlTWF0Y2hlc0ZvclN0cmluZzpvcHRpb25zOm1heENvdW50OmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW06CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIGltYWdlUGlja2Vy
Q29udHJvbGxlcjpkaWRGaW5pc2hQaWNraW5nTWVkaWFXaXRoSW5mbzpdKToKKyAgICAgICAgKC1b
V0tGaWxlVXBsb2FkUGFuZWwgaW1hZ2VQaWNrZXJDb250cm9sbGVyOmRpZEZpbmlzaFBpY2tpbmdN
dWx0aXBsZU1lZGlhV2l0aEluZm86XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNl
c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVm
cmVzaEV4aXN0aW5nU2VydmljZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisKIDIwMTctMTEtMTMgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQg
U3VwcG9ydF0gSW1wbGVtZW50IFNQSSBmb3IgY2xpZW50cyB0byByZXF1ZXN0IGRhdGEgZm9yIGEg
Z2l2ZW4gYXR0YWNobWVudApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjI0NzU3
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDcgQEAgc3RhdGljIHZvaWQgY2xl
YXJOU1VSTENhY2hlKGRpc3BhdGNoX2dybwogICAgICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAgICAgICAgIFtj
YWNoZSByZW1vdmVDYWNoZWRSZXNwb25zZXNTaW5jZURhdGU6ZGF0ZV07CiAKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxvY2tQdHI8dm9pZCgpPjo6
ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICB9KS5nZXQo
KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxp
Y2F0aW9uU3RhdAogICAgICAgICAgICAgQktTQXBwbGljYXRpb25TdGF0ZSBuZXdTdGF0ZSA9IChC
S1NBcHBsaWNhdGlvblN0YXRlKVt1c2VySW5mb1tCS1NBcHBsaWNhdGlvblN0YXRlTW9zdEVsZXZh
dGVkU3RhdGVGb3JQcm9jZXNzSURLZXldIHVuc2lnbmVkSW50VmFsdWVdOwogICAgICAgICAgICAg
Ym9vbCBuZXdJbkJhY2tncm91bmQgPSBpc0JhY2tncm91bmRTdGF0ZShuZXdTdGF0ZSk7CiAKLSAg
ICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFr
VGhpcywgbmV3SW5CYWNrZ3JvdW5kXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3
ZWFrVGhpcywgbmV3SW5CYWNrZ3JvdW5kXSB7CiAgICAgICAgICAgICAgICAgYXV0byBhcHBsaWNh
dGlvblN0YXRlVHJhY2tlciA9IHdlYWtUaGlzLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICgh
YXBwbGljYXRpb25TdGF0ZVRyYWNrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5z
CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUocGx1Z2luSW5mb0RpY3Rpb25hcmllcykpOwogCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5y
ZWYoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkg
eworICAgIGNhbGxPbk1haW5UaHJlYWQoXigpIHsKICAgICAgICAgYmxvY2sodG9BUEkoYXJyYXku
Z2V0KCkpLCAwKTsKICAgICAKICAgICAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5kZXJlZigpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OTIsNyArOTkyLDcgQEAgLSAodm9pZClf
ZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKQogICAgICAgICAgICAgICAgIC8vIFRoZSBP
d25lcldhc0ludmFsaWRhdGVkIGNhbGxiYWNrIGlzIHN5bmNocm9ub3VzLiBXZSBkb24ndCB3YW50
IHRvIGNhbGwgdGhlIGJsb2NrIGZyb20gd2l0aGluIGl0CiAgICAgICAgICAgICAgICAgLy8gYmVj
YXVzZSB0aGF0IGNhbiB0cmlnZ2VyIHJlLWVudHJhbmN5IGJ1Z3MgaW4gV2ViS2l0LgogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBldmVuIGJldHRlciBpZiBHZW5lcmljQ2Fs
bGJhY2sgZGlkIHRoaXMgZm9yIHVzLgotICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBlcnJvcl0geworICAgICAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2hhbmRsZXIsIGVycm9yXSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdl
dCgpOwogICAgICAgICAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIH0pOwpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgLSAodm9pZClfc2NoZWR1
bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdAogICAgIH0KICNlbmRpZgogCi0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3JldGFpbmVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3JldGFpbmVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gewogICAgICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSByZXRhaW5lZFNlbGYuZ2V0
KCk7CiAgICAgICAgIGlmICghW3dlYlZpZXcgX2lzVmFsaWRdKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjY3NCw3ICsyNjc0LDcgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
cwogCiAgICAgICAgICAgICBpZiAoIUNHUG9pbnRFcXVhbFRvUG9pbnQoYWN0aXZlUG9pbnQsIGN1
cnJlbnRQb2ludCkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBz
dHJvbmdTY3JvbGxWaWV3ID0gX3Njcm9sbFZpZXc7Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Njcm9sbFZpZXcsIGFjdGl2
ZVBvaW50XSB7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Nyb2xs
VmlldywgYWN0aXZlUG9pbnRdIHsKICAgICAgICAgICAgICAgICAgICAgW3N0cm9uZ1Njcm9sbFZp
ZXcgc2V0Q29udGVudE9mZnNldDphY3RpdmVQb2ludCBhbmltYXRlZDpOT107CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9CkBAIC01NzE0LDcgKzU3MTQsNyBAQCAtIChOU051bWJl
ciAqKV9zdGFibGVTdGF0ZU92ZXJyaWRlCiAtICh2b2lkKV9kb0FmdGVyTmV4dFN0YWJsZVByZXNl
bnRhdGlvblVwZGF0ZTooZGlzcGF0Y2hfYmxvY2tfdCl1cGRhdGVCbG9jawogewogICAgIGlmICgh
W3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIHVwZGF0ZUJsb2NrKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZCh1cGRhdGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3
MzIsNyArNTczMiw3IEBAIC0gKHZvaWQpX2ZpcmVQcmVzZW50YXRpb25VcGRhdGVGb3JQZW5kaW4K
IHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBzdHJvbmdTZWxmID0gc2VsZjsKICAgICBbc2Vs
ZiBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6W3N0cm9uZ1NlbGZdIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1NlbGZdIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2VsZl0gewogICAgICAgICAgICAgaWYg
KFtzdHJvbmdTZWxmLT5fc3RhYmxlU3RhdGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFja3MgY291
bnRdKQogICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIF9maXJlUHJlc2VudGF0aW9uVXBkYXRl
Rm9yUGVuZGluZ1N0YWJsZVN0YXRlUHJlc2VudGF0aW9uQ2FsbGJhY2tzXTsKICAgICAgICAgfSk7
CkBAIC02MDM4LDcgKzYwMzgsNyBAQCAtICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZTooCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJk
Q29udGVudFZpZXddKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIHVwZGF0ZUJsb2NrKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCh1cGRhdGVC
bG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTYwNTUsNyArNjA1NSw3
IEBAIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlV2kKIHsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pIHsKLSAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgdXBkYXRlQmxv
Y2spOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKHVwZGF0ZUJsb2NrKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbAogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0df
RVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBl
cnJvciAlQCIsIGVycm9yKTsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAg
ICBBU1NFUlQoX3Nlc3Npb25CbG9jayk7CiAKICAgICAgICAgICAgIGlmICghX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJh
dGlvbi5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4KKyNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTkxLDcgKzkyLDcgQEAgdm9pZCBBdXRvbWF0aW9u
Q2xpZW50OjpyZXF1ZXN0QXV0b21hdGlvbgogICAgIC8vIEZvcmNlIGNsaWVudHMgdG8gY3JlYXRl
IGFuZCByZWdpc3RlciBhIHNlc3Npb24gYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSwKICAgICAv
LyBSZW1vdGVJbnNwZWN0b3Igd2lsbCB0cnkgdG8gYWNxdWlyZSBpdHMgbG9jayB0byByZWdpc3Rl
ciB0aGUgbmV3IHNlc3Npb24gYW5kCiAgICAgLy8gZGVhZGxvY2sgYmVjYXVzZSBpdCdzIGFscmVh
ZHkgdGFrZW4gd2hpbGUgaGFuZGxpbmcgWFBDIG1lc3NhZ2VzLgotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgY2FsbE9uTWFpblRocmVhZCheewog
ICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKQog
ICAgICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3Byb2Nlc3NQb29sOm1fcHJvY2Vzc1Bvb2wg
ZGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uV2l0aElkZW50aWZpZXI6c2Vzc2lvbklkZW50aWZp
ZXIgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9u
IDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyB2b2lkIHRyeUFw
cExpbmsoUmVmUHRyPEFQSTo6TmF2aWcKIAogICAgIGF1dG8qIGxvY2FsQ29tcGxldGlvbkhhbmRs
ZXIgPSBuZXcgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4oV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlvbkFjdGlvbi0+cmVx
dWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVyXShC
T09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwgc3VjY2Vzc10gewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsb2NhbENvbXBsZXRpb25IYW5kbGVyLCBzdWNjZXNz
XSB7CiAgICAgICAgICAgICAoKmxvY2FsQ29tcGxldGlvbkhhbmRsZXIpKHN1Y2Nlc3MpOwogICAg
ICAgICAgICAgZGVsZXRlIGxvY2FsQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIH0pOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlz
aW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
Ojp1cGRhdGVXaW5kb3dBbmRWaWV3RnJhCiAgICAgbV9kaWRTY2hlZHVsZVdpbmRvd0FuZFZpZXdG
cmFtZVVwZGF0ZSA9IHRydWU7CiAKICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhp
c10geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2NzQsNyArMTY3NCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldFRvcENvbnRlbnRJbnNldChDR0YKICAgICBtX2RpZFNjaGVkdWxlU2V0
VG9wQ29udGVudEluc2V0ID0gdHJ1ZTsKIAogICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFr
UHRyKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3dl
YWtUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vha1RoaXMtPmRpc3Bh
dGNoU2V0VG9wQ29udGVudEluc2V0KCk7CkBAIC0yNjE4LDcgKzI2MTgsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAgICAgW21fd2luZG93VmlzaWJpbGl0eU9i
c2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtdIHsK
ICAgICAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIF9wcmVmbGlnaHRD
aG9zZW5TcGVsbFNlcnZlcl07CiAgICAgfSk7CiB9CkBAIC0zMDAyLDcgKzMwMDIsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlCiAgICAgTlNUZXh0Q2hlY2tpbmdU
eXBlcyBjaGVja2luZ1R5cGVzID0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1RleHRD
aGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CiAg
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKICAgICBtX2xhc3RDYW5kaWRhdGVS
ZXF1ZXN0U2VxdWVuY2VOdW1iZXIgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2UgaW5TdHJp
bmc6cG9zdExheW91dERhdGEucGFyYWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QgdHlw
ZXM6Y2hlY2tpbmdUeXBlcyBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnKCkgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtUaGlzXShOU0ludGVn
ZXIgc2VxdWVuY2VOdW1iZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRp
ZGF0ZXMpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCheewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB3ZWFrVGhpcy0+aGFu
ZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcyk7CkBAIC0z
NzI2LDcgKzM3MjYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihp
CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFt0aGlzLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihmaWxlVVJMLnBhdGgp
LCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lXSB7CisgICAg
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcGF0aCA9IFJldGFpblB0cjxOU1N0
cmluZz4oZmlsZVVSTC5wYXRoKSwgZmlsZU5hbWVzLCBmaWxlQ291bnQsIGRyYWdEYXRhLCBwYXN0
ZWJvYXJkTmFtZV0gewogICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZXMtPmFwcGVuZChwYXRo
LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lcy0+c2l6ZSgpID09IGZp
bGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkocmV2aXNpb24gMjI0NzU3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNz
QXNzZXJ0aW9uKHBpZF90CiAgICAgICAgIGlmICghYWNxdWlyZWQpIHsKICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiICVwIC0gUHJvY2Vzc0Fzc2VydGlv
bigpIFVuYWJsZSB0byBhY3F1aXJlIGFzc2VydGlvbiBmb3IgcHJvY2VzcyB3aXRoIFBJRCAlZCIs
IHRoaXMsIHBpZCk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgICAgICBtYXJrQXNJbnZhbGlkYXRlZCgpOwogICAgICAgICAgICAgfSk7
CkBAIC0xNzcsNyArMTc3LDcgQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vzc0Fzc2VydGlvbihw
aWRfdAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNz
ZXJ0aW9uKCkgQWNxdWlyaW5nIGFzc2VydGlvbiBmb3IgcHJvY2VzcyB3aXRoIFBJRCAlZCIsIHRo
aXMsIHBpZCk7CiAgICAgbV9hc3NlcnRpb24gPSBhZG9wdE5TKFtbQktTUHJvY2Vzc0Fzc2VydGlv
biBhbGxvY10gaW5pdFdpdGhQSUQ6cGlkIGZsYWdzOmZsYWdzRm9yU3RhdGUoYXNzZXJ0aW9uU3Rh
dGUpIHJlYXNvbjpCS1NQcm9jZXNzQXNzZXJ0aW9uUmVhc29uRXh0ZW5zaW9uIG5hbWU6QCJXZWIg
Y29udGVudCB2aXNpYmxlIiB3aXRoSGFuZGxlcjpoYW5kbGVyXSk7CiAgICAgbV9hc3NlcnRpb24u
Z2V0KCkuaW52YWxpZGF0aW9uSGFuZGxlciA9IF4oKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
XnsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9j
ZXNzQXNzZXJ0aW9uKCkgUHJvY2VzcyBhc3NlcnRpb24gZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQg
d2FzIGludmFsaWRhdGVkIiwgdGhpcywgcGlkKTsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
ICAgICAgICAgICAgICAgICBtYXJrQXNJbnZhbGlkYXRlZCgpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NDgs
NyArNTQ4LDcgQEAgLSAodm9pZClfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6KE5TU3RyaQogCiAg
ICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgZW5xdWV1ZWQgYW5vdGhlciBzZWFyY2gsIGNhbmNl
bCB0aGlzIG9uZS4KICAgICAgICAgICAgICAgICBpZiAocmV0YWluZWRTZWxmLT5fbmV4dENvbXB1
dGVNYXRjaGVzT3BlcmF0aW9uSUQgIT0gY29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCkgewotICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KE5PKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEJs
b2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgICAgICAgICAg
fSk7CkBAIC01NTgsNyArNTU4LDcgQEAgLSAodm9pZClfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6
KE5TU3RyaQogICAgICAgICB9CiAKICAgICBtYXhDb3VudEV4Y2VlZGVkOgotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbY29tcHV0ZU1hdGNoZXNPcGVy
YXRpb25JRCwgc3RyaW5nLCBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cywgbWF4Q291bnQsIG1hdGNo
ZXMsIGNvbXBsZXRpb25IYW5kbGVyQ29weSwgcmV0YWluZWRTZWxmXSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQsIHN0cmluZywgb3B0aW9uc0Fm
ZmVjdGluZ1Jlc3VsdHMsIG1heENvdW50LCBtYXRjaGVzLCBjb21wbGV0aW9uSGFuZGxlckNvcHks
IHJldGFpbmVkU2VsZl0gewogCiAgICAgICAgICAgICAvLyBJZiBhbm90aGVyIHNlYXJjaCBoYXMg
YmVlbiBlbnF1ZXVlZCBpbiB0aGUgbWVhbnRpbWUsIGlnbm9yZSB0aGlzIHJlc3VsdC4KICAgICAg
ICAgICAgIGlmIChyZXRhaW5lZFNlbGYtPl9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCAh
PSBjb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCShyZXZpc2lv
biAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBs
b2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyMywxMiArNTIzLDEyIEBAIC0gKHZvaWQp
aW1hZ2VQaWNrZXJDb250cm9sbGVyOihVSUltYWdlUGkKICAgICAgICAgc3VjY2Vzc0Jsb2NrOl4o
TlNBcnJheSAqcHJvY2Vzc2VkUmVzdWx0cywgTlNTdHJpbmcgKmRpc3BsYXlTdHJpbmcpIHsKICAg
ICAgICAgICAgIEFTU0VSVChbcHJvY2Vzc2VkUmVzdWx0cyBjb3VudF0gPT0gMSk7CiAgICAgICAg
ICAgICBfV0tGaWxlVXBsb2FkSXRlbSAqcmVzdWx0ID0gW3Byb2Nlc3NlZFJlc3VsdHMgb2JqZWN0
QXRJbmRleDowXTsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAg
ICAgICAgW3NlbGYgX2Nob29zZUZpbGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpyZXN1bHQu
ZmlsZVVSTF0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpyZXN1bHQuZGlz
cGxheUltYWdlXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1cmVC
bG9jazpeewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgICAgICAg
ICBbc2VsZiBfY2FuY2VsXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC01NTIsMTIg
KzU1MiwxMiBAQCAtICh2b2lkKWltYWdlUGlja2VyQ29udHJvbGxlcjooVUlJbWFnZVBpCiAgICAg
ICAgICAgICAgICAgICAgIGljb25JbWFnZSA9IHJlc3VsdC5kaXNwbGF5SW1hZ2U7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICAg
ICAgW3NlbGYgX2Nob29zZUZpbGVzOmZpbGVVUkxzIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmlu
ZyBpY29uSW1hZ2U6aWNvbkltYWdlXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
ICAgIGZhaWx1cmVCbG9jazpeewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAg
ICAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAg
dm9pZCBTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hFeGlzdGluZwogCiAgICAgICAgIGJvb2wg
aGFzUmljaENvbnRlbnRTZXJ2aWNlcyA9IGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKEBb
IGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQgXSk7CiAgICAgICAgIAotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICBib29sIGF2YWlsYWJsZVNlcnZpY2VzQ2hhbmdl
ZCA9IChoYXNJbWFnZVNlcnZpY2VzICE9IG1faGFzSW1hZ2VTZXJ2aWNlcykgfHwgKGhhc1NlbGVj
dGlvblNlcnZpY2VzICE9IG1faGFzU2VsZWN0aW9uU2VydmljZXMpIHx8IChoYXNSaWNoQ29udGVu
dFNlcnZpY2VzICE9IG1faGFzUmljaENvbnRlbnRTZXJ2aWNlcyk7CiAKICAgICAgICAgICAgIG1f
aGFzU2VsZWN0aW9uU2VydmljZXMgPSBoYXNTZWxlY3Rpb25TZXJ2aWNlczsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQko
cmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTExLDcgKzExMSw3IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRm
b3JtQ0EKIAogICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJMYXll
ciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5ZXIuZ2V0KCkpOwogICAg
ICAgICAgICAgQVZQbGF5ZXJMYXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxB
VlBsYXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbZGVzdGluYXRpb25QbGF5ZXJMYXllciwg
c291cmNlUGxheWVyTGF5ZXJdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Rlc3Rp
bmF0aW9uUGxheWVyTGF5ZXIsIHNvdXJjZVBsYXllckxheWVyXSB7CiAgICAgICAgICAgICAgICAg
W2Rlc3RpbmF0aW9uUGxheWVyTGF5ZXIgc2V0UGxheWVyOltzb3VyY2VQbGF5ZXJMYXllciBwbGF5
ZXJdXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNp
b24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
MTcsNyArNDE3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYQog
ICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90b25p
Y1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwYWdlSUQsIHRpbWVzdGFtcF0gewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwYWdlSUQsIHRpbWVzdGFtcF0gewogICAgICAgICAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCkpCiAgICAgICAgICAgICAgICAgd2ViUGFnZS0+ZGlkRmx1c2hMYXllclRyZWVBdFRp
bWUodGltZXN0YW1wKTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNp
b24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCAgICAgaW50
ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNlCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgCiAgICAgbW9kZWwtPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjb250
ZXh0SWRdIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250
ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgfSk7CkBA
IC0zODYsNyArMzg2LDcgQEAgICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigp
KQogCiAgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5vdyBpZiBpdCB3YXMgcHJldmlvdXNseSByZXF1
ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdmlkZW9FbGVtZW50XSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdmlkZW9FbGVtZW50XSB7CiAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5leGl0
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQpOwogICAgIH0pOwpA
QCAtNDAyLDkgKzQwMiw5IEBAICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU0KICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICAKICAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVj
dGVkVGhpcywgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBjb250ZXh0
SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcywgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSB7CiAgICAgICAgICAgICBtb2Rl
bC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcywgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgY29udGV4dElkLCBpbnRlcmZhY2VdIHsK
KyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBjb250ZXh0
SWQsIGludGVyZmFjZV0gewogICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJmYWNlLT5sYXll
ckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+
bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7
CkBAIC00NDAsNyArNDQwLDcgQEAgICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUoSFRN
TE1lZAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdmlkZW9FbGVtZW50LCBtb2RlXSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdmlkZW9FbGVtZW50LCBtb2RlXSB7CiAg
ICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBt
b2RlKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTExLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBkaXNwYXRjaF9hc3luYyB3
aXRoIGNhbGxPbk1haW5UaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3OTYyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAg
ICAoLVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIHJlZ2lzdGVyV2ViVmlldzpdKToKKyAgICAg
ICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyB1bnJlZ2lzdGVyV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBzZXRFbmFibGVIaWdoQWNjdXJhY3k6
XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgaW5pdGlhbGl6ZUdlb2xv
Y2F0aW9uRm9yV2ViVmlldzpsaXN0ZW5lcjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9w
ZW5QYW5lbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2Rl
KToKKwogMjAxNy0xMS0xMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBhIEZJWE1FcyBpbiBXZWJGcmFtZUlPUwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyAr
MTgyLDcgQEAgLSAodm9pZClyZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaQogI2VuZGlm
CiAKICAgICBpZiAoIV9pc1N1c3BlbmRlZCkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAg
ICAgICAgICAgICBpZiAoIV9jb3JlTG9jYXRpb25Qcm92aWRlcikgewogICAgICAgICAgICAgICAg
IEFTU0VSVCghX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkpOwogICAgICAgICAgICAg
ICAgIF9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5ID0gYWRvcHROUyhbW19XZWJDb3Jl
TG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpzZWxm
XSk7CkBAIC0yMTIsNyArMjEyLDcgQEAgLSAodm9pZCl1bnJlZ2lzdGVyV2ViVmlldzooV2ViVmll
dyAqKXdlYgogICAgIF9wZW5kaW5nSW5pdGlhbFBvc2l0aW9uV2ViVmlldy5yZW1vdmUod2ViVmll
dyk7CiAKICAgICBpZiAoX3JlZ2lzdGVyZWRXZWJWaWV3cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZCheewogICAgICAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdG9w
XTsKICAgICAgICAgfSk7CiAgICAgICAgIF9lbmFibGVIaWdoQWNjdXJhY3kgPSBOTzsKQEAgLTIz
MCw3ICsyMzAsNyBAQCAtICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFjeTooQk9PTCllbmFiCiB7
CiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKICAgICBfZW5hYmxl
SGlnaEFjY3VyYWN5ID0gX2VuYWJsZUhpZ2hBY2N1cmFjeSB8fCBlbmFibGVIaWdoQWNjdXJhY3k7
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBj
YWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5Ol9lbmFibGVIaWdoQWNjdXJhY3ldOwogICAgIH0pOwogfQpAQCAtMjQ2
LDcgKzI0Niw3IEBAIC0gKHZvaWQpaW5pdGlhbGl6ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzoKICAg
ICBfd2ViVmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hZGQod2ViVmll
dywgbGlzdGVuZXIpOwogICAgIF90cmFja2VkV2ViVmlld3MuYWRkKHdlYlZpZXcpOwogCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBjYWxsT25N
YWluVGhyZWFkKF57CiAgICAgICAgIGlmICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIV9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5KTsKICAgICAg
ICAgICAgIF9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5ID0gYWRvcHROUyhbW19XZWJD
b3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpz
ZWxmXSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudElPUzo6cnVuT3BlblBhbmVsKEZyCiAgICAgfTsKIAogICAgIGlmIChXZWJUaHJlYWRJc0N1
cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICBbW3dlYlZp
ZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkgcnVuT3BlblBh
bmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjpsaXN0ZW5lciBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRJT1MubW0JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRT
ZXRTZWFyY2hpbmcKIHsKICAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IFttX2luc3BlY3Rl
ZFdlYlZpZXcgaW5zcGVjdG9yXTsKICAgICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9IGVu
YWJsZWQgPyBXZWJJbnNwZWN0b3JEaWRTdGFydFNlYXJjaGluZ0Zvck5vZGUgOiBXZWJJbnNwZWN0
b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIGNhbGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpu
b3RpZmljYXRpb25OYW1lIG9iamVjdDppbnNwZWN0b3JdOwogICAgIH0pOwogfQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTctMTEtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXBsYWNlIGRpc3BhdGNoX2FzeW5jIHdpdGggY2FsbE9uTWFpblRocmVhZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL25w
YXBpLm1tOgorICAgICAgICAoTlBOX1BsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbik6CisgICAgICAgICogV2ViVmlldy9X
ZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlcGFyZTpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgd2lsbEVu
dGVyQmFja2dyb3VuZFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dlYlNh
ZmVBc3luY0ZvcndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKwogMjAxNy0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW9yZSBpczw+IGFuZCBkb3duY2FzdDw+LCBsZXNzIHN0YXRpY19jYXN0PD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvbnBhcGkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9ucGFwaS5tbQkocmV2aXNpb24gMjI0NzU3
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9ucGFwaS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblZpZXcu
aCIKICNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNzQsNyArMTc1LDcgQEAgdm9pZCBO
UE5fUGx1Z2luVGhyZWFkQXN5bmNDYWxsKE5QUCBpbnN0YQogewogICAgIFdlYk5ldHNjYXBlUGx1
Z2luVmlldyAqcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JJbnN0YW5jZShpbnN0YW5jZSk7CiAK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIGNh
bGxPbk1haW5UaHJlYWQoXnsKICAgICAgICAgaWYgKCFwbHVnaW5WaWV3IHx8ICFwbHVnaW5WaWV3
LT5wbHVnaW4pIHsKICAgICAgICAgICAgIC8vIFRoZSBwbHVnLWluIGhhcyBhbHJlYWR5IGJlZW4g
ZGVzdHJveWVkLgogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQko
cmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAwLDcgKzEyMDAsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENhbmRpZGF0ZXNGCiAgICAgTlNUZXh0Q2hl
Y2tpbmdUeXBlcyBjaGVja2luZ1R5cGVzID0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBO
U1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b247CiAgICAgYXV0byB3ZWFrRWRpdG9yID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRy
KCp0aGlzKTsKICAgICBtX2xhc3RDYW5kaWRhdGVSZXF1ZXN0U2VxdWVuY2VOdW1iZXIgPSBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxl
Y3RlZFJhbmdlOm1fcmFuZ2VGb3JDYW5kaWRhdGVzIGluU3RyaW5nOm1fcGFyYWdyYXBoQ29udGV4
dEZvckNhbmRpZGF0ZVJlcXVlc3QuZ2V0KCkgdHlwZXM6Y2hlY2tpbmdUeXBlcyBvcHRpb25zOm5p
bCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgY29tcGxl
dGlvbkhhbmRsZXI6W3dlYWtFZGl0b3JdKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJh
eTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcykgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKF57CiAgICAgICAgICAgICBpZiAoIXdlYWtFZGl0b3IpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgd2Vha0VkaXRvci0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRl
cyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyLm1tCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJl
CiAKICAgICBpZiAoIVtfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBhbmltYXRpb25Db250cm9s
bGVyXSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRo
ZSBkaXNwYXRjaF9hc3luYyB3aGVuIHJkYXI6Ly9wcm9ibGVtLzE5NTAyOTI3IGlzIHJlc29sdmVk
LgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKF57CiAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsSW1t
ZWRpYXRlQWN0aW9uXTsKICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzcxLDcgKzE3NzEsNyBAQCArICh2b2lkKXdpbGxFbnRlckJhY2tncm91bmRXaXRoQ29tcGxldGlv
CiB7CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIFtXZWJWaWV3IF9yZWxlYXNlTWVtb3J5
Tm93XTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
aGFuZGxlcik7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoaGFuZGxlcik7CiAgICAgfSk7CiB9
CiAKQEAgLTUzMzMsNyArNTMzMyw3IEBAIC0gKHZvaWQpZm9yd2FyZEludm9jYXRpb246KE5TSW52
b2NhdGlvbiAKICAgICBfV2ViU2FmZUZvcndhcmRlciAqZm9yd2FyZGVyID0gX2ZvcndhcmRlcjsK
ICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKICAgICAgICAgW2ludm9jYXRpb24gcmV0
YWluQXJndW1lbnRzXTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCheewogICAgICAgICAgICAgW2Zv
cndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjppbnZvY2F0aW9uXTsKICAgICAgICAgfSk7CiAgICAg
fSBlbHNlCkBAIC02NzE4LDcgKzY3MTgsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9u
OihpZCA8TlNEcmFnCiAgICAgICAgICAgICAgICAgaWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtzZWxmLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihm
aWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGFdIHsKKyAgICAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5n
PihmaWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGFdIHsKICAgICAg
ICAgICAgICAgICAgICAgZmlsZU5hbWVzLT5hcHBlbmQocGF0aC5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChmaWxlTmFtZXMtPnNpemUoKSA9PSBmaWxlQ291bnQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRyYWdEYXRhLT5zZXRGaWxlTmFtZXMoKmZpbGVOYW1lcyk7CkBAIC04
MDkyLDcgKzgwOTIsNyBAQCAtICh2b2lkKXNldEVkaXRhYmxlOihCT09MKWZsYWcKICAgICAgICAg
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoIWZsYWcp
OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW10gewogICAgICAgICAgICAgICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSBfcHJlZmxpZ2h0Q2hvc2VuU3BlbGxTZXJ2ZXJdOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="346052"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>